无鸯 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

相关文章

Python 字典 (Dictionary)使用详解

《Python字典(Dictionary)使用详解》字典是python中最重要,最常用的数据结构之一,它提供了高效的键值对存储和查找能力,:本文主要介绍Python字典(Dictionary)... 目录字典1.基本特性2.创建字典3.访问元素4.修改字典5.删除元素6.字典遍历7.字典的高级特性默认字典

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

一文详解如何使用Java获取PDF页面信息

《一文详解如何使用Java获取PDF页面信息》了解PDF页面属性是我们在处理文档、内容提取、打印设置或页面重组等任务时不可或缺的一环,下面我们就来看看如何使用Java语言获取这些信息吧... 目录引言一、安装和引入PDF处理库引入依赖二、获取 PDF 页数三、获取页面尺寸(宽高)四、获取页面旋转角度五、判断

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

使用Python删除Excel中的行列和单元格示例详解

《使用Python删除Excel中的行列和单元格示例详解》在处理Excel数据时,删除不需要的行、列或单元格是一项常见且必要的操作,本文将使用Python脚本实现对Excel表格的高效自动化处理,感兴... 目录开发环境准备使用 python 删除 Excphpel 表格中的行删除特定行删除空白行删除含指定

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

prometheus如何使用pushgateway监控网路丢包

《prometheus如何使用pushgateway监控网路丢包》:本文主要介绍prometheus如何使用pushgateway监控网路丢包问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录监控网路丢包脚本数据图表总结监控网路丢包脚本[root@gtcq-gt-monitor-prome

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并