91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android Shader如何實現虹閃爍文字效果

發布時間:2021-07-21 14:29:58 來源:億速云 閱讀:153 作者:小新 欄目:移動開發

這篇文章給大家分享的是有關Android Shader如何實現虹閃爍文字效果的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體內容如下

package com.example.apple.shaderdemo;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Shader;
import android.support.annotation.Nullable;
import android.text.TextPaint;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * Created by apple on 2017/5/10.
 */

public class LinearGradientTextView extends TextView {
 private TextPaint mPaint;

 private LinearGradient mLinearGradient ;
 private Matrix mMatrix;

 private float mTranslate;
 private float DELTAX = 20;
 private int mGradientSize;

 public LinearGradientTextView(Context context) {
  super(context);
 }

 public LinearGradientTextView(Context context, @Nullable AttributeSet attrs) {
  super(context, attrs);
 }

 /**
  * 優先于onDraw執行,在這里得到系統繪制TextView的畫筆,然后給這個畫筆設置shader
  * 這樣下面在執行onDraw的時候,使用的就是帶有Shader效果的畫筆了
  * @param w
  * @param h
  * @param oldw
  * @param oldh
  */
 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  super.onSizeChanged(w, h, oldw, oldh);
  // ★拿到系統TextView的畫筆
  mPaint = getPaint();
//  得到文本
  String text = getText().toString();
//  用畫筆測量文本的長度
  float textWith = mPaint.measureText(text);
  // 3個文字的寬度
  mGradientSize = (int) (textWith / text.length() * 3);

  // 從左邊-gradientSize開始,即左邊距離文字gradientSize開始漸變
  // 一個漸變單位是:從第一個字之前3字距離開始到第一個字之前位置終結
  //然后一直讓這個漸變單位從左往右移動dx位移,直到最右側后,向左移動
  // CLAMP意思是:由于你的只是在漸變3個字的長度,那么剩余的空間,讓邊緣顏色去填充
  mLinearGradient = new LinearGradient(-mGradientSize,0,0,0,new int[]{
    0xffff0000, 0xff00ff00, 0xff00ffff},null, Shader.TileMode.CLAMP
  );

  mPaint.setShader(mLinearGradient);
 }

 @Override
 protected void onDraw(Canvas canvas) {
//  調用super,意思是按照系統繪制textview的流程先把textview繪制完成
  super.onDraw(canvas);

//  我在系統基礎上再繪制一些效果


  mTranslate += DELTAX;
  float textWidth = getPaint().measureText(getText().toString());
//  到了邊界dx取反
  if(mTranslate > textWidth + mGradientSize || mTranslate < 0){
   DELTAX = - DELTAX;
  }
//  不停地方平移,得到閃爍的效果
  mMatrix = new Matrix();
  mMatrix.setTranslate(mTranslate, 0);
  mLinearGradient.setLocalMatrix(mMatrix);
//  延時重繪
  postInvalidateDelayed(50);

 }
}

感謝各位的閱讀!關于“Android Shader如何實現虹閃爍文字效果”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

渭南市| 宁安市| 临猗县| 常德市| 稻城县| 马山县| 长丰县| 区。| 思南县| 东光县| 万盛区| 清原| 昌黎县| 南康市| 金阳县| 定州市| 鄂托克前旗| 固阳县| 青岛市| 隆安县| 益阳市| 宜宾市| 雅安市| 耒阳市| 潍坊市| 尉氏县| 扎鲁特旗| 霸州市| 苗栗市| 荆州市| 乐清市| 西城区| 鹤壁市| 民丰县| 随州市| 榆林市| 遂宁市| 西贡区| 十堰市| 高陵县| 太原市|