国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android 自定義TextView實現滑動解鎖高亮文字

2019-10-22 18:13:37
字體:
來源:轉載
供稿:網友

下面一段代碼給大家分享Android 自定義TextView實現android/301332.html">android/54968.html">滑動解鎖高亮文字效果,具體代碼如下所示:

public class HightLightTextView extends TextView {  // 存儲view的寬度   private int mTextViewWidth = 0;  // 畫筆   private Paint mPaint;  // 線性渲染   private LinearGradient mLinearGradient;  // 存儲變換的matrix   private Matrix matrix;  // 移動距離   private int mTranslateX = 0;  // 構造方法   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的調用過程:構造方法->onFinishInflate->onSizeChanged->onDraw   */  @Override  protected 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();      }    }  }  @Override  protected void onDraw(Canvas canvas) {    super.onDraw(canvas);    if (matrix != null) {      mTranslateX += mTextViewWidth / 10;      // 如果移動的距離大于兩倍的寬度,則重新開始移動       if (mTranslateX > 2 * mTextViewWidth) {        mTranslateX = -mTextViewWidth;      }      // 平移matrix       matrix.setTranslate(mTranslateX, 0);      // 設置線性變化的matrix       mLinearGradient.setLocalMatrix(matrix);      // 延遲50ms重繪 (重繪時會重新調用onDraw)      postInvalidateDelayed(50);    }  }}

補充:

Android TextView指定關鍵字高亮顯示

項目中有這個需求,網上搜了一把,方法挺多的,這里選擇一個簡單的,已驗證可用的方法,記錄下,方便以后查閱。

TextView tv = (TextView) findViewById(R.id.hello); SpannableString s = new SpannableString(getResources().getString(R.string.linkify)); Pattern p = Pattern.compile("abc"); Matcher m = p.matcher(s); while (m.find()) { int start = m.start(); int end = m.end(); s.setSpan(new ForegroundColorSpan(Color.RED), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } tv.setText(s); 

很簡單,tv就是TextView控件,s是要顯示的字符串,“abc”是要高亮顯示的關鍵字。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英山县| 凤冈县| 含山县| 汨罗市| 泗水县| 桦甸市| 普安县| 兰坪| 略阳县| 黄冈市| 长阳| 阿图什市| 灵丘县| 安图县| 朝阳市| 辽宁省| 西林县| 延长县| 临沭县| 绥阳县| 兴国县| 平湖市| 榕江县| 怀安县| 许昌市| 甘谷县| 河西区| 伊春市| 衢州市| 黄浦区| 东丰县| 外汇| 宾川县| 盱眙县| 东城区| 大竹县| 昌吉市| 河间市| 鸡泽县| 昌宁县| 遂溪县|