[转]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. />
时间: 2024-10-07 21:45:40

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

【转】Mybatis 3.1中 Mapper XML 文件 的学习详解

MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量.MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 配置给定命名空间的缓存. cache-ref – 从其他命名空间引用缓存配置. resultMap – 最复杂,也是最有力量的元

Mybatis 3.1中 Mapper XML 文件 的学习详解

转:http://blog.csdn.net/zhll3377/article/details/8203440 MyBatis 真正的力量是在映射语句中.这里是奇迹发生的地方.对于所有的力量,SQL 映射的 XML 文件是相当的简单.当然如果你将它们和对等功能的 JDBC 代码来比较,你会发现映射文件节省了大约 95%的代码量.MyBatis 的构建就是聚焦于 SQL 的,使其远离于普通的方式. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 配置给定命名空间

解决Android中fragment_main.xml文件中的组件获取的问题

package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.Menu; import android.view.Me

Android中layout.xml文件中加载自定义的View类

<com.bn.summer.GGView3 android:layout_width="100dip" android:layout_height="114dip" android:layout_marginLeft="11dip" /> View类的实现: package com.bn.summer; import android.content.Context; import android.content.res.Resour

android 中生成xml文件

在Android中生成xml文件真的很简单,下面提供2中方法,一种是通过String写入到文件,另外一种是通过XML 的 XmlSerializer. 以后遇到Android写xml内容就不会困惑了 1.通过string写入文件 String name=mEtName.getText().toString(); String age=mEtAge.getText().toString(); String Id=mEtID.getText().toString(); File file=new F

修改Android中strings.xml文件, 动态改变数据

有些朋友可能会动态的修改Android中strings.xml文件中的值,在这里给大家推荐一种简单的方法.strings.xml中节点是支持占位符的,如下所示: <string name="data">整数型:%1$d,浮点型:%2$.2f,字符串:%3$s</string> 其中%后面是占位符的位置,从1开始, $ 后面是填充数据的类型         %d:表示整数型:         %f :表示浮点型,其中f前面的.2 表示小数的位数         %

Android 中各种权限深入体验及详解

Android 中各种权限深入体验及详解 分类: Android2012-07-15 19:27 2822人阅读 评论(0) 收藏 举报 androidpermissionsinstallersystemserviceinteger 一. 权限(permission) 权限用来描述是否拥有做某件事的权力.Android系统中权限分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system).系统中所有预定义的

Android中自定义View、ViewGroup理论基础详解

Android自身提供了许多widgets,但是有时候这些widgets并不能满足我们的需求,这时我们就需要自定义View,本文会详细说明自定义View的各种理论基础,只有理解了这些知识,我们才能更好地实现各种功能的控件. 我觉得自定义View中最重要的部分就是绘图和交互,自定义的绘图使得你的View与众不同,交互使用户可以与你的View进行交互,而绘图的前提是View的量算与布局,交互的基础是触摸事件,所以量算.布局.绘图.触摸事件这些是自定义View的核心. 除此之外,一个设计友好的自定义V

php中读取大文件实现方法详解

php中读取大文件实现方法详解 来源:   时间:2013-09-05 19:27:01   阅读数:6186 分享到:0 [导读] 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解的同学可进入参考参考.需求如下: 现有一个1G左右的日志文件,大约有500多万行, 用php返回最后几行的内容.实现方法:1 直接采用file函数 本文章来给各位同学介绍php中读取大文件实现方法详解吧,有需要了解的同学可进入参考参考. 需求如下: 现有一个1G左右的日志文件,大约有500多万行,