Android平台下实现渐变效果。在android.graphics中我们可以找到有关Gradient字样的类,比如LinearGradient 线性渐变、RadialGradient径向渐变和 角度渐变SweepGradient 三种,他们的基类为android.graphics.Shader。为了显示出效果,使用一个简单的例子来说明。
一、LinearGradient线性渐变
在android平台中提供了两种重载方式来实例化该类分别为,他们的不同之处为参数中第一种方法可以用颜色数组,和位置来实现更细腻的过渡效果,比如颜色采样int[] colors数组中存放20种颜色,则渐变将会逐一处理。而第二种方法参数仅为起初颜色color0和最终颜色color1。
LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, Shader.TileMode tile)
LinearGradient(float x0, float y0, float x1, float y1, int color0, int color1, Shader.TileMode tile)
使用实例如下:
Paint p=new Paint();
LinearGradient lg=new LinearGradient(0,0,100,100,Color.RED,Color.BLUE,Shader.TileMode.MIRROR); //
参数一为渐变起初点坐标x位置,参数二为y轴位置,参数三和四分辨对应渐变终点,最后参数为平铺方式,这里设置为镜像.
刚才Android开发网已经讲到Gradient是基于Shader类,所以我们通过Paint的setShader方法来设置这个渐变,代码
如下:
p.setShader(lg);
canvas.drawCicle(0,0,200,p); //参数3为画圆的半径,类型为float型。
二、 RadialGradient镜像渐变
有了上面的基础,我们一起来了解下径向渐变。和上面参数唯一不同的是,径向渐变第三个参数是半径,其他的和线性渐变
相同。
RadialGradient(float x, float y, float radius, int[] colors, float[] positions, Shader.TileMode tile)
RadialGradient(float x, float y, float radius, int color0, int color1, Shader.TileMode tile)
三、 SweepGradient角度渐变
对于一些3D立体效果的渐变可以尝试用角度渐变来完成一个圆锥形,相对来说比上面更简单,前两个参数为中心点,然后通过载入的颜色来平均的渐变渲染。
SweepGradient(float cx, float cy, int[] colors, float[] positions) //对于最后一个参数SDK上的描述为May be NULL. The relative position of each corresponding color in the colors array, beginning with 0 and ending with 1.0. If the values are not monotonic, the drawing may produce unexpected results. If positions is NULL, then the colors are automatically spaced evenly.,所以Android123建议使用下面的重载方法,本方法一般为NULL即可。
SweepGradient(float cx, float cy, int color0, int color1)
或者直接创建一个drawable:
- <span style="font-size: small;"> public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- requestWindowFeature(Window.FEATURE_NO_TITLE);
- getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN ,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
- setContentView(R.layout.login);
- GradientDrawable grad = new GradientDrawable(
- Orientation.TOP_BOTTOM,
- new int[]{Color.BLACK, Color.WHITE}
- );
- getWindow().setBackgroundDrawable(grad);
- }</span>
相关推荐
android 自定义属性实现 ImageView 透明度渐变效果
android自定义ProgressView长条渐变色的进度条,实现渐变色的效果,不适用一张图片实现! 具体思路:http://blog.csdn.net/springsky_/article/details/17954765
LinearGradient实现TextView字体渐变的效果
左图是带渐变效果,右图是不带渐变效果。原理还是绘图,Canvas可以绘制的对象有:弧线(arcs)、填充颜色(argb和color)、 Bitmap、圆(circle和oval)、点(point)、线(line)、矩形(Rect)、图片(Picture)、圆角矩形 ...
之前又看到网上有朋友做过相关案例,不过是通过滚动listview来监听实现标题栏渐变,但不是我想要的效果,我要的效果是通过滚动scrollview来实现标题栏颜色渐变效果,这才是我要的效果,1个积分意思一下O(∩_∩)O哈哈...
android实现TextView文字部分渐变色;LinearGradientFontSpan SpannableString
Android动画效果--渐变动画,包括Alpha渐变、scale渐变、translate渐变、rotate渐变。并有两种实现动画方式:Java Code实现和XML实现。
NULL 博文链接:https://byandby.iteye.com/blog/828799
Android中实现椭圆形的绘制很简单,只需要调用canvas.drawOval()就可以了,但是椭圆形的中心发散渐变效果Android自带的API里面却是没有的,需要自己费点功夫来实现下了。这个资源,就是我花了两三天时间实现的这个...
android仿淘宝等滑动渐变效果,虽然界面很丑,不过功能还算完成了,请忽视界面,因为真的很丑,毕竟审美水平有限,凑合着看吧!
Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效
android夜间模式切换,颜色渐变效果实现 博客地址:http://blog.csdn.net/tyzlmjj/article/details/49255019
android中实现滑动标题栏颜色渐变(scrollview):实现滚动scrollview来改变标题栏的颜色
SwipeCardView是基于Diolor的Swipecards控件改进实现,SwipeCardView是一个优雅的刷脸控件,滑动刷脸伴随渐变层叠动画,带来前所未有的滑动刷脸体验。 thanks Diolor Swipecards Screenshot Relative Project ...
主要为大家详细介绍了Android Textview实现颜色渐变滚动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android——实现光点模糊渐变的自旋转圆环特效,实现水滴波纹特效的源代码。 博客地址:http://blog.csdn.net/qq_22770457?viewmode=contents
在切换的时候,Tab下划线跟着手指滑动的比例而滑动,相关的两个Tab的文字的颜色根据手指的滑动,而发生颜色渐变的改变。
主要介绍了Android实现歌词渐变色和进度的效果的相关资料,需要的朋友可以参考下
Android仿微信底部切换渐变效果,仅仅100行代码即可实现