`

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

阅读更多

Android自定义View实现很简单

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

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

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

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

实例:

[code="java"] 
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);   
    }   
} 

 
相应的属性文件:

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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenjie19891104/archive/2011/04/11/6315668.aspx

 

分享到:
评论

相关推荐

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

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

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

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

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

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

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

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

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

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

    android 自定义View 的一个实例

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

    【博文源码】Android 自定义 View 基础实例

    本篇博文源码聚焦于Android自定义View的基础实例,旨在帮助开发者掌握自定义View的基本步骤和技巧。 首先,自定义View通常涉及到以下几个关键点: 1. **创建新的View类**:开发者需要继承一个已有的View类,如View...

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

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

    android 自定义View界面大合集

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

    Android 自定义View视图

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

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

    假设我们要创建一个可自定义颜色的圆形View: ```java public class CustomCircleView extends View { private Paint paint; public CustomCircleView(Context context) { this(context, null); } public ...

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

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

    android 自定义View 两种方式

    完成自定义View类后,在Activity的`onCreate()`方法中实例化这个类,并将其添加到布局中,例如: ```java CustomView customView = new CustomView(this); LinearLayout.LayoutParams layoutParams = new ...

    Android自定义View之高仿QQ健康

    本项目"Android自定义View之高仿QQ健康"旨在教你如何模仿流行的QQ健康应用,利用谷歌的Material Design风格来设计自定义界面,提供一个既美观又实用的样式。 首先,我们来了解一下Material Design。它是谷歌推出的...

    Android 自定义View --- 视频音量调控

    在Android开发中,自定义View是一项重要的技能,它允许开发者根据特定需求创建独特且功能丰富的用户界面元素。本文将深入探讨如何实现一个自定义View,用于视频音量的调控。我们将从基本概念出发,逐步讲解如何设计...

    android 自定义View 实例

    本实例主要讲解如何在Android中自定义View,并提供了一个可作为参考的demo。 首先,理解Android的View体系结构至关重要。View是Android UI系统的基础,它是屏幕上的一个可视元素,比如Button、TextView等。自定义...

    Android 自定义view 大合集源码

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

    android 自定义view及自定义属性

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

    Android自定义View图片裁剪,支持自由裁剪、按自定义比例裁剪、圆形裁剪、旋转、镜面翻转,从0到1自定义View

    方便调用,有示例。 Android自定义View图片裁剪,支持自由裁剪、按自定义比例裁剪、圆形裁剪、旋转、镜面翻转,从0到1自定义View。kotlin编写的一个自定义View。

Global site tag (gtag.js) - Google Analytics