`

Android自定义View之一:初探实例 .

 
阅读更多

Android自定义View实现很简单

继承View,重写构造函数、onDraw,(onMeasure)等函数。

 

如果自定义的View需要有自定义的属性,需要在values下建立attrs.xml。在其中定义你的属性。

 

在使用到自定义View的xml布局文件中需要加入xmlns:前缀="http://schemas.android.com/apk/res/你的自定义View所在的包路径".

在使用自定义属性的时候,使用前缀:属性名,如my:textColor="#FFFFFFF"。

 

实例:

 

package demo.view.my;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.util.AttributeSet;
import android.view.View;
/**
 * 这个是自定义的TextView.
 * 至少需要重载构造方法和onDraw方法
 * 对于自定义的View如果没有自己独特的属性,可以直接在xml文件中使用就可以了
 * 如果含有自己独特的属性,那么就需要在构造函数中获取属性文件attrs.xml中自定义属性的名称
 * 并根据需要设定默认值,放在在xml文件中没有定义。
 * 如果使用自定义属性,那么在应用xml文件中需要加上新的schemas,
 * 比如这里是xmlns:my="http://schemas.android.com/apk/res/demo.view.my"
 * 其中xmlns后的“my”是自定义的属性的前缀,res后的是我们自定义View所在的包
 * @author Administrator
 *
 */
public class MyView extends View {
	
	Paint mPaint; //画笔,包含了画几何图形、文本等的样式和颜色信息
	public MyView(Context context) {
		super(context);
		
	}
	
	public MyView(Context context, AttributeSet attrs){
		super(context, attrs);
		mPaint = new Paint();
		//TypedArray是一个用来存放由context.obtainStyledAttributes获得的属性的数组
		//在使用完成后,一定要调用recycle方法
		//属性的名称是styleable中的名称+“_”+属性名称
		TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyView);
		int textColor = array.getColor(R.styleable.MyView_textColor, 0XFF00FF00); //提供默认值,放置未指定
		float textSize = array.getDimension(R.styleable.MyView_textSize, 36);
		mPaint.setColor(textColor);
		mPaint.setTextSize(textSize);
		
		array.recycle(); //一定要调用,否则这次的设定会对下次的使用造成影响
	}
	
	public void onDraw(Canvas canvas){
		super.onDraw(canvas);
		//Canvas中含有很多画图的接口,利用这些接口,我们可以画出我们想要的图形
		//mPaint = new Paint();
		//mPaint.setColor(Color.RED);
		mPaint.setStyle(Style.FILL); //设置填充
		canvas.drawRect(10, 10, 100, 100, mPaint); //绘制矩形
		
		mPaint.setColor(Color.BLUE);
		canvas.drawText("我是被画出来的", 10, 120, mPaint);
	}
}
 

相应的属性文件attrs.xml:

<?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>

 

在布局文件中的使用:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
			  xmlns:my="http://schemas.android.com/apk/res/demo.view.my" 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
	
    <demo.view.my.MyView
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content" 
    	my:textColor="#FFFFFFFF" 
    	my:textSize="22dp"
    	/>
</LinearLayout>

 

分享到:
评论

相关推荐

    Android自定义View实例:深度剖析 水晶/水滴 波浪球 实现步骤详解

    在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有表现力的UI元素,提升用户体验。本文将深度剖析如何实现一个名为“水晶/水滴 波浪球”的自定义View,并通过详细步骤讲解,帮助你掌握...

    android 自定义view比较综合的例子

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面。这个“android 自定义view比较综合的例子”显然涵盖了多个高级话题,旨在帮助有一定基础的开发者提升自定义...

    [安卓开发] 自定义View之一: 组合View Demo

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面组件。本文将深入探讨如何实现一个自定义View,以"组合View Demo"为例,我们将讨论如何将多个基本的Android ...

    安卓QQ相关相关-Android自定义View之高仿QQ健康.rar

    本资源“安卓QQ相关相关-Android自定义View之高仿QQ健康.rar”聚焦于如何模仿QQ健康应用中的特定视图组件,为开发者提供了一个实践自定义View的案例。 首先,我们要理解自定义View的基本概念。在Android中,View是...

    android 自定义View 的一个实例

    本实例将深入探讨如何自定义一个Android View来模拟动态背景,这通常用于增强用户界面的交互性和视觉吸引力。 首先,创建自定义View需要继承Android的View或其子类,如ViewGroup。在这个例子中,我们可能会继承自...

    25. Android自定义View以及layout属性全攻略.txt

    Android自定义View以及layout属性全攻略.txt

    BookPage-Android自定义View实现翻页效果,并附带实现教程.zip

    仿真书籍翻页效果BookPageView简介:实现了仿真翻页效果,教程完整地描述了翻页原理分析到性能优化的过程教程博客:Android自定义View——从零开始实现书籍翻页效果(一) Android自定义View——从零开始实现书籍...

    Android 自定义View (验证码)项目实例完整源码

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的UI组件。本项目实例——“Android 自定义View (验证码)项目”提供了完整的源码,帮助开发者深入理解自定义View的实现...

    Android -自定义view-Paint和Canvas.rar

    在Android开发中,自定义View是一项重要的技能,它允许开发者创造出独特且富有表现力的用户界面,超越系统预设的视图组件。本资源“Android -自定义view-Paint和Canvas.rar”着重讲解了如何利用Paint和Canvas进行...

    Android 自定义View实现水平温度计

    本项目"Android 自定义View实现水平温度计"就是这样一个实例,它通过自定义View来展示一个水平方向的温度计,可以直观地显示当前温度状态。以下是关于这个项目的一些关键知识点和实现细节: 1. **自定义View基础**...

    Android 自定义View视图

    在Android应用开发中,自定义View视图是一个重要的技术,它允许开发者根据特定需求创建独一无二的用户界面元素。本文将深入探讨如何通过继承View类来实现一个自定义的罗盘界面,以帮助开发者理解自定义视图的工作...

    android 自定义View界面大合集

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。"Android 自定义View界面大合集"的主题涵盖了这个领域的广泛知识点,包括但不限于...

    android 自定义View 两种方式

    customButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 处理点击事件 } }); ``` 无论是哪种方式,记得在自定义View类中处理好触屏事件、测量和绘制逻辑,...

    android 自定义view及自定义属性

    在Android开发中,自定义View和自定义属性是提升应用个性化和功能扩展性的重要手段。本文将深入探讨这两个核心概念,以及如何在实际项目中应用它们。 ### 自定义View 自定义View允许开发者创建自己的视图组件,以...

    Android自定义View实现转盘旋转的效果

    在Android中,自定义 View 是一种非常重要的技术,可以满足开发者的个性化需求。通过继承 View 类,并重写构造函数和 onDraw() 函数,可以实现自定义的 View。onDraw 函数是 View 的一个关键函数,在界面刷新时会被...

    android自定义view自定义buttonDemo

    在Android开发中,自定义View和自定义Button是提升应用界面独特性和交互体验的重要手段。本Demo主要展示了如何通过自定义View和自定义Button来实现特定的视觉效果和交互功能,比如Button在被点击时变换背景。下面...

    Android 自定义view 大合集源码

    在Android开发中,自定义View是一项重要的技能,它允许开发者突破系统提供的标准组件限制,创造出独特且富有创意的用户界面。本资源“Android 自定义view 大合集源码”由知名开发者雨松MOMO提供,旨在深入探讨并实践...

    Android自定义view实现代码复用

    本教程将通过一个具体的示例——HZLoginView,深入讲解如何在Android中创建自定义View并实现代码复用及自定义属性。 首先,理解自定义View的基本步骤: 1. 创建一个新的Java类:通常,我们继承自Android的基础View...

    Android自定义View基本绘制流程及实例

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据需求创建独特的用户界面元素,以实现更加丰富和个性化的交互体验。本篇文章将深入探讨Android自定义View的基本绘制流程,并通过实例进行详解。 首先...

Global site tag (gtag.js) - Google Analytics