Android自定义View----1. 自定义自绘控件
2015-12-04 16:43
405 查看
Android自定义View----1. 自定义自绘控件
本节前言
自定义View的实现方式大概可以分为三种:
(1).自绘控件 (2).组合控件 (3).继承控件
上一节讲了自定义组合控件,本节讲解自绘控件使用.
本节正文
自定义view中,自绘控件相对较难部分,自绘控件可以理解为,此组件需要我们自己来绘制完成的,绘制代码需要在onDraw方法中进行实现.
(1).先要理清自绘控件中各种图层如何嵌套的,有哪些基本图形绘制等,理清绘制思路.
(2).然后定义一个view继承自view 类,添加好类的构造方法,
(3).最后在onDraw方法中进行绘制操作.
如图所示,一个包含了圆形以及一个数字,看到此就要理解如何进行绘制顺序.
![](http://img.blog.csdn.net/20151204163851843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
.
定义一个View类
主要绘制过程在 onDraw 方法中,先去绘制一个圆形,然后绘制一个文本,,绘制过程中注意的细节问题,需要自己去把握了。
代码就不做更多讲解,重要的地方,在于拆分绘制图形的顺序..如何进行绘制。
http://git.oschina.net/xiabing/TestDemoForview
自定义view 常见会出现问题,各种异常解决分析,请查阅:
Android异常汇集: /article/8268271.html
本节前言
自定义View的实现方式大概可以分为三种:
(1).自绘控件 (2).组合控件 (3).继承控件
上一节讲了自定义组合控件,本节讲解自绘控件使用.
本节正文
1. 简介
自定义view中,自绘控件相对较难部分,自绘控件可以理解为,此组件需要我们自己来绘制完成的,绘制代码需要在onDraw方法中进行实现.
2.使用步骤
(1).先要理清自绘控件中各种图层如何嵌套的,有哪些基本图形绘制等,理清绘制思路.(2).然后定义一个view继承自view 类,添加好类的构造方法,
(3).最后在onDraw方法中进行绘制操作.
3.案例讲解
如图所示,一个包含了圆形以及一个数字,看到此就要理解如何进行绘制顺序..
定义一个View类
public class CustomViews extends View { private Paint paint; private Rect rect; private int count; private int radius = 100; public CustomViews(Context context, AttributeSet attrs) { super(context, attrs); paint = new Paint(Paint.ANTI_ALIAS_FLAG); rect = new Rect(); new Thread(new Runnable() { @Override public void run() { while (true) { if (count >= 10) { count = 0; } count++; try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } postInvalidate(); } } }).start(); } public CustomViews(Context context) { super(context); } public CustomViews(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //画一个圆形 paint.setColor(Color.YELLOW); canvas.drawCircle(getWidth() / 2, getHeight() / 2, radius, paint); paint.setColor(Color.RED); paint.setTextSize(50); String counts = String.valueOf(count); // 处理字体的宽高 paint.getTextBounds(count + "", 0, counts.length(), rect); float textwidth = rect.width(); float textheight = rect.height(); canvas.drawText(count + "", (getWidth() - textwidth) / 2, (getHeight() + textheight) / 2, paint); } }
主要绘制过程在 onDraw 方法中,先去绘制一个圆形,然后绘制一个文本,,绘制过程中注意的细节问题,需要自己去把握了。
代码就不做更多讲解,重要的地方,在于拆分绘制图形的顺序..如何进行绘制。
4.案例源码
http://git.oschina.net/xiabing/TestDemoForview
5.常见问题
自定义view 常见会出现问题,各种异常解决分析,请查阅:Android异常汇集: /article/8268271.html
相关文章推荐
- Android 中实现5.0按钮水波纹反馈效果
- Android  draw canvas save restore saveLayer 学习
- android屏幕适配
- Android平台Camera实时滤镜实现方法探讨(六)--创建帧缓存对象(FBO)加速实时滤镜处理
- Android应用 中英文切换
- Android:用Handler实现异步处理功能
- android mediaplayer 实现歌曲边播放边下载
- android学习笔记(七):Handler消息传递机制
- android开发之软键盘控制
- Android之View基础总结(View的事件体系一)
- Android开发周报:弹幕源码开放送
- android launcher3拖放功能深入剖析
- 【转载】Android样式的开发:View Animation篇
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
- 给 Android 开发者的 RxJava 详解
- Android开发之Tools使用
- Android动画解析2-帧动画实现
- Android Studio的使用02-Can't resolve the symblo异常
- Android调用WebService(图文教程)
- Android URI简介