Android自定義View繪製閃閃發光的文字
阿新 • • 發佈:2019-02-17
如何實現類似網頁效果中閃閃發光的文字,通過自定義View可以實現這一炫酷效果
1.自定義View
public class FlickTextView extends TextView { private int mViewWidth; private Paint mPaint; /** * 顏色漸變 */ private LinearGradient mLinearGradient; private Matrix mGradientMatrix; private float mTranslate; public FlickTextView2.在佈局檔案中引用(Context context) { super(context,null); } public FlickTextView(Context context, AttributeSet attrs) { super(context, attrs); } @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}, null, Shader.TileMode.CLAMP); mPaint.setShader(mLinearGradient); mGradientMatrix = new Matrix(); } } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(mGradientMatrix!=null){ mTranslate += mViewWidth/5; //當該控制元件渲染器的顏色變化正好移除螢幕時,從左側進入 if(mTranslate>2*mViewWidth){ mTranslate = - mViewWidth; } mGradientMatrix.setTranslate(mTranslate,0); mLinearGradient.setLocalMatrix(mGradientMatrix); //100ms 後繼續重新整理試圖,即呼叫onDraw()方法。 postInvalidateDelayed(100); } }
<com.example.mdw.scrollertest.FlickTextView android:layout_width="match_parent" android:layout_height="200dp" android:text="閃閃發光的文字" android:textSize="40dp" />