View ViewBitmapView Value Animator animator Value Animator of
动画 根据一个变化量(比如时间、手指移动距离)进行相应的界面改变(比如移动、旋转、透明度变化等)。 在View级别做动画,方便。 在绘图级别做动画,可以有更多动画能力。 可通过得到View内容的Bitmap,对现有View做绘图级的动画。 绘图级别动画示例: Value. Animator animator = Value. Animator. of. Float(1 f, 0 f); animator. start(); invalidate(); . . . protected void on. Draw(Canvas canvas) { if (animator. is. Running()) { float value = (Float)animator. get. Animated. Value(); canvas. rotate(value*360); canvas. draw. Bitmap(bitmap, 0, 0, null); } }. . . invalidate();
Android图形API Canvas. draw* Point/s Line/s Rect, Round. Rect, Circle, Oval, Arc, Path Text Bitmap, Bitmap. Mesh Color, Paint
Android图形API 填充色:set. Color or set. Shader (设置Shader后,Color的alpha仍会生效,RGB无效) Bitmap. Shader, Linear. Gradient, Radial. Gradient, Sweep. Gradient, Compose. Shader Bitmap. Shader比直接draw. Bitmap多哪些能力: 1. Tile控制:重复、镜面重复。 2. 绘制各种形状下的图片,draw. Bitmap只限于矩形。 3. 配合Compose. Shader,可和其他Shader一起用Porter. Duff模式混合。(比如做渐变倒影 )
Android图形API 整体的颜色处理: set. Color. Filter:Lighting. Color. Filter, Porter. Duff. Color. Filter, Color. Matrix. Color. Filter Color. Matrix: R' = a*R + b*G + c*B + d*A + e; G' = f*R + g*G + h*B + i*A + j; B' = k*R + l*G + m*B + n*A + o; A' = p*R + q*G + r*B + s*A + t; 可用来改变色相、饱和度、亮度等。 Color. Matrix的详细介绍及在线实验:http: //www. adobe. com/devnetarchive/flash/articles/matrix_transformations_04. html
Android图形API
样例 桌面图标按下态 Color. Filter法 三种Color. Filter在这里都可以达到效果:Lighting. Color. Filter, Porter. Duff. Color. Filter,Color. Matrix. Color. Filter。 Lighting. Color. Filter(0 xff 555555, 0 x 0000) Porter. Duff. Color. Filter(0 x. AA 000000, Mode. SRC_ATOP) Color. Matrix. Color. Filter(new float[]{ 0. 3 f, 0 f, 0 f, 0 f, 0. 3 f, 0 f, 0 f, 0 f, 1 f, 0 f, })
样例 倒影 分析 逐个像素更改可以。 Drawable层层绘制可以。 Compose. Shader一次绘制也可以:Compose. Shader:Linear. Gradient+Bitmap. Shader(SRC_IN) [备注:scale(1, -1)会使绘制是倒过来的。] DEMO: [jb 44_n 7 Pad版] /packages/apps/Miui. System. UI/packages/System. UI/src/com/android/systemui/taskmanager/Mirror. View. java
谢谢观看 Q&A zhucai@gmail. com
- Slides: 32