Android-滑动解锁高亮文字自定义TextView
生活随笔
收集整理的這篇文章主要介紹了
Android-滑动解锁高亮文字自定义TextView
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
public class HightLightTextView extends TextView {// 存儲view的寬度 private int mTextViewWidth = 0;// 畫筆 private Paint mPaint;// 線性渲染 private LinearGradient mLinearGradient;// 存儲變換的matrix private Matrix matrix;// 移動距離 private int mTranslateX = 0;// 構(gòu)造方法 public HightLightTextView(Context context) {this(context, null);}public HightLightTextView(Context context, AttributeSet attrs) {this(context, attrs, 0);}public HightLightTextView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);}/*** view的調(diào)用過程:構(gòu)造方法->onFinishInflate->onSizeChanged->onDraw*/@Overrideprotected void onSizeChanged(int w, int h, int oldw, int oldh) {super.onSizeChanged(w, h, oldw, oldh);// 獲取view的寬度,初始化畫筆等初始屬性 if (mTextViewWidth == 0) {mTextViewWidth = getMeasuredWidth();// 如果寬度大于0的話,則初始化 if (mTextViewWidth > 0) {// 初始化畫筆 mPaint = getPaint();// 線性渲染 mLinearGradient = new LinearGradient(0, getMeasuredHeight(), mTextViewWidth, 0,new int[]{0X55FFFFFF, 0XFFFFFFFF, 0X55FFFFFF},new float[]{0, 0.5f, 1}, Shader.TileMode.CLAMP);mPaint.setShader(mLinearGradient);matrix = new Matrix();}}}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);if (matrix != null) {mTranslateX += mTextViewWidth / 10;// 如果移動的距離大于兩倍的寬度,則重新開始移動 if (mTranslateX > 2 * mTextViewWidth) {mTranslateX = -mTextViewWidth;}// 平移matrix matrix.setTranslate(mTranslateX, 0);// 設(shè)置線性變化的matrix
mLinearGradient.setLocalMatrix(matrix);// 延遲50ms重繪 (重繪時會重新調(diào)用onDraw)postInvalidateDelayed(50);}}}
?
轉(zhuǎn)載于:https://www.cnblogs.com/819158327fan/p/8554891.html
總結(jié)
以上是生活随笔為你收集整理的Android-滑动解锁高亮文字自定义TextView的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (转载)Linux多线程实现
- 下一篇: Android studio 报错AAP