该实例是在自定义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>
最终的效果
分享到:
相关推荐
总结一下,`attrs.xml`文件和`TypedArray`在Android自定义组件中起着至关重要的作用。它们允许开发者定义和获取自定义属性,使组件更具可配置性和可复用性。通过熟练掌握这两者,开发者可以更高效地创建出满足需求的...
以下将详细介绍如何在Android中使用自定义属性以及它们的工作原理。 一、自定义属性的声明 1. 在res/values目录下创建或编辑attr.xml文件。这个文件是用来定义自定义属性的,例如: ```xml <!-- 定义一个布尔...
测试:Android 中自定义属性(attr.xml,TypedArray)的使用 注意:MyView(Context context,AttributeSet attrs)构造函数的实现, 和注意main.xml的LinearLayout 里加的声明 要了解:test:textSize="20px" test:...
在Android开发中,自定义控件是提升应用用户体验和界面设计独特性的重要手段。通过创建自定义控件,我们可以根据项目需求...通过学习和实践这个示例,你可以更好地理解Android自定义控件及`attrs.xml`属性标签的运用。
#### 二、在布局中使用自定义属性 1. **在布局文件中引用自定义属性** 在布局文件中,你可以通过指定属性名称的方式给自定义属性赋值: ```xml <com.example.myapp.CustomView android:id="@+id/custom_view...
2. **在布局文件中使用**:在XML布局文件中,使用`app:`前缀(对于AndroidX库)或`@namespace/`(对于Support Library)指定自定义命名空间,并引用自定义属性。 ```xml <com.example.MyCustomView android:layout...
在Android开发中,自定义属性是一种非常常见的技术,它允许开发者扩展系统提供的组件特性,创建具有独特功能和外观的自定义视图或者组件。通过自定义属性,开发者可以更好地控制UI设计,提升应用的用户体验。以下是...
在Android开发中,自定义控件是提升应用可定制性和扩展性的重要手段。自定义控件的属性定义和使用涉及到`TypedArray`和`attrs`...理解并熟练掌握`attrs`和`TypedArray`的使用,对于深入Android自定义控件开发至关重要。
定义和获取属性后,我们可以在XML布局文件中使用这些自定义属性。比如: ```xml <com.example.CustomButton.CustomButton android:layout_width="wrap_content" android:layout_height="wrap_content" app:...
3. 在布局文件中使用自定义属性。 4. 在`AndroidManifest.xml`中声明支持的命名空间,以便在布局编辑器中预览。 通过学习和实践这个简单的实例,你可以掌握Android自定义属性的基本用法,从而更好地定制你的应用...
在Android项目中,自定义属性通常放在res/values/attrs.xml文件中。如果该文件不存在,需要手动创建。在这个文件中,我们将定义一个名为`alphaAnimationDuration`的属性,用于控制透明度渐变的持续时间。示例如下: ...
首先创建values\attrs.xml,在attrs.xml中声明自定义属性: 自定义string类型,属性名为text 自定义color类型,属性名为textColor 自定义dimension类型,属性名为textSize declare-styleable这个标签的作用其实...
3. 处理属性:在自定义的SeekBar类中,你需要使用`TypedArray`从XML布局文件中获取这些属性,并应用到视图上。这通常在`initAttrs()`方法中完成。 4. 自定义样式:可能需要修改进度条的颜色、背景、大小、形状等。...
这里,你可以定义一系列自定义的属性,比如颜色、尺寸、字符串等,以便在自定义View中使用。例如: ```xml ``` 上述代码定义了一个名为`CustomView`的样式表,包含三个自定义属性:custom_color(颜色...
本文将深入探讨Android自定义属性的创建、使用以及它们在实际项目中的应用。 首先,我们来了解自定义属性的定义。在Android中,自定义属性通常在资源XML文件的`<declare-styleable>`元素中定义。例如,假设我们要为...
现在,我们可以在布局XML文件中使用这个自定义控件,并设置自定义属性: ```xml <com.example.CustomButton android:layout_width="wrap_content" android:layout_height="wrap_content" app:customTextSize="24...
总结,LineDemo是一个基础的Android自定义控件实例,它教会了我们如何创建一个简单但实用的自定义控件,包括定义属性、解析属性、重写`onDraw()`以及在布局中使用自定义控件。这只是一个起点,开发者可以通过这个...
首先,自定义属性是在Android资源文件中定义的,通常在res/values/attrs.xml中。在这个示例中,我们可能看到类似以下的定义: ```xml ``` 在这个例子中,我们定义了两个自定义属性:custom_color和custom...
`R.styleable.MyCustomTextView`引用了我们在`attrs.xml`中定义的属性集,`R.styleable.MyCustomTextView_customText`则是具体的属性引用。 现在,自定义的TextView已经具备了读取并使用自定义属性的能力。在布局...
在Android中,我们可以为自定义View定义自己的XML属性,使得在布局文件中更容易配置和使用。这需要以下几个步骤: 1. 在res/values/attrs.xml文件中定义自定义属性,如`progressColor`(进度颜色)、`...