studio中在style文件中使用自定义属性1、
首先在android
studio中点击res-->values然后点击style
2、
点击之后发现里面已经有自定好的代码了,这些代码都是提供给
系统李稿调用
的
3、要定义明扰拍style需要为style创建一个名字和属性,如下图
4、最后在控件中使用如激羡下代码即可完成style的全部步骤
View的构造函数:共有4个
系统自带的View可以在xml中棚含配置属性,对于写的好的自定义View同样可以在xml中配置属性,为了使自定义的View的属性可以在xml中配置,需要以下4个步骤:
一定要记住:无论是measure过程、layout过程还是draw过程,永远都是从View树的根节点开始测量或好和旦计算(即从树的顶端开始),一层一层、一个分支一个分支地进行(即树形递归),最终计算整个View树中各个View,最终确定整个View树的相关属性。
Android的坐标系定义为:
View的位置由4个顶点决定的 4个顶点的位置描述分别由4个值决定:
View的位置是通过view.getxxx()函数进行获取:(以Top为例)
与MotionEvent中 get()和getRaw()的区别
MarginLayoutParams是和外间距有关的。事实也确实如此,和LayoutParams相比,MarginLayoutParams只是增加了对上下左右外间距的支持。实际上大部分LayoutParams的实现类都是继承自MarginLayoutParams,因为基本所有的父容器都是支持子View设置外间距的。
1. 创建自定义属性
2. 继承MarginLayout
3. 重写ViewGroup中几个与LayoutParams相关的方法
在为View设置LayoutParams的时候需要根据它的父容器选择对应的LayoutParams,否则结果可能与预期不一致,这里简单罗列一些常见的LayoutParams子类:
测量规格,封装了父容器对 view 的布局上的限制,内部提供了宽高的信息( SpecMode 、 SpecSize ),SpecSize是指在某种SpecMode下的参考尺寸,其中SpecMode 有如下三种:
针对上表,这里再做一下具体的说明
一般getIntrinsicWidth/Height能获得内部宽/高 图片Drawable其内部宽高就是图
片的宽高 颜色Drawable没有内部宽高的概念 内部宽高不友扰等同于它的大小,一般
Drawable没有大小概念(作为View背景时,会被拉伸至View的大小)
自定义View一共分为两大类,具体如下图:
对于自定义View的类型介绍及使用场景如下图:
在使用自定义View时有很纤弊橡多注意点(坑),希望大家要非常留意:
View的内部本身提供了post系列的方法,完全可以替代Handler的作用,使用起来更加方便、直接。
主要针对View中含有线程或动画的情况: 当View退出或不可见时,记得及时停止该View包含的线程和动画,否则会造成内存泄露问题 。
当View带有滑毁旁动嵌套情况时,必须要处理好滑动冲突,否则会严重影响View的显示效果。
接下来,我将用自定义View中最常用的 继承View 来说明自定义View的具体应用和需要注意的点
在下面的例子中,我将讲解:
下面我将逐个步骤进行说明:
步骤1:创建自定义View类(继承View类)
特别注意:
步骤2:在布局文件中添加自定义View类的组件及显示
至此,一个基本的自定义View已经实现了,运行效果如下图。
接下来继续看自定义View关于属性自定义的问题:
先来看wrap_content &match_parent属性的区别
如果不手动设置支持 wrap_content 属性,那么 wrap_content 属性是不会生效(显示效果同 match_parent )
padding 属性:用于设置控件内容相对控件边缘的边距;
如果不手动设置支持padding属性,那么padding属性在自定义View中是不会生效的。
绘制时考虑传入的padding属性值(四个方向)。
除了常见的以android:开头的系统属性(如下所示),很多场景下自定义View还需要系统所没有的属性,即自定义属性。
实现卜没自定义属性的步骤如下:
下面我将对每个步骤进行具体介绍
对于自定义属性类型 &格式如下:
至此,一个较为规范的自定义View已经完成了。
Carson_Ho的github: 自定义View的具体应用
不定期分享关于 安卓开发 的干货,追求 短、平、快 ,但 却不缺深度 。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)