Android自定义View之闪动的TextView
2016-04-12 15:43
399 查看
Android自定义View之闪动的TextView
利用LinearGradient实现TextView的色值的渐变渲染。LinearGradient简介
LinearGradient mLinearGradient = new LinearGradient(0,0,mViewWidth,0,new int[]{Color.BLUE,0xffffffff,Color.BLUE},new float[]{0.0f,0.5f,1.0f}, Shader.TileMode.CLAMP);
创建LinearGradient并设置渐变颜色数组
第一个,第二个参数表示渐变起点 可以设置起点终点在对角等任意位置
第三个,第四个参数表示渐变终点
第五个参数表示渐变颜色
第六个参数可以为空,表示坐标,值为0-1 new float[] {0.25f, 0.5f, 0.75f, 1 } 如果这是空的,颜色均匀分布,沿梯度线。
第七个表示平铺方式
CLAMP重复最后一个颜色至最后
MIRROR重复着色的图像水平或垂直方向已镜像方式填充会有翻转效果
REPEAT重复着色的图像水平或垂直方向
实现渐变TextView效果
新建FlashBackGroundTextView,继承自TextView并重写
onDraw和
onSizeChanged方法,声明变量如下:
private Paint mPaint; private LinearGradient mLinearGradient = null; private int mViewWidth; private Matrix mGradientMatrix = null; private int mTranslateSpeed; private boolean mAnimating = true;
修改
onSizeChanged方法如下:
@Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if (mViewWidth == 0){ mViewWidth = getMeasuredWidth(); if (mViewWidth > 0){ mPaint = getPaint(); mLinearGradient = new LinearGradient(0,0,mViewWidth,0,new int[]{Color.BLUE,0xffffffff,Color.BLUE},new float[]{0.0f,0.5f,1.0f}, Shader.TileMode.CLAMP); mPaint.setShader(mLinearGradient); mGradientMatrix = new Matrix(); } } }
这里我们通过
getPaint方法取得当前绘制TextView的Paint对象并为其设置了渐变渲染器(
setShader)。
修改
onDraw方法如下:
@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if (mAnimating && mGradientMatrix != null){ mTranslateSpeed += mViewWidth/10; if(mTranslateSpeed > 2*mViewWidth){ mTranslateSpeed = 0; } mGradientMatrix.setTranslate(mTranslateSpeed,0); mLinearGradient.setLocalMatrix(mGradientMatrix); postInvalidateDelayed(100); } }
至此,我们就完成了一个闪动的TextView,效果图如下:
LinearGradient 第六个参数为new float[]{0.0f,0.5f,1.0f}的效果:
LinearGradient 第六个参数为null的效果:
完整代码下载
相关文章推荐
- 自定义dialog,再次点击让dialog消失
- 寻找android中的设计模式(二)
- 简析Android的垃圾回收与内存泄露
- android 百度地图路径规划问题(第一篇)
- android:windowSoftInputMode属性详解
- Android高效加载大图、多图解决方案,有效避免程序OOM
- Android应用中使用TabHost组件继承TabActivity的布局方法
- android的消息机制处理
- android studio常用设置-代码格式化mac
- 关于Xamarin.Android ListView图片加载+Android-Universal-Image-Loader框架
- 国内优秀的安卓资源转载
- android自定义属性的使用
- Android RecyclerViewStickyHeaders 使用Demo
- android中listview分页加载数据
- Android 崩溃报错捕捉,并且友好提示!(不是CrashHandler)
- Android应用坐标系统全面详解
- Android在线支付
- Android TypedArray详情
- RxAndroid的初体验
- Android屏幕适配全攻略(最权威的官方适配指导)