android 使用LinearGradient实现手机开机文字闪烁效果
2016-11-28 15:32
811 查看
LinearGradient:线性渐变意思,这个也是继承了Shader类,先看下它的构造函数:
public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, TileMode tile)
对构造函数进行简单的说明:
x0:起点x轴坐标
y0:起点y轴坐标
x1:终点x轴坐标
y1:终点y轴坐标
colors:颜色渐变值,这个和后面的positions值是对应的,
positions:颜色渐变百分比值
一张图说明问题:
现在要实现我们今天要讲的效果,代码如下:
效果:
ok!
public LinearGradient(float x0, float y0, float x1, float y1, int[] colors, float[] positions, TileMode tile)
对构造函数进行简单的说明:
x0:起点x轴坐标
y0:起点y轴坐标
x1:终点x轴坐标
y1:终点y轴坐标
colors:颜色渐变值,这个和后面的positions值是对应的,
positions:颜色渐变百分比值
一张图说明问题:
现在要实现我们今天要讲的效果,代码如下:
package com.bitmapshaderdemo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Shader; import android.util.AttributeSet; import android.view.View; /** * Created by admin on 2016/11/28. */ public class TextFlickerView extends View { private LinearGradient linearGradient; private String text = "今天杭州天气真好"; private Paint paint; private float strWidth; private Matrix matrix; private float translateX; private int signleTextWidth; private int count = 1;//一次性跑多少个文字的个数 public TextFlickerView(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { matrix = new Matrix(); paint = new Paint(); paint.setTextSize(30); paint.setColor(Color.RED); /** * (float x0, float y0, float x1, float y1, int[] colors, float[] positions, android.graphics.Shader.TileMode tile) */ strWidth = paint.measureText(text); signleTextWidth=(int) (count*strWidth/text.length());//计算一个文字的宽度 linearGradient = new LinearGradient(-signleTextWidth, 0, 0, 0, new int[]{0x22ffffff,0xffffffff,0x22ffffff}, new float[]{0,0.5f,1}, Shader.TileMode.CLAMP);//边缘融合 paint.setShader(linearGradient); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawText(text,0,100,paint); translateX += signleTextWidth;//每次平移一个文字的宽度 if(translateX>=strWidth){ signleTextWidth = -signleTextWidth; } if(translateX==0){ signleTextWidth = -signleTextWidth; } //实现平移一个文字的宽度 matrix.setTranslate(translateX, 0); linearGradient.setLocalMatrix(matrix); postInvalidateDelayed(100); } }
效果:
ok!
相关文章推荐
- LinearGradient和Matrix实现动态的文字闪烁效果
- android自定义TextView实现安卓手机开机android文字Log的动画效果
- android中使用LinearGradient实现渲染效果
- Android-LinearGradient实现TextView字体渐变的效果
- Android使用BroadcastReceiver实现手机开机之后显示画面的功能
- Android-LinearGradient实现TextView字体渐变的效果
- LinearGradient在android开发中实现字体渐变效果实例
- android使用TextView实现文字的跑马灯效果
- Android中使用TextView实现文字跑马灯效果
- Android开发 之 LinearGradient与闪动文字效果
- [Unity3D]手机3D游戏开发:如何实现最高分的存储与显示(六)----实现文字闪烁效果
- 举例说明BroadcastReceiver的使用方法----实现android手机开机之后显示画面的功能
- android 使用LinearGradient进行字体渐变的效果
- android 使用LinearGradient进行字体渐变的效果
- Android-利用LinearGradient实现文字一闪一闪
- 使用CSS3线性渐变(linear-gradient)实现文本波浪线效果
- 【Android 界面效果17】Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- linear-gradient实现纯CSS文字淡入效果
- android开发(46) 使用 textview实现文字的阴影效果,浮雕效果
- android中TextView的文字实现动态效果,走马灯效果,闪烁效果