View

onDraw方法中:

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Log.d(TAG, "onDraw: ");
        mHandler.sendEmptyMessage(0x1234);
        Log.d(TAG, "onDraw: 结束");
    }
    private Handler mHandler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            if (msg.what == 0x1234) {
                invalidate();
            }
        }
    };

View只有在初始绘画时会调用一次onDraw进行绘画,所以如果需要一直调用onDraw函数,需要使用invalidate()来对View进行重新绘画。

 

初始化完毕的监听器,一些操作可能要用到,比如说获取控件的高度,在初始化完毕之前获取到时0

tv_travel.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                // TODO Auto-generated method stubint[] position = new int[2];
                tv_travel.getLocationOnScreen(position);
            }
        });

 

posted on 2019-06-17 11:08  赵子隆  阅读(135)  评论(0编辑  收藏  举报

导航