Android 自定义View 总结
Android系统本身给我们提供十分丰硕的组件让我们实现包罗万象的UI效果,与此同时,我们也能够非常方便实现各种方法来实现各种强大的功能。通过继承现有的UI控件,我们也能够拓展现有的功能。我们也能够完全自定义控件,实现Android系统所没有的功能。自定义控件,对于Android初学者来说,是一个老大难的问题。其实,自定义控件没有那么困难。与其说你在自定义一个view,倒不如说你在绘画一个图形。只有站到艺术的角度,才能创建有一个更好用户体验的控件。自定义控件,应该不是一些简单API的堆砌,而应该结合现实中的绘图方法,甚至结合ps的一些技巧,才能创造出更有用户体验的View。
就像我们写文章一样,合理适当的运用词语,会为我们文章增色不少,而一味追求堆砌华丽的辞藻,则给人一个华而不实的感觉。与此类似,适当使用View,能极大的提升的用户体验,但一味的乱用自定义View则会有些画蛇添足的感觉。一个让用户感到亲切友好的控件,才是好控件。一个酷炫屌咋天控件,会或多或少给人一种华而不实感觉。况且,Android兼容性千差万别,你难免无法保证您自定义的View在其他手机上达到想要的效果,一个好控件更是应该是以稳定性,健壮性为基础。
当然了,深入自定义View的本身过程,能帮助我们更加深入Android View绘制机制。同时,适当合理的使用自定义控件,达到一种卓越的用户体验,应该是我们每个Android人所梦寐以求的结果。
通常而言,可以使用三种方法实现自定义控件
1、继承现成控件,进行拓展。
2、组合现有控件。
3、重写View/ViewGroup实现全新的控件。
最难就是第三钟方法实现全新控件。
其实实现全新的自定义控件,总结起来就那么几步。
Ⅰ、在OnMeasure()方法中,测量自定义控件的大小,使自定义控件能够自适应布局各种各样的需求。
Ⅱ、在OnDraw()方法中,利用哼哈二将(Canvas与Paint)来绘制要显示的内容。
Ⅲ、在OnLayout()方法中来确定控件显示位置。
Ⅳ、在OnTouchEvent()方法处理控件的触摸事件。
相应的思维导图如下:
这就是我对自定义View的总结,本人才疏学浅,欢迎大家吐槽。
Android 自定义View 总结的更多相关文章
- Android自定义View 画弧形,文字,并增加动画效果
一个简单的Android自定义View的demo,画弧形,文字,开启一个多线程更新ui界面,在子线程更新ui是不允许的,但是View提供了方法,让我们来了解下吧. 1.封装一个抽象的View类 B ...
- (转)[原] Android 自定义View 密码框 例子
遵从准则 暴露您view中所有影响可见外观的属性或者行为. 通过XML添加和设置样式 通过元素的属性来控制其外观和行为,支持和重要事件交流的事件监听器 详细步骤见:Android 自定义View步骤 ...
- Android 自定义View合集
自定义控件学习 https://github.com/GcsSloop/AndroidNote/tree/master/CustomView 小良自定义控件合集 https://github.com/ ...
- Android 自定义View (五)——实践
前言: 前面已经介绍了<Android 自定义 view(四)-- onMeasure 方法理解>,那么这次我们就来小实践下吧 任务: 公司现有两个任务需要我完成 (1)监测液化天然气液压 ...
- Android 自定义 view(四)—— onMeasure 方法理解
前言: 前面我们已经学过<Android 自定义 view(三)-- onDraw 方法理解>,那么接下我们还需要继续去理解自定义view里面的onMeasure 方法 推荐文章: htt ...
- Android 自定义 view(三)—— onDraw 方法理解
前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view<Android 自定义view(二) -- attr 使用>,那么接下来我们继续深究自定义view,下一步将要去简单理解自 ...
- Android 自定义view(二) —— attr 使用
前言: attr 在前一篇文章<Android 自定义view -- attr理解>已经简单的进行了介绍和创建,那么这篇文章就来一步步说说attr的简单使用吧 自定义view简单实现步骤 ...
- Android 自定义View
Android 自定义View流程中的几个方法解析: onFinishInflate():从布局文件.xml加载完组件后回调 onMeasure() :调用该方法负责测量组件大小 onSizeChan ...
- Android自定义View之CircleView
Android自定义View之CircleView 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/5999 ...
- Android 自定义View及其在布局文件中的使用示例(三):结合Android 4.4.2_r1源码分析onMeasure过程
转载请注明出处 http://www.cnblogs.com/crashmaker/p/3549365.html From crash_coder linguowu linguowu0622@gami ...
随机推荐
- 统一资源定位符URL类
package j2se.core.net.base; import java.io.BufferedReader;import java.io.IOException;import java.io. ...
- ReferenceQueue<T>随笔
参考资料: ReferenceQueue食用手册 java引用食用手册 ReferenceQueue源代码里面很好的展示了java队列的实现思路, 以及多线程观察者的实现思路 多线程观察者实现思路: ...
- easyui datagrid 加载两次请求,触发两次ajax 请求 问题
datagrid初始化的时候请求两次URL 两种情况 1. <table id="gridview" class="easyui-datagrid"> ...
- tomcat 内存问题 xms xmx permsize maxPermsize
转自:http://www.cnblogs.com/koik/p/4452029.html tomcat -Xms -Xmx -XX:PermSize -XX:MaxPermSize 在做ja ...
- 多次drawRect,显示重叠,需要设置背景颜色
自己写的一个控件,中途在setNeedsDisplay,重写drawRect方法,有时会把以前drawRect绘制上去,不知道为什么,后来设置了控件的背景颜色backgroundcolor,这个问题就 ...
- Codeforces Round #379 (Div. 2) Analyses By Team:Red & Black
A.Anton and Danik Problems: 给你长度为N的,只含'A','D'的序列,统计并输出何者出现的较多,相同为"Friendship" Analysis: lu ...
- The Template method pattern
public class TemplateMethodDemo { public static void main(String[] args) { Teacher test=new Javatrea ...
- mysql字段类型
会安装mysql,会几条sql语句,会jdbc,会hibernate配置,以为就会mysql了,最近几天面试被问到mysql的问题,无地自容,系统的学习一下. mysql优化之一,选择合适的而不是最大 ...
- Memcached服务介绍及安装指南
一.memcached服务介绍 1.为什么需要memcached服务 A:第一种场景 网站访问大多数情况下都需要查询数据库操作,如果网站的流量很大并且大多数的访问会造成数据库高负荷的状况下,由于大部分 ...
- jboss 7 启动问题
19:30:50,176 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA19:30:50,458 INFO [org.jboss.msc ...