自定义控件,很多时间需要用到自定义的属性

首先在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)属性使用: 
             
                    android:layout_width = "42dip" 
                    android:layout_height = "42dip" 
                    /> 

5. float:浮点值。 

    (1)属性定义: 

             

                    
                    

             

    (2)属性使用: 
             
                   android:fromAlpha = "1.0" 
                   android:toAlpha = "0.7" 
                   /> 

6. integer:整型值。 
    (1)属性定义: 
             
                    
                    
                    
                    
                    
                    
             
    (2)属性使用: 
             
                   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:字符串。 
    (1)属性定义: 
             
                    
             
    (2)属性使用: 
             
                    android:layout_width = "fill_parent" 
                    android:layout_height = "fill_parent" 
                    android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g" 
                    /> 

8. fraction:百分数。 
    (1)属性定义: 
             
                    
                    
                    
                    
                    
                    
             
    (2)属性使用: 
             
                   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:枚举值。 

    (1)属性定义: 

             
                    
                           
                           
                               

             

    (2)属性使用: 

             

                    xmlns:android = "http://schemas.android.com/apk/res/android" 
                    android:orientation = "vertical" 
                    android:layout_width = "fill_parent" 
                    android:layout_height = "fill_parent" 
                    > 
             

10. flag:位或运算。 

     (1)属性定义: 

              
                     
                             
                             
                             
                             
                             
                             
                             
                             
                             
                             
                              

              

     (2)属性使用: 

             

                   android:name = ".StyleAndThemeActivity" 
                   android:label = "@string/app_name" 
                   android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden"> 
                    
                           
                           
                    
              

     注意: 
     属性定义时可以指定多种类型值。 
    (1)属性定义: 
             
                    
             
    (2)属性使用: 
              
                     android:layout_width = "42dip" 
                     android:layout_height = "42dip" 
                     android:background = "@drawable/图片ID|#00FF00" 

                     />

更多相关文章

  1. 自定义TextView实现跑马灯
  2. Android高德地图开发(2)——地图显示+自定义控件
  3. Android(安卓)studio 任意修改项目包名(含com)
  4. Android(安卓)ApiDemos示例解析(21):App->Device Admin
  5. Android7.1启动系统App必须配置加密
  6. Android(安卓)自定义View——拖动选择时间控件
  7. Android(安卓)实现让ViewPager禁止滑动
  8. Android(安卓)4.0 系统语言预设问题
  9. Android自定义Dialog实现通用圆角对话框

随机推荐

  1. Android(安卓)远程回调
  2. Eclipse,到了说再见的时候了——Android(
  3. Many PC buyers are still untapped pote
  4. 高德Demo,网上找了很多资料都不适合,自己研
  5. android 调用系统计算器 实例
  6. android设置Spinner字体颜色,格式,大小
  7. Android UI布局
  8. android 自定义viewR.styleable找不到或
  9. android中的提示信息显示方法(toast应用)
  10. Could not open: C:\Documents and Sett