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应用程序中实现自定义侧滑菜单的示例源代码。侧滑菜单是一种常见的UI设计模式,通常用于在主屏幕和辅助功能之间...
本文将详细解析"Android-Android自定义控件-签到日历"这一主题,以及如何根据提供的源码进行修改以适应特定项目。 首先,签到日历控件通常用于健康管理、学习跟踪或者日常任务管理类应用,让用户能够直观地查看和...
通过研究这些内容,开发者不仅可以学习到如何创建滑动温度表盘控件,还能了解到Android自定义控件的完整流程,包括设计思路、代码实现、UI优化和文档编写等方面的知识。 总结来说,这个自定义控件是Android开发中的...
这个“Android高级应用源码-android自定义控件-侧滑菜单.zip”压缩包中,很可能包含了一个实现这种侧滑效果的自定义控件的源代码。 侧滑菜单通常由两部分组成:主要内容视图和侧滑视图。主要内容视图显示在屏幕中央...
手机安全卫士--Android自定义组合控件实现设置功能,界面采用Android自定义组合控件的方式实现,更多详细信息请访问 http://blog.csdn.net/qq_20889581?viewmode=contents 文明的小流氓的博客
这个压缩包"Android自定义控件源码.rar"包含了一些自定义控件的源代码,虽然不能保证每个都可直接运行,但它们提供了丰富的学习资源,帮助开发者理解和实践自定义控件的创建过程。下面将详细探讨Android自定义控件的...
一、Android自定义控件基础 在Android中,自定义控件通常分为两种类型:一是扩展已有的View或ViewGroup类,二是完全自定义的新控件。在这个案例中,我们将扩展ListView或者RecyclerView,因为它们适合用来展示列表...
在Android应用开发中,自定义控件是提升用户体验和实现独特设计的重要手段。这份资源"Android高级应用源码-Android 自定义头部控件,简单易用.zip"提供了一个关于自定义头部控件的实例,旨在帮助开发者理解如何在...
这篇博客园的文章,"安卓开发-Android自定义控件知识",深入探讨了如何在Android平台上创建和使用自定义控件,旨在帮助开发者更好地理解和实践这一关键技能。 首先,Android自定义控件分为两种类型:视图(View)和...
总之,这个"Android高级应用源码-ImageView 自定义控件,实现圆角控件图片功能"的项目是一个实用的学习资源,对于想要深入了解Android自定义控件和图形绘制的开发者来说,具有很高的参考价值。通过实践这个项目,...
本资源“安卓自定义控件相关-Android自定义头部控件简单易用.rar”提供了关于创建自定义头部控件的示例,这在构建具有个性化的APP时非常有用。 标题中的“自定义头部控件”通常指的是在应用顶部显示的区域,如导航...
综上所述,这个"Android贝塞尔曲线的简单应用之------实现自定义圆形控件内水波纹自动上升效果Demo"是一个综合性的实践项目,涵盖了Android开发中的多个关键知识点,包括贝塞尔曲线的使用、自定义View、属性动画以及...
本篇文章将详细讲解如何在Android中通过自定义控件来实现ListView的滑动删除功能。 首先,我们需要了解ListView的基本工作原理。ListView利用Adapter来绑定数据源,并通过ViewHolder优化性能,减少视图复用时的...
《Android自定义控件开发入门与实战》这本书深入浅出地讲解了如何在Android平台上创建和使用自定义控件,旨在帮助开发者从基础知识到实战技巧,全方位掌握这一核心技术。 一、自定义控件基础 自定义控件在Android中...
"安卓自定义控件相关-Android自定义控件垂直公告栏.rar"这个压缩包文件提供了一个关于如何在Android中创建一个垂直滚动的公告栏控件的实例。下面我们将详细探讨自定义控件的概念、实现步骤以及垂直公告栏的可能设计...
在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。`android-shape-imageview`是一个专门用于创建自定义形状的ImageView的项目,它允许开发者根据需求为图片设置不同的形状,比如圆形、矩形或是...
在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本示例主要讲解如何使用自定义View来实现一个圆形的遥控器菜单。这个圆形遥控器菜单可能用于模拟电视遥控器上的导航操作,或者作为游戏控制器等...
在Android应用开发中,自定义控件是提升用户体验和界面个性化的重要手段。本文将深入探讨如何实现一个自定义的...不断学习和实践,将帮助你更好地理解和掌握Android自定义控件的精髓,为你的应用带来更丰富的用户体验。
在Android开发中,自定义控件是提升应用独特性和用户体验的重要手段。本篇文章将深入探讨如何创建一个自定义控件,特别关注数字签名这一关键环节。数字签名在Android系统中主要用于验证应用程序的完整性和来源,确保...
总之,这个源码包提供了一个实用的Android自定义控件示例,可以帮助开发者更好地理解和实现圆角图片效果。通过学习和理解这个源码,开发者可以提高自定义视图的能力,并在自己的项目中实现更多富有创意的界面设计。