[进阶] UI - Android 自定义View
2018-03-16 09:57
337 查看
为什么需要自定义View
现有的View满足不了你的需求,也没有办法从已有控件派生一个出来;界面元素需要自己绘制。现有View可以满足要求,把它做成自定义View只是为了抽象
为这个自定义View提供若干方法,方便调用着操纵View。
通常做法是派生一个已有View,或者结合xml文件直接inflate。
Attention
能够用Android基础控件解决的问题就尽量用基础控件,其次是用基础控件的组合。如果是确实有必要自定义才考虑自定义。自定义的控件,既需要耗费较长的开发时间,又不一定能保证有基础控件那么高的效率(基础控件都是谷歌优化过了的)。
如何系统学习自定义控件
推荐资料Google Doc
Android技术专题 自定义View
自定义View系列教程
关键点
自定义控件的价值和使用场景三大方法: onMeasure,onLayout,Draw
自定义属性
事件传递
应用场景
组合控件:试题控件(TextView+VideoGroup)、下拉刷新、瀑布流控件、带左/右滑功能的控件、视频控件等。通过Android的基础控件(TextView、CheckBox、Button、ProgressBar等)组合而成,
完全自定义控件:继承自View、TextureView或SurfaceView,然后重写核心的回调方法。
比如:webview + loading动画(SurfaceView)、
比如输入法中的手写控件、图文混排控件(现在很多都是通过webview加载网页实现了)、词典取词控件、图表控件、个性化进度条、
弹幕显示控件、Markdown控件、IDE代码编辑控件等。
普通View适合于处理量比较小,帧率比较小的动画,比如说象棋游戏之类的
SurfaceView适合游戏,高品质动画方面的画图。因为SurfaceView中定义一个专门的线程来完成画图工作,不需要等待View的刷图,提高性能。
自定义View Class & 属性实践
How to create Customized View and 属性”key”.参看Google create-view
自定义View项目实践
Github Code优质开源库
awesome-android-ui : https://github.com/wasabeef/awesome-android-uiandroid-open-project : https://github.com/Trinea/android-open-project
Reference
如何系统学习自定义控件Android技术专题自定义View
推翻自己和过往,重学自定义View
深入了解View
Android 深入理解Android中的自定义属性
自定义View实战
相关文章推荐
- Android 开发进阶:自定义 View 1-3 文字的绘制
- Android进阶之自定义view(四)
- Android 开发进阶: 自定义 View 1-1 绘制基础
- Android自定义View进阶 - 贝塞尔曲线
- Android UI 绘制过程浅析(五)自定义View
- Android高手进阶教程(二十七)之---基于ViewFlipper实现的自定义新手指引控件.
- android UI进阶之自定义组合控件
- android 自定义控件3 - 自定义View进阶
- 【Android UI】自定义TextView实现动态的文字闪动效果
- android UI进阶之用ViewPager实现欢迎引导页面
- [AndroidUI]自定义view(一)
- Android UI设计之<四>自定义TextView属性,实现带边框效果的TextView
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android 自定义View (二) 进阶
- android UI进阶之用ViewPager实现欢迎引导页面
- android UI进阶之自定义组合控件
- Android 自定义View进阶
- Android UI系统控件进阶(三)—自动完成文本控件AutoCompleteTextView详解及属性
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
- Android高手进阶之自定义View,自定义属性(带进度的圆形进度条)