Android 计算控件尺寸

来源:互联网 发布:音频提取软件手机软件 编辑:程序博客网 时间:2024/04/30 03:23

@Override 

  public void onCreate(Bundle savedInstanceState) { 

      super.onCreate(savedInstanceState); 

      setContentView(R.layout.main); 

      final ImageView imageView = (ImageView) findViewById(R.id.imageview);       

      int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); 

      int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); 

      imageView.measure(w, h); 

      int height =imageView.getMeasuredHeight();

      int width =imageView.getMeasuredWidth();

      textView.append("\n"+height+","+width);

      System.out.println("执行完毕.."+System.currentTimeMillis()); 

  }

//------------------------------------------------方法一 

int w = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); 

int h = View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); 

imageView.measure(w, h); 

int height =imageView.getMeasuredHeight(); 

int width =imageView.getMeasuredWidth(); 

textView.append("\n"+height+","+width); 

//-----------------------------------------------方法二 

ViewTreeObserver vto = imageView.getViewTreeObserver(); 

vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { 

    public boolean onPreDraw() { 

        int height = imageView.getMeasuredHeight(); 

        int width = imageView.getMeasuredWidth(); 

        textView.append("\n"+height+","+width); 

        return true; 

    } 

}); 

//-----------------------------------------------方法三    

ViewTreeObserver vto2 = imageView.getViewTreeObserver();   

vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { 

    @Override   

    public void onGlobalLayout() { 

        imageView.getViewTreeObserver().removeGlobalOnLayoutListener(this);   

        textView.append("\n\n"+imageView.getHeight()+","+imageView.getWidth()); 

    }   

});    


0 0