//方法一、给控件注册OnPreDrawListener事件
//注册一个回调函数,当一个视图树将要绘制时调用这个回调函数。
// *参数 listener 将要被添加的回调函数
// *异常 IllegalStateException 如果isAlive() 返回false
ViewTreeObserver vto = imageView.getViewTreeObserver();
vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
int height = imageView.getMeasuredHeight();
int width = imageView.getMeasuredWidth(); textView.append("\n"+height+","+width);
//移除注册的监控
imageView.getViewTreeObserver().removeOnPreDrawListener(this);
return true;
} });
//方法二、给控件注册OnGlobalLayoutListener事件
//注册一个回调函数,当在一个视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变时调用//这个回调函数。
// *参数 listener 将要被添加的回调函数
// *异常 IllegalStateException 如果isAlive() 返回false
ViewTreeObserver vto2 = imageView.getViewTreeObserver();
vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
//移除注册的监控
imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth());
} });