看到这个例子的标题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定义可以有如下八种:
看一下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 });
}
|
分享到:
相关推荐
Android自定义View中,使用RadialGradient来实现椭圆形的放射性渐变效果。 Android中实现椭圆形的绘制很简单,只需要调用canvas.drawOval()就可以了,但是椭圆形的中心发散渐变效果Android自带的API里面却是没有的,...
Android-GradientDrawable调谐器可以帮助你更直观的理解中各种属性的作用。
Android中使用Shape自定义形状
一直都用的.XML文件处理圆角与色彩或色彩渐变,觉得很不方便,后来发现了GradientDrawable这个类,就整了个工具类,用起来觉得挺方便 效果图: 下面贴代码: public class DrawCorner { /** * 默认绘制圆角函数...
android系统的textview组件的属性详解。和大家一起分享。
android 代码实现shape GradientDrawable
主要介绍了Android动画之渐变动画(Tween Animation)用法,结合实例形式详细分析了Android渐变动画Tween Animation实现渐变,缩放,位移,旋转等技巧,需要的朋友可以参考下
GradientColorAnimation 渐变颜色的动画。
背景颜色实现起来很容易,用GradientDrawable在主色之间分段渐变即可,上方的背景色是永远不变的。下方平衡调节只要在白色、选定色和黑色之间渐变即可,下方的颜色随着上方的颜色变化而变化。 颜色条自身控件由于...
翻页效果,导入源码即可运行。 package sf.hmg.turntest; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import ...
带阴影特效的Android翻书 、翻页效果,在安卓手机中似乎很常见的翻页方式。通过本效果的学习可了解有关拖拽点、贝塞尔曲线控制等知识。Author : hmg25 Version: 1.0 Description : 计算拖拽点对应的拖拽脚、求解直线...
android Bitmap圆角与倒影的具体实现代码,需要的朋友可以参考一下
有些App在点击下载按钮的时候,可以在按钮上显示进度,我们可以通过...GradientDrawable设置颜色、圆角等参数,当然你也可以直接加载xml作为背景。 3.自定义参数: 在values目录建一个attrs.xml文件 <?xml version
import android.graphics.drawable.GradientDrawable; import android.graphics.drawable.StateListDrawable; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android....
Get confusing about the drawable in Android? Try playing with GradientDrawableTuner! With the GradientDrawableTuner, you can see how the properties of GradientDrawable affect the Drawable's appearance...
这个程序是对android的部分Drawable的实现。包括了BitmapDrawable,InsetDrawable,ClipDrawable,TransitionDrawable,GradientDrawable,ScaleDrawable,LevelListDrawable,StateListDrawable,layerDrawable。 ...
通过封装GradientDrawable、StateListDrawable 、LayerDrawable 代替每次都需要创建一个shape.xml的不便,一定程度上也可以减少apk体积,并且使用简单。 基于此项目拓展的多功能EastTextView已开源,欢迎使用 >...
5.4. 扩展 ViewGroup 类 ....................... 169 5.4.1. 原理分析 .............................. 169 5.4.2. 示例分析 .............................. 170 5.4.3. 运行效果 .............................. ...
主要是Drawable所使用类如下:ShapeDrawable、RoundRectShape、GradientDrawable、ClipDrawable、LayerDrawable、StateListDrawable效果图引入 implementation 'com.mylhyl:circleDialog:5.3.7.1'如果版本号后面有-...
代码如下:public class PageWidget extends View { private Bitmap foreImage;... private GradientDrawable shadowDrawableRL; private GradientDrawable shadowDrawableLR; private ColorMatrixCo