Android基础--View的生命周期

2016年3月30日 偶尔的坚持比科学更重要

最近常常用到自定义的View和ViewGroup,且发现在自定义时总是出现一些莫名奇妙的问题,其大部分的原因可以归咎于View的生命周期。

View相当于一个Panel,所有的UI组件都继承了View。为了了解他,让我们先看看他的一些方法。

View常被重写的方法:

(这里就任性的略去了focus、trackball这些没用的东西了)

void onFinishInflate():当应用程序通过XML布局文件加载该组件从而进行构建界面时,该方法将会被调用

onMeasure(int widthMeasureSpec, int heightMeasureSpec):用来检测View组件和其子组件的大小,其参数为为该View设置的长和宽

onLayout(boolean changed, int left, int top, int right, int bottom) :用于分配view在父控件的位置,即给view布局

onSizeChanged(int w, int h, int oldw, int oldh):当该组件的大小被改变时,调用该方法

onDraw(Canvas canvas):用于绘制组件

onKeyDown(int keyCode, KeyEvent event):当有按键被按下时出发该方法(可以监听返回键,home键)

onKeyUp(int keyCode, KeyEvent event):当有按键被松开时出发该方法

onTouchEvent(MotionEvent event):当发生触摸屏事件时触发该方法

onAttachedToWindow():当将这个组件放入某个窗口时调用该方法

onDetachedFromWindow():当将这个组件从某个窗口分离时调用这个方法

onWindowVisibilityChanged(int visibility):当包含该组件的窗口的可见性发生改变时调用该方法

onVisibilityChanged(View changedView, int visibility):当该view的是否可见发生变化时,调用该方法

onWindowVisibilityChanged和onVisibilityChanged中visibility参数的三个值:
visible 0 代表view可见,是默认值
invisible 4 代表组件不可见,但保留控件的布局位置
gone 8 代表组件隐藏,不保留控件的布局位置,如果组建的visibility属性为gone,则代表该组件生命周期结束

测试View的生命周期

简单的介绍了这些方法之后,让我们再来看这些这些方法什么时候会被调用。

下面是我的测试代码,还是有必要贴出来的:

public class MyView extends View {
    public MyView(Context context) {
        super(context);
        Log.i("infoview", "==========MyView(context)");
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        Log.i("infoview", "MyView(context,attrs)" + attrs.getAttributeName(0)
                + "===" + attrs.getAttributeName(2));
    }

    public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    &#
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值