閃動文字效果


自定義一個View

public class MyView extends TextView {

private int mViewdWidth;
private TextPaint mPaint;
private LinearGradient mLinearGradient;
private Matrix matrix;
private int mTranslate = 0;

@SuppressLint("NewApi")
public MyView(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}

public MyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
}

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

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}

@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);

// 獲取控件的寬度

if (mViewdWidth == 0) {
// getMeasuredWidthAndState();//獲取寬度及測量的模式

mViewdWidth = getMeasuredWidth();

if (mViewdWidth > 0) {
// 獲取畫筆

mPaint = getPaint();

// 創建一個線性渲染的對象

mLinearGradient = new LinearGradient(0, 0, mViewdWidth, 0,
new int[] { Color.BLUE, Color.WHITE, Color.BLUE },
null, Shader.TileMode.CLAMP);

// 將線性渲染的對象通過着色器傳遞給畫筆

mPaint.setShader(mLinearGradient);

// 創建一個矩陣

matrix = new Matrix();

}
}

}

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if (matrix != null) {
// 設置偏移的位置
mTranslate += mViewdWidth / 5;
// 作用:可以是動畫一直執行
if (mTranslate > 1.2 * mViewdWidth) {
mTranslate = -mViewdWidth;
}
// 設置值平移動畫
matrix.setTranslate(mTranslate, 0);
// 將矩陣設置到線性渲染中
mLinearGradient.setLocalMatrix(matrix);
// 每隔100毫秒次重繪界面
postInvalidateDelayed(100);
}
}
}

在xml布局中使用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<com.itheima.sharptext.MyView
android:id="@+id/tv_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="hello_world" />

</LinearLayout>

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
  © 2014-2022 ITdaan.com 联系我们: