搜索

首页  >  问答  >  正文

android - 自定义View继承ImageView,需要创建一个bitmap,如何获取width和height?

PHPzPHPz2773 天前719

全部回复(3)我来回复

  • PHP中文网

    PHP中文网2017-04-17 17:04:54

    由于onDraw()会频繁调用,所以不建议在该方法里新建对象实例。

    你的困扰应该是不知道怎么正确获取View的尺寸吧,获取到的width和height总是为0。

    我说一个最简单的方法,权当抛砖引玉吧

    使用view.post()

    public class CustomView extends View {
        private Bitmap mBitmap;
    
        public CustomView(Context context) {
            super(context)
            
            ...
            
            this.post(new Runnable() {
                @Override
                public void run() {
                    mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
                }
            });
        }
    }

    回复
    0
  • 高洛峰

    高洛峰2017-04-17 17:04:54

    可以用View.onLayout或ViewTreeObserver

    回复
    0
  • 怪我咯

    怪我咯2017-04-17 17:04:54

    你既然是继承ImageView 我想你自然要使用到ImageView的setImageBitmap()、setImageDrawable等方法,所以你可以在这些方法中获取width与height或者直接获取bitmap

    回复
    0
  • 取消回复