`
cooper100
  • 浏览: 13071 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Android中自定义属性(attrs.xml,TypedArray)的使用【转】

 
阅读更多
该实例是在自定义View上使用自定义属性的。
先来看看源码:MyView.java

Code:
package com.adnroid.test; 
 
import com.adnroid.test.R; 
 
import android.content.Context; 
import android.content.res.TypedArray; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Rect; 
import android.graphics.Paint.Style; 
import android.util.AttributeSet; 
import android.view.View; 
 
public class MyView extends View { 
    private Paint myPaint; 
    private static final String myString = "Welcome to our Zoon!"; 
 
    public MyView(Context context) { 
        super(context); 
        // TODO Auto-generated constructor stub 
     } 
     
    public MyView(Context context, AttributeSet attr) { 
        super(context, attr); 
         myPaint = new Paint(); 
         TypedArray a = context.obtainStyledAttributes(attr, R.styleable.myView);//TypedArray是一个数组容器 
        float textSize = a.getDimension(R.styleable.myView_textSize, 30);//防止在XML文件里没有定义,就加上了默认值30 
        int textColor = a.getColor(R.styleable.myView_textColor, 0xFFFFFFFF);//同上,这里的属性是:名字_属性名 
         myPaint.setTextSize(textSize); 
         myPaint.setColor(textColor); 
         a.recycle();//我的理解是:返回以前取回的属性,供以后使用。以前取回的可能就是textSize和textColor初始化的那段 
     } 
    @Override 
    protected void onDraw(Canvas canvas) { 
        // TODO Auto-generated method stub 
        super.onDraw(canvas); 
        //myPaint = new Paint(); 
         myPaint.setColor(Color.RED); 
         myPaint.setStyle(Style.FILL); 
         
         canvas.drawRect(new Rect(10,10,100,100), myPaint); 
         myPaint.setColor(Color.WHITE); 
         canvas.drawText(myString, 10, 100, myPaint); 
     } 
 

attrs.xml

Code:
<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="myView"> 
        <attr name="textColor" format="color"/> 
        <attr name="textSize" format="dimension"/> 
    </declare-styleable> 
</resources> 
main.xml

Code:
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:test="http://schemas.android.com/apk/res/com.adnroid.test" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView   
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:text="@string/hello" 
    /> 
<com.adnroid.test.MyView 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    test:textSize="10px" 
    test:textColor="#fff" 
    /> 
</LinearLayout> 
最终的效果
分享到:
评论

相关推荐

    Android中自定义属性attrs.xml、TypedArray的使用

    总结一下,`attrs.xml`文件和`TypedArray`在Android自定义组件中起着至关重要的作用。它们允许开发者定义和获取自定义属性,使组件更具可配置性和可复用性。通过熟练掌握这两者,开发者可以更高效地创建出满足需求的...

    Android 中自定义属性(attr.xml,TypedArray)的使用

    以下将详细介绍如何在Android中使用自定义属性以及它们的工作原理。 一、自定义属性的声明 1. 在res/values目录下创建或编辑attr.xml文件。这个文件是用来定义自定义属性的,例如: ```xml &lt;!-- 定义一个布尔...

    Aj_03的Android 中自定义属性(attr.xml,TypedArray)的使用(源码)

    测试:Android 中自定义属性(attr.xml,TypedArray)的使用 注意:MyView(Context context,AttributeSet attrs)构造函数的实现, 和注意main.xml的LinearLayout 里加的声明 要了解:test:textSize="20px" test:...

    Android自定义控件使用attrs属性Demo

    在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。通过创建自定义控件,我们可以根据项目需求...通过学习和实践这个示例,你可以更好地理解Android自定义控件及`attrs.xml`属性标签的运用。

    Android如何使用XML自定义属性

    #### 二、在布局中使用自定义属性 1. **在布局文件中引用自定义属性** 在布局文件中,你可以通过指定属性名称的方式给自定义属性赋值: ```xml &lt;com.example.myapp.CustomView android:id="@+id/custom_view...

    android 自定义view及自定义属性

    2. **在布局文件中使用**:在XML布局文件中,使用`app:`前缀(对于AndroidX库)或`@namespace/`(对于Support Library)指定自定义命名空间,并引用自定义属性。 ```xml &lt;com.example.MyCustomView android:layout...

    Android自定义属性

    在Android开发中,自定义属性是一种非常常见的技术,它允许开发者扩展系统提供的组件特性,创建具有独特功能和外观的自定义视图或者组件。通过自定义属性,开发者可以更好地控制UI设计,提升应用的用户体验。以下是...

    详解Android自定义控件属性TypedArray以及attrs

    在Android开发中,自定义控件是提升应用可定制性和扩展性的重要手段。自定义控件的属性定义和使用涉及到`TypedArray`和`attrs`...理解并熟练掌握`attrs`和`TypedArray`的使用,对于深入Android自定义控件开发至关重要。

    android自定义属性(三种方法dome)

    定义和获取属性后,我们可以在XML布局文件中使用这些自定义属性。比如: ```xml &lt;com.example.CustomButton.CustomButton android:layout_width="wrap_content" android:layout_height="wrap_content" app:...

    AttrTest android自定义属性

    3. 在布局文件中使用自定义属性。 4. 在`AndroidManifest.xml`中声明支持的命名空间,以便在布局编辑器中预览。 通过学习和实践这个简单的实例,你可以掌握Android自定义属性的基本用法,从而更好地定制你的应用...

    android 自定义属性实现 ImageView 透明度渐变效果

    在Android项目中,自定义属性通常放在res/values/attrs.xml文件中。如果该文件不存在,需要手动创建。在这个文件中,我们将定义一个名为`alphaAnimationDuration`的属性,用于控制透明度渐变的持续时间。示例如下: ...

    Android 自定义view时用到的TypedArray

    首先创建values\attrs.xml,在attrs.xml中声明自定义属性: 自定义string类型,属性名为text 自定义color类型,属性名为textColor 自定义dimension类型,属性名为textSize declare-styleable这个标签的作用其实...

    Android 自定义seekbar源码.zip

    3. 处理属性:在自定义的SeekBar类中,你需要使用`TypedArray`从XML布局文件中获取这些属性,并应用到视图上。这通常在`initAttrs()`方法中完成。 4. 自定义样式:可能需要修改进度条的颜色、背景、大小、形状等。...

    Android 自定义view,自定义属性demo

    这里,你可以定义一系列自定义的属性,比如颜色、尺寸、字符串等,以便在自定义View中使用。例如: ```xml ``` 上述代码定义了一个名为`CustomView`的样式表,包含三个自定义属性:custom_color(颜色...

    Android 自定义属性及其引用

    本文将深入探讨Android自定义属性的创建、使用以及它们在实际项目中的应用。 首先,我们来了解自定义属性的定义。在Android中,自定义属性通常在资源XML文件的`&lt;declare-styleable&gt;`元素中定义。例如,假设我们要为...

    android 重写控件添加自定义属性

    现在,我们可以在布局XML文件中使用这个自定义控件,并设置自定义属性: ```xml &lt;com.example.CustomButton android:layout_width="wrap_content" android:layout_height="wrap_content" app:customTextSize="24...

    android自定义控件LineDemo.rar

    总结,LineDemo是一个基础的Android自定义控件实例,它教会了我们如何创建一个简单但实用的自定义控件,包括定义属性、解析属性、重写`onDraw()`以及在布局中使用自定义控件。这只是一个起点,开发者可以通过这个...

    Android 自定义View 之 自定义属性 demo 修改版

    首先,自定义属性是在Android资源文件中定义的,通常在res/values/attrs.xml中。在这个示例中,我们可能看到类似以下的定义: ```xml ``` 在这个例子中,我们定义了两个自定义属性:custom_color和custom...

    android自定义View,并自定义属性

    `R.styleable.MyCustomTextView`引用了我们在`attrs.xml`中定义的属性集,`R.styleable.MyCustomTextView_customText`则是具体的属性引用。 现在,自定义的TextView已经具备了读取并使用自定义属性的能力。在布局...

    Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)源码

    在Android中,我们可以为自定义View定义自己的XML属性,使得在布局文件中更容易配置和使用。这需要以下几个步骤: 1. 在res/values/attrs.xml文件中定义自定义属性,如`progressColor`(进度颜色)、`...

Global site tag (gtag.js) - Google Analytics