`
wangfu_02
  • 浏览: 71943 次
社区版块
存档分类
最新评论

android开发积累2-实现自定义android控件

阅读更多

android开发中,为了显示效果,大部分控件可能需要重新开发,一般来讲大部分自定义控件可以通过继承自一个android自身控件,重写ondraw来实现。

下面就以开发一个自定义的颜色渐变button为例,说明如果开发自定义控件。

自定义button的CButton.java

package Test.wangfu.controls;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.graphics.Shader;
import android.util.AttributeSet;
import android.view.View;

public class CButton extends View {

    private int type = 0;    //定义一个类属性,可以用于在程序中指定,button的样式是矩形还是圆形,这样定义的属性
    //在xml中引用的时候,引用不到这个属性
    public CButton(Context context, AttributeSet attrs) {
        super(context, attrs);

        this.type=attrs.getAttributeIntValue(null, "type", 0);    //获取main.xml的cbutton定义的type属性值
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
        this.invalidate();   //更新区域
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        Paint paint = new Paint();
        // 消除锯齿
        paint.setAntiAlias(true);

        //设置为实心
        paint.setStyle(Style.FILL);

        //设置过滤渐变颜色
        Shader shader = new android.graphics.LinearGradient(0, 0, 100, 100,
                new int[] { Color.YELLOW, Color.BLUE, Color.RED }, null,
                Shader.TileMode.REPEAT);
        paint.setShader(shader);

       //如果等于0,绘一个圆形
        if (this.getType() == 0) {
            canvas.drawCircle(30, 30, 30, paint);
        }
        else
        {
            Rect r=new Rect();
            r.set(0, 0, 60, 60);
            canvas.drawRect(r, paint);
        }
    }
}

 

main.xml中添加控件

<Test.wangfu.controls.CButton
         android:id="@+id/cbutton1" 
         android:layout_width="wrap_content"          
         android:layout_height="100px"       
         type="1"
    />

 

//在程序中修改自定义的type属性

final Test.wangfu.controls.CButton cbutton=(CButton)this.findViewById(R.id.cbutton1);
cbutton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (cbutton.getType() == 0) {
                    cbutton.setType(1);
                } else {
                    cbutton.setType(0);
                }
            }
        });

 

上面一个可以有两种展示状态的自定义button控件就基本完成了。

 

分享到:
评论

相关推荐

    Android高级应用源码-android自定义控件-侧滑菜单.rar

    "Android高级应用源码-android自定义控件-侧滑菜单.rar"这个压缩包文件提供了一个关于如何在Android应用程序中实现自定义侧滑菜单的示例源代码。侧滑菜单是一种常见的UI设计模式,通常用于在主屏幕和辅助功能之间...

    Android-Android自定义控件-签到日历

    本文将详细解析"Android-Android自定义控件-签到日历"这一主题,以及如何根据提供的源码进行修改以适应特定项目。 首先,签到日历控件通常用于健康管理、学习跟踪或者日常任务管理类应用,让用户能够直观地查看和...

    Android-该自定义控件是一个可以滑动改变温度值的表盘控件

    通过研究这些内容,开发者不仅可以学习到如何创建滑动温度表盘控件,还能了解到Android自定义控件的完整流程,包括设计思路、代码实现、UI优化和文档编写等方面的知识。 总结来说,这个自定义控件是Android开发中的...

    Android高级应用源码-android自定义控件-侧滑菜单.zip

    这个“Android高级应用源码-android自定义控件-侧滑菜单.zip”压缩包中,很可能包含了一个实现这种侧滑效果的自定义控件的源代码。 侧滑菜单通常由两部分组成:主要内容视图和侧滑视图。主要内容视图显示在屏幕中央...

    手机安全卫士--Android自定义组合控件实现设置功能

    手机安全卫士--Android自定义组合控件实现设置功能,界面采用Android自定义组合控件的方式实现,更多详细信息请访问 http://blog.csdn.net/qq_20889581?viewmode=contents 文明的小流氓的博客

    安卓自定义控件相关-Android自定义控件源码.rar

    这个压缩包"Android自定义控件源码.rar"包含了一些自定义控件的源代码,虽然不能保证每个都可直接运行,但它们提供了丰富的学习资源,帮助开发者理解和实践自定义控件的创建过程。下面将详细探讨Android自定义控件的...

    Android自定义控件---联系人列表A-Z排序

    一、Android自定义控件基础 在Android中,自定义控件通常分为两种类型:一是扩展已有的View或ViewGroup类,二是完全自定义的新控件。在这个案例中,我们将扩展ListView或者RecyclerView,因为它们适合用来展示列表...

    Android高级应用源码-Android 自定义头部控件,简单易用.zip

    在Android应用开发中,自定义控件是提升用户体验和实现独特设计的重要手段。这份资源"Android高级应用源码-Android 自定义头部控件,简单易用.zip"提供了一个关于自定义头部控件的实例,旨在帮助开发者理解如何在...

    安卓开发-Android自定义控件知识 - 博客园.zip

    这篇博客园的文章,"安卓开发-Android自定义控件知识",深入探讨了如何在Android平台上创建和使用自定义控件,旨在帮助开发者更好地理解和实践这一关键技能。 首先,Android自定义控件分为两种类型:视图(View)和...

    Android高级应用源码-ImageView 自定义控件,实现圆角控件图片功能.rar

    总之,这个"Android高级应用源码-ImageView 自定义控件,实现圆角控件图片功能"的项目是一个实用的学习资源,对于想要深入了解Android自定义控件和图形绘制的开发者来说,具有很高的参考价值。通过实践这个项目,...

    安卓自定义控件相关-Android自定义头部控件简单易用.rar

    本资源“安卓自定义控件相关-Android自定义头部控件简单易用.rar”提供了关于创建自定义头部控件的示例,这在构建具有个性化的APP时非常有用。 标题中的“自定义头部控件”通常指的是在应用顶部显示的区域,如导航...

    Android贝塞尔曲线的简单应用之------实现自定义圆形控件内水波纹自动上升效果Demo

    综上所述,这个"Android贝塞尔曲线的简单应用之------实现自定义圆形控件内水波纹自动上升效果Demo"是一个综合性的实践项目,涵盖了Android开发中的多个关键知识点,包括贝塞尔曲线的使用、自定义View、属性动画以及...

    Android开发--自定义控件实现listview的滑动删除item

    本篇文章将详细讲解如何在Android中通过自定义控件来实现ListView的滑动删除功能。 首先,我们需要了解ListView的基本工作原理。ListView利用Adapter来绑定数据源,并通过ViewHolder优化性能,减少视图复用时的...

    Android自定义控件开发入门与实战.zip

    《Android自定义控件开发入门与实战》这本书深入浅出地讲解了如何在Android平台上创建和使用自定义控件,旨在帮助开发者从基础知识到实战技巧,全方位掌握这一核心技术。 一、自定义控件基础 自定义控件在Android中...

    安卓自定义控件相关-Android自定义控件垂直公告栏.rar

    "安卓自定义控件相关-Android自定义控件垂直公告栏.rar"这个压缩包文件提供了一个关于如何在Android中创建一个垂直滚动的公告栏控件的实例。下面我们将详细探讨自定义控件的概念、实现步骤以及垂直公告栏的可能设计...

    安卓自定义控件相关-android-shape-imageview自定义形状的imageview.rar

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。`android-shape-imageview`是一个专门用于创建自定义形状的ImageView的项目,它允许开发者根据需求为图片设置不同的形状,比如圆形、矩形或是...

    安卓自定义控件相关-用自定义View的方式来实现圆形的遥控器菜单.rar

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例主要讲解如何使用自定义View来实现一个圆形的遥控器菜单。这个圆形遥控器菜单可能用于模拟电视遥控器上的导航操作,或者作为游戏控制器等...

    Android自定义控件实现导航条IndicatorView

    在Android应用开发中,自定义控件是提升用户体验和界面个性化的重要手段。本文将深入探讨如何实现一个自定义的...不断学习和实践,将帮助你更好地理解和掌握Android自定义控件的精髓,为你的应用带来更丰富的用户体验。

    Android自定义控件--2(数字签名)

    在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本篇文章将深入探讨如何创建一个自定义控件,特别关注数字签名这一关键环节。数字签名在Android系统中主要用于验证应用程序的完整性和来源,确保...

    Android高级应用源码-ImageView 自定义控件,实现圆角控件图片功能.zip

    总之,这个源码包提供了一个实用的Android自定义控件示例,可以帮助开发者更好地理解和实现圆角图片效果。通过学习和理解这个源码,开发者可以提高自定义视图的能力,并在自己的项目中实现更多富有创意的界面设计。

Global site tag (gtag.js) - Google Analytics