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

2024-05-14 20:08

本文主要是介绍无鸯 Android中自定义属性(attrs.xml,TypedArray)的使用,,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个例子比较全,很不错,

转自 http://www.oschina.net/code/snippet_163910_6283


package com.adnroid.test; 

02   
03import com.adnroid.test.R; 
04   
05import android.content.Context; 
06import android.content.res.TypedArray; 
07import android.graphics.Canvas; 
08import android.graphics.Color; 
09import android.graphics.Paint; 
10import android.graphics.Rect; 
11import android.graphics.Paint.Style; 
12import android.util.AttributeSet; 
13import android.view.View; 
14   
15public class MyView extends View { 
16    private Paint myPaint; 
17    private static final String myString = "Welcome to our Zoon!"
18   
19    public MyView(Context context) { 
20        super(context); 
21        // TODO Auto-generated constructor stub 
22     
23       
24    public MyView(Context context, AttributeSet attr) { 
25        super(context, attr); 
26         myPaint = new Paint(); 
27         TypedArray a = context.obtainStyledAttributes(attr, R.styleable.myView);//TypedArray是一个数组容器 
28        float textSize = a.getDimension(R.styleable.myView_textSize, 30);//防止在XML文件里没有定义,就加上了默认值30 
29        int textColor = a.getColor(R.styleable.myView_textColor, 0xFFFFFFFF);//同上,这里的属性是:名字_属性名 
30         myPaint.setTextSize(textSize); 
31         myPaint.setColor(textColor); 
32         a.recycle();//我的理解是:返回以前取回的属性,供以后使用。以前取回的可能就是textSize和textColor初始化的那段 
33     
34    @Override 
35    protected void onDraw(Canvas canvas) { 
36        // TODO Auto-generated method stub 
37        super.onDraw(canvas); 
38        //myPaint = new Paint(); 
39         myPaint.setColor(Color.RED); 
40         myPaint.setStyle(Style.FILL); 
41           
42         canvas.drawRect(new Rect(10,10,100,100), myPaint); 
43         myPaint.setColor(Color.WHITE); 
44         canvas.drawText(myString, 10, 100, myPaint); 
45     
46   
47

2. [代码]attrs.xml    

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

3. [代码]main.xml    

01<?xml version="1.0" encoding="utf-8"?> 
02<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
03    xmlns:test="http://schemas.android.com/apk/res/com.adnroid.test" 
04    android:orientation="vertical" 
05    android:layout_width="fill_parent" 
06    android:layout_height="fill_parent" 
07    
08<TextView   
09    android:layout_width="fill_parent"  
10    android:layout_height="wrap_content"  
11    android:text="@string/hello" 
12    /> 
13<com.adnroid.test.MyView 
14    android:layout_width="fill_parent" 
15    android:layout_height="fill_parent" 
16    test:textSize="10px" 
17    test:textColor="#fff" 
18    /> 
19</LinearLayout

4. [图片] 6c32391db1a8d7cd86d6b6bc.jpg.png    


这篇关于无鸯 Android中自定义属性(attrs.xml,TypedArray)的使用,的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989724

相关文章

Java使用ANTLR4对Lua脚本语法校验详解

《Java使用ANTLR4对Lua脚本语法校验详解》ANTLR是一个强大的解析器生成器,用于读取、处理、执行或翻译结构化文本或二进制文件,下面就跟随小编一起看看Java如何使用ANTLR4对Lua脚本... 目录什么是ANTLR?第一个例子ANTLR4 的工作流程Lua脚本语法校验准备一个Lua Gramm

Java Optional的使用技巧与最佳实践

《JavaOptional的使用技巧与最佳实践》在Java中,Optional是用于优雅处理null的容器类,其核心目标是显式提醒开发者处理空值场景,避免NullPointerExce... 目录一、Optional 的核心用途二、使用技巧与最佳实践三、常见误区与反模式四、替代方案与扩展五、总结在 Java

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析

Qt中QUndoView控件的具体使用

《Qt中QUndoView控件的具体使用》QUndoView是Qt框架中用于可视化显示QUndoStack内容的控件,本文主要介绍了Qt中QUndoView控件的具体使用,具有一定的参考价值,感兴趣的... 目录引言一、QUndoView 的用途二、工作原理三、 如何与 QUnDOStack 配合使用四、自

C++使用printf语句实现进制转换的示例代码

《C++使用printf语句实现进制转换的示例代码》在C语言中,printf函数可以直接实现部分进制转换功能,通过格式说明符(formatspecifier)快速输出不同进制的数值,下面给大家分享C+... 目录一、printf 原生支持的进制转换1. 十进制、八进制、十六进制转换2. 显示进制前缀3. 指

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t