转自:http://www.imobilebbs.com/wordpress/?p=1620

看到这个例子的标题RoundRects,我的第一感觉是介绍RoundRectShape, 打开例子看了代码却是使用GradientDrawable来实现的。

GradientDrawable 支持使用渐变色来绘制图形,通常可以用作Button或是背景图形。

GradientDrawable允许指定绘制图形的种类:LINE,OVAL,RECTANGLE或是RING,颜色渐变支持LINEAR_GRADIENT,RADIAL_GRADIENT和SWEEP_GRADIENT。

其中在使用RECTANGLE(矩形),还允许设置矩形四个角为圆角,每个圆角的半径可以分别设置:

public void setCornerRadii(float[] radii)

radii 数组分别指定四个圆角的半径,每个角可以指定[X_Radius,Y_Radius],四个圆角的顺序为左上,右上,右下,左下。如果X_Radius,Y_Radius为0表示还是直角。

颜色渐变的方向由GradientDrawable.Orientation定义可以有如下八种:

RoundRects_第1张图片" width="357" height="231" style="border:1px solid black;">看一下GradientDrawable的构造函数:

public GradientDrawable(GradientDrawable.Orientationorientation, int[] colors)

orientation指定了渐变的方向(以上八种),渐变的颜色由colors数组指定,数组中的每个值为一个颜色。

本例定义一个渐变方向从组左上到右下,渐变颜色为红,绿,蓝三色:

1 2 3 mDrawable = new GradientDrawable(GradientDrawable.Orientation.TL_BR, new int [] { 0xFFFF0000 , 0xFF00FF00 , 0xFF0000FF });

分别使用Liner,Radial 和Sweep三种渐变模式,并配合指定矩形四个角圆角半径,显示GradientDrawable的不同用法:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT); setCornerRadii(mDrawable, r, r, 0 , 0 ); mDrawable.draw(canvas); ... mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT); setCornerRadii(mDrawable, 0 , 0 , r, r); mDrawable.draw(canvas); ... mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT); setCornerRadii(mDrawable, 0 , r, r, 0 ); mDrawable.draw(canvas); ... mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT); setCornerRadii(mDrawable, r, 0 , 0 , r); mDrawable.draw(canvas); ... mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT); setCornerRadii(mDrawable, r, 0 , r, 0 ); mDrawable.draw(canvas); ... mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT); setCornerRadii(mDrawable, 0 , r, 0 , r); mDrawable.draw(canvas); ... static void setCornerRadii(GradientDrawable drawable, float r0, float r1, float r2, float r3) { drawable.setCornerRadii( new float [] { r0, r0, r1, r1, r2, r2, r3, r3 }); }

RoundRects_第2张图片" width="332" height="491" style="border:1px solid black;">

更多相关文章

  1. Radial GradientDrawable兼容问题
  2. android TextView 改变边框
  3. 64位系统中安装Android(安卓)SDK“系统找不到指定的文件Java.exe
  4. Android(安卓)生成随机颜色值
  5. Android基础教程(二)之五大布局对象
  6. monkey工具简介
  7. Android(安卓)activity 转场动画ActivityOptions
  8. android中怎样将文件放入sdcard
  9. Android中的签名

随机推荐

  1. 随着窗口变大,div的左边距也拉大
  2. 重写ajax方法实现异步请求session过期时
  3. 使用jQuery.ajax post函数将javascript数
  4. [置顶] jquery学习之路 初识jq
  5. jQuery在元素内部检测mousedown,然后在元
  6. Jquery实现表格行的添加、删除
  7. 在Access中利用Jquery技术实现专业的界面
  8. 如何使用特定样式获取jquery中的第一个和
  9. jQuery插件制作备忘
  10. Jquery插件Thickbox的使用总结及自定义设