【Android学习】动态文字闪动效果

在学安卓之前有在其他网站上看到闪动文字的自定义控件,感觉很炫酷,高大上。

直到我看了《Android群英传》,这本书真不错,强烈推荐。

新手进阶很有帮助。

效果:

【Android学习】动态文字闪动效果_第1张图片



书中原文:

利用Paint对象的Shader渲染器。

先在onSizeChanged里进行初始化,根据View的宽设置LinearGradient渐变渲染器。

其中最关键的就是使用【getPaint()】方法获得当前回执TextView的Paint对象,并给这个Paint对象设置原生TextView没有的LinearGradient属性。

在onDraw方法中通过矩阵的方式来不断平移渐变效果。


代码:


private int mViewWidth, mTranslate;  
	private Matrix mGradientMatrix;

	private Paint mPaint;
	private LinearGradient mLinearGradient;  //渐变渲染器

	@Override
	protected void onDraw(Canvas canvas)
	{
		// TODO Auto-generated method stub
		super.onDraw(canvas);

		if (mGradientMatrix != null)
		{
			mTranslate += mViewWidth / 5;
			if (mTranslate > 2 * mViewWidth)
			{
				mTranslate = -mViewWidth;
			}
			mGradientMatrix.setTranslate(mTranslate,0);
			mLinearGradient.setLocalMatrix(mGradientMatrix);
			postInvalidateDelayed(100);
		}
	}

	@Override
	protected void onSizeChanged(int w, int h, int oldw, int oldh)
	{
		// TODO Auto-generated method stub
		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.GRAY, 0xffffffff,Color.GRAY }, null, Shader.TileMode.CLAMP);
				mPaint.setShader(mLinearGradient);
				mGradientMatrix = new Matrix();
			}
		}
	}


你可能感兴趣的:(【Android学习】动态文字闪动效果)