提兵百万西湖上,立马吴山第一峰!这篇文章主要讲述Android自己定义控件相关的知识,希望能为你提供帮助。
今天我们来讲一下 android中自己定义控件的介绍,在Android中, 我们一般写xml都是用的是单个的控件来完毕的 ,但是。往往在一些项目中。单个控件有时是满足不了的。故此我们能够自己定义控件 ,用自己定义控件的优点是
一方面是更加灵活,还有一方面在大数据量的情况下自己定义控件的效率比写布局文件更高 。其它地方要用此控件 仅仅须要引用控件就能够了。
以下来写一个自己定义控件的和它须要注意的地方:
1.建立一个xml文件 写你想要自己定义的布局
2.在res/values 创建一个attrs.xml
如以下的结构
< resources> < declare-styleable name="myshow"> < attr name="tvTitle" format="string"/> < attr name="titleMinLength" format="integer"/> < attr name="tvHint" format="string"/> < attr name="title" format="color"/> < attr name="tvValue" format="string"/> < /declare-styleable> < /resources>
具体介绍各个attr标签中的format属性的类型和多指定类型
《1》"reference" //引用 參考某一资源ID
< declare-styleable name = "名称"> < attr name = "background" format = "reference" /> < /declare-styleable>
使用:
< ImageView android:layout_width = "42dp" android:layout_height = "42dp" android:background = "@drawable/图片ID" />
《2》"color" //颜色
< declare-styleable name = "名称"> < attr name = "textcolor" format = "color" /> < /declare-styleable>
使用:
< TextView android:layout_width = "42dp" android:layout_height = "42dp" android:textcolor = "#ffffff" />
《3》 "boolean" //布尔值
< declare-styleable name = "名称"> < attr name = "focusable" format = "boolean" /> < /declare-styleable>
使用:
< Button android:layout_width = "42dp" android:layout_height = "42dp" android:focusable = "true" />
《4》"dimension" //尺寸值
< declare-styleable name = "名称"> < attr name = "layout_width" format = "dimension" /> < /declare-styleable>
使用:
< Button android:layout_width = "42dp" android:layout_height = "42dp" />
《5》"float" //浮点值
< declare-styleable name = "AlphaAnimation"> < attr name = "fromAlpha" format = "float" /> < attr name = "toAlpha" format = "float" /> < /declare-styleable>
使用:
< alpha android:fromAlpha = "1.0" android:toAlpha = "0.5" />
《6》"integer" //整型值
< declare-styleable name = "AnimatedRotateDrawable"> < attr name = "visible" /> < attr name = "frameDuration" format="integer" /> < attr name = "framesCount" format="integer" /> < attr name = "pivotX" /> < attr name = "pivotY" /> < attr name = "drawable" /> < /declare-styleable>
使用:
< animated-rotate xmlns:android = "http://schemas.android.com/apk/res/android" android:drawable = "@drawable/图片ID" android:pivotX = "50%" android:pivotY = "50%" android:framesCount = "12" android:frameDuration = "100" />
《7》"string" //字符串
< declare-styleable name = "AlphaAnimation"> < attr name = "strName format = "string" /> < attr name = "strTitle" format = "string" /> < /declare-styleable>
使用:
< com.google.android.maps.MapView android:layout_width = "fill_parent" android:layout_height = "fill_parent" android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO" />
《8》"fraction" //百分数,比方200%
< declare-styleable name="RotateDrawable"> < attr name = "visible" /> < attr name = "fromDegrees" format = "float" /> < attr name = "toDegrees" format = "float" /> < attr name = "pivotX" format = "fraction" /> < attr name = "pivotY" format = "fraction" /> < attr name = "drawable" /> < /declare-styleable>
使用:
< rotatexmlns:android = "http://schemas.android.com/apk/res/android" android:interpolator = "@anim/动画ID" android:fromDegrees = "0" android:toDegrees = "360" android:pivotX = "200%" android:pivotY = "300%" android:duration = "5000" android:repeatMode = "restart" android:repeatCount = "infinite" />
《9》 "enum" //枚举值
< declare-styleable name="名称"> < attr name="orientation"> < enum name="horizontal" value="https://www.songbingjia.com/android/0" /> < enum name="vertical" value="https://www.songbingjia.com/android/1" /> < /attr> < /declare-styleable>
使用:
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" android:orientation = "vertical\horizontal" android:layout_width = "fill_parent" android:layout_height = "fill_parent" > < /LinearLayout>
《10》
注意:属性定义时能够指定多个类型值
< declare-styleable name = "名称"> < attr name = "background" format = "reference|color" /> < /declare-styleable>
使用:
< ImageView android:layout_width = "42dip" android:layout_height = "42dip" android:background = "@drawable/图片ID|#ffffff" />
3.定义一个自己定义的类 继承一个View 继承哪一个View 依据你实际情况来决定
文章图片
文章图片
4.引用自己定义的类到你须要的xml中
< 1> 增加前 必须引用他当前的位置路径 如:
xmlns:fx="http://schemas.android.com/apk/res/fx.com.bitmapsolution"
< 2> 引用详细的控件和获取控件中的某个属性
< fx.com.bitmapsolution.MyView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
fx:tvTitle="@string/title3"
fx:titleMinLength="4"
android:layout_marginTop="5dp"
/>
到此 即完毕了一个较简单自己定义控件
文章图片
复杂点自己定义控件 有时间再写一个 哈哈哈~~
文章图片
文章图片
【Android自己定义控件】
推荐阅读
- QT Flappy_bird
- Android系统优化
- 08_Android中的SimpleAdapter的使用
- Android进程间通信之内部类作为事件监听器
- android自己定义TextView
- 百度地图SDK调试SDKInitializer.initialize(getApplicationContext())错误
- Android调试的Log.d()没有输出
- Android的cookie的接收和发送
- Android中关于JNI 的学习在JNI层訪问Java端对象