我用imageView来保存位图,e,g当前位图有100 x 100像素。使用下面的xml文件。imageView中的位图高度和宽度
<ImageView
android:id="@+id/pimage"
android:layout_height="wrap_content"
android:layout_width="wrap_content"/>
但随着imageView xml文件的变化,位图的高度和宽度也发生变化。
<ImageView
android:id="@+id/image"
android:layout_height="400dp"
android:layout_width="match_parent"
android:layout_alignRight="@+id/colorbar"/>
如何找到新的位图高度和宽度?我需要使用高度和宽度作为全局参数,我可以在同一个类中使用其他函数。
final int[] imageWidth = new int[1];
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@SuppressWarnings("deprecation")
@Override
public void onGlobalLayout() {
//get Image Width and height here
imageWidth[0] = image.getWidth();
int imageHeight = image.getHeight();
//Then remove layoutChange Listener
ViewTreeObserver vto = image.getViewTreeObserver();
Log.d("Height12", Integer.toString(imageWidth[0]));
//phaseimage.getViewTreeObserver().removeOnPreDrawListener(this);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
vto.removeOnGlobalLayoutListener(this);
} else {
vto.removeGlobalOnLayoutListener(this);
}
}
});
Log.d("Height12", Integer.toString(imageWidth[0]));
里面的功能是728以外的0
你需要挂接到触发之后的ImageView的准备显示 – Bhargav
您是否尝试过我的回答@Sulabh蒂瓦里 –
等一下我现在正在测试它,但是我用viewTreeObserver之前,但问题是事件该初始值始终为0 –