안드로이드의 너비와 높이를 얻는 방법.위젯이미지 보기?
╔══════════════════════════════════════════════╗ ^
║ ImageView ╔══════════════╗ ║ |
║ ║ ║ ║ |
║ ║ Actual image ║ ║ |
║ ║ ║ ║ |60px height of ImageView
║ ║ ║ ║ |
║ ║ ║ ║ |
║ ╚══════════════╝ ║ |
╚══════════════════════════════════════════════╝
<------------------------------------------------>
90px width of ImageView
기본 높이와 너비가 있는 이미지 보기가 있으며, 이미지는 DB에 저장되며 이미지 보기 높이에 따라 이미지 크기를 조정하려고 합니다.높이와 너비를 변경할 때마다 코드로 변경해야 하기 때문에 기본값을 제공하지 않기를 원합니다.
ImageView의 높이와 너비를 가져오려고 하는데 두 경우 모두 0이 반환됩니다.
int height = ((ImageView) v.findViewById(R.id.img_ItemView)).getHeight();
기본 높이와 너비를 가지고 있더라도 0을 반환합니다.
int finalHeight, finalWidth;
final ImageView iv = (ImageView)findViewById(R.id.scaled_image);
final TextView tv = (TextView)findViewById(R.id.size_label);
ViewTreeObserver vto = iv.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
iv.getViewTreeObserver().removeOnPreDrawListener(this);
finalHeight = iv.getMeasuredHeight();
finalWidth = iv.getMeasuredWidth();
tv.setText("Height: " + finalHeight + " Width: " + finalWidth);
return true;
}
});
그런 다음 onPreDraw() 메서드 내에서 영상 스케일링 작업을 추가할 수 있습니다.
그림을 그릴 수 있어 이미지 폭과 높이를 얻을 수 있었습니다.
int width = imgView.getDrawable().getIntrinsicWidth();
int height = imgView.getDrawable().getIntrinsicHeight();
저는 방금 이 속성을 설정했고 지금은 안드로이드 OS가 모든 것을 처리하고 있습니다.
Android:viewBounds 조정="true"
ImageView :D를 삽입한 layout.xml에서 이 값을 사용합니다.
UI 스레드에 게시하는 것이 저에게 적합합니다.
final ImageView iv = (ImageView)findViewById(R.id.scaled_image);
iv.post(new Runnable() {
@Override
public void run() {
int width = iv.getMeasuredWidth();
int height = iv.getMeasuredHeight();
}
});
ImageView의 치수가 0인 이유는 조회할 때 뷰가 레이아웃 및 측정 단계를 수행하지 않았기 때문입니다.레이아웃에서 보기가 "동작"하는 방법만 알려줬을 뿐 각 보기를 배치할 위치는 계산하지 않았습니다.
이미지 보기에 제공할 크기는 어떻게 결정합니까?기본적으로 구현된 확장 옵션 중 하나만 사용할 수는 없습니까?
xml 파일:
<ImageView android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/image"
android:scaleType="fitXY"
android:adjustViewBounds="true"/>
Java 파일:
ImageView imageView = (ImageView)findViewById(R.id.imageView);
int width = imageView.getDrawable().getIntrinsicWidth();
int height = imageView.getDrawable().getIntrinsicHeight();
제 생각에 당신은 안드로이드 운영체제가 당신을 위해 이것을 처리하도록 할 수 있을 것 같습니다.ImageView의 축척 유형을 다음으로 설정합니다.fitXY
표시되는 이미지의 크기는 보기의 현재 크기에 맞게 조정됩니다.
<ImageView
android:layout_width="90px"
android:layout_height="60px"
android:scaleType="fitXY" />
가장 간단한 방법은 활동의 WindowsFocusChanged 메서드에서 ImageView의 너비와 높이를 가져오는 것입니다.
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
height = mImageView.getHeight();
width = mImageView.getWidth();
}
여러 개의 영상을 동적으로 생성한 경우 이 영상을 사용해 보십시오.
이미지 배열 초기화
private ImageView myImages[] = new ImageView[your_array_length];
프로그래밍 방식으로 생성하여 상위 보기에 추가
for (int i = 0; i < your_array_length; i++) {
myImages[i] = new ImageView(this);
myImages[i].setId(i + 1);
myImages[i].setBackgroundResource(your_array[i]);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
frontWidth[i], frontHeight[i]);
((MarginLayoutParams) params).setMargins(frontX_axis[i],
frontY_axis[i], 0, 0);
myImages[i].setAdjustViewBounds(true);
myImages[i].setLayoutParams(params);
if (getIntent() != null && i != your_array,length) {
final int j = i;
myImages[j].getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
myImages[j].getViewTreeObserver().removeOnPreDrawListener(this);
finalHeight = myImages[j].getMeasuredHeight();
finalWidth = myImages[j].getMeasuredWidth();
your_textview.setText("Height: " + finalHeight + " Width: " + finalWidth);
return true;
}
});
}
your_parent_layout.addView(myImages[i], params);
}
바로 그거야.해피 코딩.
내 친구는 이것에 의해 당신은 db에 저장된 이미지의 높이를 얻지 못하고 있습니다.그러나 보기 높이가 표시됩니다. 이미지의 높이를 얻으려면 db,s 이미지에서 비트맵을 만들어야 합니다.그리고 이미지 보기의 높이와 너비를 가져올 수 있습니다.
언급URL : https://stackoverflow.com/questions/4680499/how-to-get-the-width-and-height-of-an-android-widget-imageview
'programing' 카테고리의 다른 글
null이 아닌 최대 열 (0) | 2023.08.06 |
---|---|
페이지에 세로 스크롤 막대가 있는지 검색하시겠습니까? (0) | 2023.08.06 |
MySQL group_concat에 해당하는 Presto (0) | 2023.08.06 |
'X-CSRF-TOKEN'을 전송하도록 스프링 보안을 구성하는 방법은 무엇입니까? (0) | 2023.08.06 |
공통(빌드) 시스템에서 C/C++ 식별자의 최대 길이는 얼마입니까? (0) | 2023.08.06 |