Android 自定义View

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 自定义View相关的知识,希望对你有一定的参考价值。

参考技术A 1.直接在XML文件中定义的 ==》布局文件。
2.在XML文件中通过style这个属性定义的 ==》在布局中使用自定义属性样式。
3.通过defStyleAttr定义的 ==》在View的构造方法中使用自定义属性样式。
4.通过defStyleRes定义的 ==》在View的构造方法中使用自定义样式。
5.直接在当然工程的theme主题下定义的 ==》androidManifest.xml中设置。

1、onMeasure 测量自身,自定义View时重写,定义控件的宽高,常在自定义的View中使用
2、Measure 测量自身,方法不可重写,内部调用onMeasure方法,常在自定义的ViewGroup中使用
3、measureChild 测量某个子View,内部调用Measure方法,常在自定义的ViewGroup中使用
4、measureChildren 测量所有子View,内部调用measureChild方法,常在自定义的ViewGroup中使用

在自定义View的开发中,我们重写测量方法,方法里的传参(widthMeasureSpec,heightMeasureSpec)都是由父类提供的,在自定义ViewGroup的开发中,我们可以根据当前布局的测量参数,为布局内的子控件创建新的测量参数,来控制子View在布局的显示大小

1、layout:指定View新的显示位置,用法:view.layout(left,top,right,bottom);
2、onLayout:设置View的显示位置,用法:重写该方法,定义View的显示规则
3、requestLayout:强制View重新布局,用法:view.requestLayout();

onFinishInflate -> onAttachedToWindow -> onMeasure -> onSizeChanged -> onLayout -> onDraw -> onDetachedFromWindow

Android的事件分发可以理解为向下分发,向上回传,类似V字型,V字的左边是事件进行向下分发,如果途中没有进行事件的分发拦截,则事件传递到最底层的View,即是最接近屏幕的View。V字的右边是事件的回传,如果中途没有进行事件的消费,则事件传递到最顶层的View,直至消失。

android自定义的dialog怎么设置view

自定义的dialog例子很多,通过measure方法进行绘制 参考技术A View view = LayoutInflater.from(this).inflate(resource, null);
dialog.setView(view);

以上是关于Android 自定义View的主要内容,如果未能解决你的问题,请参考以下文章

Android自定义View

Android 自定义View

android自定义的dialog怎么设置view

Android 自定义view之悬浮动画

Android 自定义View 进阶

android自定义的dialog怎么设置view