Android自定义控件
来源:互联网 发布:流星网络电视 安卓 编辑:程序博客网 时间:2024/06/03 19:20
今天我们来讲一下 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>
使用:
<rotate xmlns: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="0" /> <enum name="vertical" value="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自定义控件] Android自定义控件
- Android自定义控件] Android自定义控件
- [Android自定义控件] Android自定义控件
- [Android自定义控件] Android自定义控件
- [Android自定义控件] Android自定义控件
- [Android自定义控件] Android自定义控件
- [Android自定义控件] Android自定义控件
- Android 自定义控件 单页翻书控件
- android虚线控件---自定义控件
- android自定义控件实例 --控件
- Android自定义控件--组合控件
- android 控件 自定义组合控件
- 【android自定义控件】ProgressBar自定义
- Android自定义控件 自定义属性
- Android自定义控件 -- 自定义View
- Android自定义控件 -- 自定义ViewGroup
- Android 自定义控件 自定义标题栏
- Android 自定义控件-自定义进度条。
- Linux-0.11 笔记
- 百度面试题
- PAT (Basic Level) Practise (中文)1015. 德才论 (25)
- iOS8使用TouchID
- android 设置头像以及裁剪功能
- Android自定义控件
- CSS 定位属性position用法
- 为什么基类的析构函数是虚函数
- android和iOS平台的崩溃捕获和收集
- 最新版Eclipse IDE for C/C++以及MinGW的安装与配置详解
- Leetcode: Pascal's Triangle
- 用顺序表解决josephus问题的算法
- sigsetjmp用法
- Tcpdump的详细用法