android中自定义的控件,使用自定义属性attrs.xml
自定义控件,很多时间需要用到自定义的属性
首先在value文件夹中建立attrs.xml文件
添加内容如下
<?xml version="1.0" encoding="utf-8"?>
上面定义了一个自定义的属性,名称为MyGifView
其中包括了一个选项 giv_drawable, format类型为reference
在布局文件中,使用自定义属性
注意
xmlns:android_custom="http://schemas.android.com/apk/res/com.org.dengzh"
这一句, 最后的com.org.dengzh是你这个项目的包名
前面的xmlns:xxxx_xxx是你自己定义的前缀时,使用时 使用 前缀:属性名="值"的形式
如
android_custom:gif_drawable="@drawable/test"
这里我赋值给属性gif_drawable一张名为test的资源图片
在自定义中,取得赋值的属性的值
下面是一个自定义的可以显示Gif图片的View
package com.org.dengzh;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Movie;import android.util.AttributeSet;import android.view.View;public class MyGifView extends View {private long movieStart;private Movie movie;private int givDrawable;public MyGifView(Context context, AttributeSet attrs) {super(context, attrs);TypedArray mTypedArray = context.obtainStyledAttributes(attrs,R.styleable.MyGifView);// 获取自定义属性和默认值givDrawable = mTypedArray.getResourceId(R.styleable.MyGifView_gif_drawable, R.drawable.test);movie = Movie.decodeStream(getResources().openRawResource(givDrawable));}@Overrideprotected void onDraw(Canvas canvas) {long curTime = android.os.SystemClock.uptimeMillis();if (movieStart == 0) {movieStart = curTime;}if (movie != null) {int duraction = movie.duration();int relTime = (int) ((curTime - movieStart) % duraction);movie.setTime(relTime);movie.draw(canvas, 0, 0);invalidate();}// super.onDraw(canvas);}}
TypedArray mTypedArray = context.obtainStyledAttributes(attrs,R.styleable.MyGifView);// 获取自定义属性和默认值givDrawable = mTypedArray.getResourceId(R.styleable.MyGifView_gif_drawable, R.drawable.test);
这两行,首先取得名为MyGifView的属性数组 第二行,取得数组中的名为MyGifView_gif_drawable的属性的值,getResourceId的第二个参数是一个默认值,如果用户没有给giv_drawable赋值,那么就用默认值代替
最后附上format类型如下几种
1. reference:参考某一资源ID。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip"
android:layout_height = "42dip"
android:background = "@drawable/图片ID"
/>
2. color:颜色值。
(1)属性定义:
(2)属性使用:
android:layout_width = "42dip"
android:layout_height = "42dip"
android:textColor = "#00FF00"
/>
3. boolean:布尔值。
(1)属性定义:
4. dimension:尺寸值。
(1)属性定义:
(2)属性使用:
更多相关文章
- 自定义TextView实现跑马灯
- Android高德地图开发(2)——地图显示+自定义控件
- Android(安卓)studio 任意修改项目包名(含com)
- Android(安卓)ApiDemos示例解析(21):App->Device Admin
- Android7.1启动系统App必须配置加密
- Android(安卓)自定义View——拖动选择时间控件
- Android(安卓)实现让ViewPager禁止滑动
- Android(安卓)4.0 系统语言预设问题
- Android自定义Dialog实现通用圆角对话框