我用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 –