[转]Android中attrs.xml文件的使用详解

转自:http://blog.csdn.net/jiangwei0910410003/article/details/17006087

Android中在values中定义一个attrs.xml,然后自己定义一个组件MyView

attrs.xml内容如下:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <declare-styleable name="MyView">
  4. <attr name="textColor" format="color" />
  5. <attr name="textSize" format="dimension" />
  6. </declare-styleable>
  7. </resources>

定义的组件MyView:

[html] view plaincopy

  1. package com.jiangwei.demo;
  2. import android.content.Context;
  3. import android.content.res.TypedArray;
  4. import android.graphics.Canvas;
  5. import android.graphics.Color;
  6. import android.graphics.Paint;
  7. import android.graphics.Paint.Style;
  8. import android.graphics.Rect;
  9. import android.util.AttributeSet;
  10. import android.view.View;
  11. public class MyView extends View {
  12. private Paint mPaint;
  13. private static final String mString = "Welcome to Mr Wei‘s blog";
  14. public MyView(Context context) {
  15. super(context);
  16. mPaint = new Paint();
  17. }
  18. public MyView(Context context, AttributeSet attrs) {
  19. super(context, attrs);
  20. mPaint = new Paint();
  21. TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.MyView);
  22. int textColor = a.getColor(R.styleable.MyView_textColor, 0XFFFFFFFF);
  23. float textSize = a.getDimension(R.styleable.MyView_textSize, 36);
  24. mPaint.setTextSize(textSize);
  25. mPaint.setColor(textColor);
  26. a.recycle();
  27. }
  28. @Override
  29. protected void onDraw(Canvas canvas) {
  30. // TODO Auto-generated method stub
  31. super.onDraw(canvas);
  32. // 设置填充
  33. mPaint.setStyle(Style.FILL);
  34. // 画一个矩形,前俩个是矩形左上角坐标,后面俩个是右下角坐标
  35. canvas.drawRect(new Rect(10, 10, 100, 100), mPaint);
  36. mPaint.setColor(Color.BLUE);
  37. // 绘制文字
  38. canvas.drawText(mString, 10, 110, mPaint);
  39. }
  40. }

main.xml内容:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. xmlns:test="http://schemas.android.com/apk/res/com.jiangwei.demo"//一定记得添加前缀
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:orientation="vertical" >
  8. <com.jiangwei.demo.MyView
  9. android:layout_width="fill_parent"
  10. android:layout_height="fill_parent"
  11. test:textSize="20px"//test是个前缀
  12. test:textColor="#ffffff"/>
  13. </LinearLayout>

具体内容:

格式如上,其中“xmlns:wen”冒号后面是标签名,在下面使用时(只对当前文件可用)
<TextView  wen:属性名/>
“com.iteye.googlers”是你的工程包名。
1. reference:参考某一资源ID。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "名称">
  2. <attr name = "background" format = "reference" />
  3. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <ImageView
  2. android:layout_width = "42dip"
  3. android:layout_height = "42dip"
  4. android:background = "@drawable/图片ID"
  5. />

2. color:颜色值。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "名称">
  2. <attr name = "textColor" format = "color" />
  3. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <TextView
  2. android:layout_width = "42dip"
  3. android:layout_height = "42dip"
  4. android:textColor = "#00FF00"
  5. />

3. boolean:布尔值。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "名称">
  2. <attr name = "focusable" format = "boolean" />
  3. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <Button
  2. android:layout_width = "42dip"
  3. android:layout_height = "42dip"
  4. android:focusable = "true"/>

4. dimension:尺寸值。
     (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "名称">
  2. <attr name = "layout_width" format = "dimension" />
  3. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <Button
  2. android:layout_width = "42dip"
  3. android:layout_height = "42dip"
  4. />

5. float:浮点值。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "AlphaAnimation">
  2. <attr name = "fromAlpha" format = "float" />
  3. <attr name = "toAlpha" format = "float" />
  4. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <alpha
  2. android:fromAlpha = "1.0"
  3. android:toAlpha = "0.7"
  4. />

6. integer:整型值。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "AnimatedRotateDrawable">
  2. <attr name = "visible" />
  3. <attr name = "frameDuration" format="integer" />
  4. <attr name = "framesCount" format="integer" />
  5. <attr name = "pivotX" />
  6. <attr name = "pivotY" />
  7. <attr name = "drawable" />
  8. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <animated-rotate
  2. xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:drawable = "@drawable/图片ID"
  4. android:pivotX = "50%"
  5. android:pivotY = "50%"
  6. android:framesCount = "12"
  7. android:frameDuration = "100"
  8. />

7. string:字符串。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "MapView">
  2. <attr name = "apiKey" format = "string" />
  3. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <com.google.android.maps.MapView
  2. android:layout_width = "fill_parent"
  3. android:layout_height = "fill_parent"
  4. android:apiKey = "0jOkQ80oD1JL9C6HAja99uGXCRiS2CGjKO_bc_g"
  5. />

8. fraction:百分数。
     (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name="RotateDrawable">
  2. <attr name = "visible" />
  3. <attr name = "fromDegrees" format = "float" />
  4. <attr name = "toDegrees" format = "float" />
  5. <attr name = "pivotX" format = "fraction" />
  6. <attr name = "pivotY" format = "fraction" />
  7. <attr name = "drawable" />
  8. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <rotate
  2. xmlns:android = "http://schemas.android.com/apk/res/android"
  3.                android:interpolator = "@anim/动画ID"
  4. android:fromDegrees = "0"
  5.                android:toDegrees = "360"
  6. android:pivotX = "200%"
  7. android:pivotY = "300%"
  8.                android:duration = "5000"
  9. android:repeatMode = "restart"
  10. android:repeatCount = "infinite"
  11. />

9. enum:枚举值。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name="名称">
  2. <attr name="orientation">
  3. <enum name="horizontal" value="0" />
  4. <enum name="vertical" value="1" />
  5. </attr>
  6. </declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <LinearLayout
  2. xmlns:android = "http://schemas.android.com/apk/res/android"
  3. android:orientation = "vertical"
  4. android:layout_width = "fill_parent"
  5. android:layout_height = "fill_parent"
  6. >
  7. </LinearLayout>

10. flag:位或运算。
     (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name="名称">
  2. <attr name="windowSoftInputMode">
  3. <flag name = "stateUnspecified" value = "0" />
  4. <flag name = "stateUnchanged" value = "1" />
  5. <flag name = "stateHidden" value = "2" />
  6. <flag name = "stateAlwaysHidden" value = "3" />
  7. <flag name = "stateVisible" value = "4" />
  8. <flag name = "stateAlwaysVisible" value = "5" />
  9. <flag name = "adjustUnspecified" value = "0x00" />
  10. <flag name = "adjustResize" value = "0x10" />
  11. <flag name = "adjustPan" value = "0x20" />
  12. <flag name = "adjustNothing" value = "0x30" />
  13. </attr>
  14. lt;/declare-styleable>

(2)属性使用:

[html] view plaincopy

  1. <activity
  2. android:name = ".StyleAndThemeActivity"
  3. android:label = "@string/app_name"
  4. android:windowSoftInputMode = "stateUnspecified | stateUnchanged | stateHidden">
  5. <intent-filter>
  6. <action android:name = "android.intent.action.MAIN" />
  7. <category android:name = "android.intent.category.LAUNCHER" />
  8. </intent-filter>
  9. </activity>

注意:
     属性定义时可以指定多种类型值。
    (1)属性定义:

[html] view plaincopy

  1. <declare-styleable name = "名称">
  2. <attr name = "background" format = "reference|color" />
  3. </declare-styleable>

(2)属性使用:

[html] view plaincopy

    1. <ImageView
    2. android:layout_width = "42dip"
    3. android:layout_height = "42dip"
    4. android:background = "@drawable/图片ID|#00FF00"
    5. />
时间: 10-17

[转]Android中attrs.xml文件的使用详解的相关文章

【转】android中string.xml文件的使用

1.在程序中获取string.xml中字符串和数值 <?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, MainActivity!</string>    <string name="app_name">TestExample01</stri

Android中Serializable和Parcelable序列化对象详解

学习内容: 1.序列化的目的 2.Android中序列化的两种方式 3.Parcelable与Serializable的性能比较 4.Android中如何使用Parcelable进行序列化操作 5.Parcelable的工作原理 6.相关实例 1.序列化的目的 (1).永久的保存对象数据(将对象数据保存在文件当中,或者是磁盘中 (2).通过序列化操作将对象数据在网络上进行传输(由于网络传输是以字节流的方式对数据进行传输的.因此序列化的目的是将对象数据转换成字节流的形式) (3).将对象数据在进程

android的布局xml文件如何添加注释?

xml布局文件如图添加注释后报错,错误内容如下: 上网查阅xml添加注释的语法规则: XML 中的注释 在 XML 中编写注释的语法与 HTML 的语法很相似: <!--This is a comment--> 并不是注释本身的问题. 因此可能是Android中的xml有特殊的规定,继续搜索发现有网友说: Android中的xml只能在组件布局代码后,或者在组件的前面添加注释.如下所示:<RelativeLayout        android:id="@+id/item_l

maven新建Spring MVC + MyBatis + Oracle的Web项目中pom.xml文件

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion&

报表XML导出rtf格式,结果在浏览器中打开XML文件。用360浏览器下载rtf文件打开后出现Authentication failed 问题

报表XML导出rtf格式,结果在浏览器中打开XML文件.用360浏览器下载rtf文件打开后出现Authentication failed 问题 直接上问题图: 问题描述:在Oracle EBS中执行"资源事务处理 XML"请求,选择输出rtf格式,完成后查看输出,却在浏览器中打开了XML文件.        提示:需要检查一下是否有对应的模板文件和模板定义有效时间.        解决方案:1. 查看日志. 从中可以看出出错原因,以及模板代码.2. 添加Oracle XML Publi

关于Struts2中struts.xml文件分层问题

没事折腾struts2,遇到异常,浪费好长时间,于是干脆把所有可能的异常都给跑一遍,来个痛快的. 文件的结构 WEB-INF |------configs |-------struts-common.xml |-------struts.xml |------web.xml 遇到的异常: WARNING: Could not find action or result: /Pro_struts2/common/login!preLogin There is no Action mapped fo

Android shape的xml文件

Android shape的xml文件可以写不同形状.背景.边框.圆角等等效果,可以代替不少. 9图片的使用,缩小资源文件的大小.下面看一下shape可以包含的内容有哪些. 1 <?xml version="1.0" encoding="utf-8"?> 2 <shape 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:shape=[&

android 中theme.xml与style.xml的区别

from://http://liangoogle.iteye.com/blog/1848448 android 中theme.xml与style.xml的区别: 相同点: 两者的定义相同. <resources> <stylename="theme"parent="android:Theme.Black"> <itemname="android:windowNoTitle">true< /item>

unity3d-配置Android环境,打包发布Apk流程详解

31:unity3d-配置Android环境,打包发布Apk流程详解 作者 阿西纳尼 关注 2016.08.28 22:52 字数 498 阅读 1806评论 0喜欢 5 Unity配置Android环境,打包发布安卓流程 一:SDK与JDK下载地址:http://pan.baidu.com/s/1mhVaXHe下载完成后,解压文件 SDK文件 二.安装 JDK 运行安装程序jdk-7u67-windows-x64 Java-JDK 分别点击下一步进行安装. 安装中 在安装过程中先后会出现两次选