Android自定义View
本系列教程将通过对一系列Android自定义View的实例讲解,让Android开发者熟悉Android中自定义View的开发流程,涉及量算、布局、绘图、交互等
孙群
关注前端HTML5,关注地理数据可视化,热爱移动互联网,爱开源,爱分享!
展开
-
[GitHub开源]Android自定义View实现微信打飞机游戏
之前写了很多自定义View理论方面的文章,具体可以参见《Android中自定义View、ViewGroup理论基础详解》 。 理论指导实践,本博文演示了如何通过自定义View实现微信打飞机游戏。全部源码已经开源到GitHub,如果觉得不错,欢迎大家Star和Fork!GitHub: https://github.com/iSpring/GamePlane/游戏说明飞机一直发射子弹,用手指滑动可以原创 2016-07-24 17:26:21 · 11465 阅读 · 6 评论 -
Android中View自定义XML属性详解以及R.attr与R.styleable的区别
为View添加自定义XML属性Android中的各种Widget都提供了很多XML属性,我们可以利用这些XML属性在layout文件中为Widget的属性赋值。如下所示:<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:t原创 2016-03-02 00:59:55 · 40487 阅读 · 22 评论 -
Android中TouchEvent触摸事件机制
当我们的手指在Android屏幕上点击或滑动时,就会触发触摸事件TouchEvent。在App中ViewGroup和View存在多级嵌套,在最外层的是Activity,最内层的View,介于Activity与View之间的是一些ViewGroup。本文为了简化讨论,我们假设一个Activity中只有一个ViewGroup,这个ViewGroup中只有一个View。当我们用手指触摸到View的UI时,原创 2015-12-20 16:28:52 · 21182 阅读 · 6 评论 -
Android中的MotionEvent
译文:运动事件描述了动作的动作代码和一些列的坐标值。动作代码表明了当触点按下或者弹起等引起的状态变化。坐标值描述了位置信息以及以他的运动属性。例如,当用户第一次触摸屏幕的时候,系统给窗体发出一个触摸事件,动作代码为ACTION_DOWN,并提供了一些列的坐标值,比如触摸的X、Y坐标,接触区域的压力、尺寸、方向等信息。一些设备能够在同一时间报告多条运动轨迹。多点触控屏幕为每个手指都发出一翻译 2012-01-17 22:02:29 · 13441 阅读 · 3 评论 -
图文详解Andorid中用Shape定义GradientDrawable
Android中提供了各种类型的Drawable,也可以用XML定义各种Drawable。本文重点讲述如何用XML中的shape节点定义GradientDrawable。用XML定义的drawable文件放在res/drawable目录下。用XML文件定义GradientDrawable的语法如下所示:<?xml version="1.0" encoding="utf-8"?><shape原创 2016-01-01 16:30:33 · 14275 阅读 · 5 评论 -
Android中GPU硬件加速控制及其在2D图形绘制上的局限
图形的渲染可分为两种:软件渲染和硬件渲染。软件渲染是靠CPU计算各种坐标并绘制,主要是占用内存;硬件渲染是靠GPU,主要占用显存,一般的3D图形程序(OpenGL、DirectX)都是GPU加速的。在Android3.0之前,2D绘图API只支持软件渲染模式,从Android3.0开始,2D绘图API开始支持GPU硬件渲染,即View中的Canvas的绘图操作会使用GPU,所以从Android 3.原创 2015-11-14 12:58:00 · 12777 阅读 · 4 评论 -
Android中Canvas绘图之MaskFilter图文详解(附源码下载)
如果对Canvas绘图不熟悉,强烈建议您阅读博文《Android中Canvas绘图基础详解(附源码下载)》,该文对Android中的Canvas绘图基础进行了详细的描述。本文着重讲解如何使用MaskFilter创建模糊阴影以及浮雕效果。我们知道Canvas中的各种drawXXX方法决定了绘制的几何图形的形状,而画笔Paint则决定了以什么效果绘制这些图形。Paint中有一个setMaskFilter原创 2015-11-17 01:03:24 · 11451 阅读 · 9 评论 -
Android中Canvas绘图之Shader使用图文详解
概述我们在用Android中的Canvas绘制各种面图形时,可以通过Paint.setShader(shader)方法为画笔Paint设置shader,这样就可以绘制出多彩的图形。那么Shader是什么呢?做过GPU绘图的同学应该都知道这个词汇,Shader就是着色器的意思。我们可以这样理解,Canvas中的各种drawXXX方法定义了图形的形状,画笔中的Shader则定义了图形的着色、外观,二者结原创 2016-01-15 00:05:02 · 32867 阅读 · 14 评论 -
Android中Canvas绘图之PorterDuffXfermode使用及工作原理详解
概述类android.graphics.PorterDuffXfermode继承自android.graphics.Xfermode。在用Android中的Canvas进行绘图时,可以通过使用PorterDuffXfermode将所绘制的图形的像素与Canvas中对应位置的像素按照一定规则进行混合,形成新的像素值,从而更新Canvas中最终的像素颜色值,这样会创建很多有趣的效果。当使用PorterD原创 2016-01-11 00:05:14 · 50695 阅读 · 78 评论 -
Android中Canvas绘图基础详解(附源码下载)
Android中,如果我们想绘制复杂的自定义View或游戏,我们就需要熟悉绘图API。Android通过Canvas类暴露了很多drawXXX方法,我们可以通过这些方法绘制各种各样的图形。Canvas绘图有三个基本要素:Canvas、绘图坐标系以及Paint。Canvas是画布,我们通过Canvas的各种drawXXX方法将图形绘制到Canvas上面,在drawXXX方法中我们需要传入要绘制的图形的原创 2015-11-11 00:30:38 · 44640 阅读 · 48 评论 -
源码解析Android中View的layout布局过程
Android中的Veiw从内存中到呈现在UI界面上需要依次经历三个阶段:量算 -> 布局 -> 绘图,关于View的量算、布局、绘图的总体机制可参见博文 《 Android中View的布局及绘图机制》。量算是布局的基础,如果想了解量算的细节,可参见博文《源码解析Android中View的measure量算过程》。本文将从源码角度解析View的布局layout过程,本文会详细介绍View布局过程中的原创 2015-12-20 23:10:11 · 13662 阅读 · 9 评论 -
源码解析Android中View的measure量算过程
View的measure方法还是比较聪明的,知道如何偷懒利用以前量算过的数据,如果情况有变,那么就调用onMeasure方法进行实际的量算工作,在onMeasure中,View要根据父ViewGroup给其传递进来的widthMeasureSpec和heightMeasureSpec,并结合View自身想要的尺寸,综合考虑,计算出最终的量算的宽度和高度,并存储到相应的成员变量中,这才标志着该View量算有效的完成了,原创 2015-10-25 14:08:54 · 13237 阅读 · 21 评论 -
Android中View的量算、布局及绘图机制
1. Android自上而下对所有View进行量算,这样Android就知道了每个View想要的尺寸大小,即宽高信息2. 在完成了对所有View的量算工作后,Android会自上而下对所有View进行布局,Android就知道了每个View在其父控件中的位置,即View到其父控件四边的left、right、top、bottom3. 在完成了对所有View的布局工作后,Android会自上而下对所有View进行原创 2015-10-17 14:42:04 · 15999 阅读 · 12 评论 -
Android中自定义View、ViewGroup理论基础详解
Android自身提供了许多widgets,但是有时候这些widgets并不能满足我们的需求,这时我们就需要自定义View,本文会详细说明自定义View的各种理论基础,只有理解了这些知识,我们才能更好地实现各种功能的控件。我觉得自定义View中最重要的部分就是绘图和交互,自定义的绘图使得你的View与众不同,交互使用户可以与你的View进行交互,而绘图的前提是View的量算与布局,交互的基础是触摸事原创 2016-05-04 13:04:06 · 18676 阅读 · 6 评论