Android移动开发之【Android实战项目】渐变的TextView小漂亮代码
16lz
2021-01-23
直接继承自Android中原有控件
文章目录
- 渐变的TextView
- 效果:
- 代码:
渐变的TextView
效果:
代码:
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.LinearGradient;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.Shader;import android.support.v7.widget.AppCompatTextView;import android.util.AttributeSet;import android.util.Log;public class CustomTextView extends AppCompatTextView { private final static String TAG = CustomTextView.class.getSimpleName(); private Paint paint1; private Paint paint2; private int mWidth; private LinearGradient gradient; private Matrix matrix; //渐变的速度 private int deltaX; public CustomTextView(Context context) { super(context, null); } public CustomTextView(Context context, AttributeSet attrs) { super(context, attrs); initView(context, attrs); } private void initView(Context context, AttributeSet attrs) { paint1 = new Paint(); paint1.setColor(getResources().getColor(android.R.color.holo_blue_dark)); paint1.setStyle(Paint.Style.FILL); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { super.onSizeChanged(w, h, oldw, oldh); if(mWidth == 0){ Log.e(TAG,"*********************"); mWidth = getMeasuredWidth(); paint2 = getPaint(); //颜色渐变器 gradient = new LinearGradient(0, 0, mWidth, 0, new int[]{Color.GRAY,Color.WHITE,Color.GRAY}, new float[]{ 0.3f,0.5f,1.0f }, Shader.TileMode.CLAMP); paint2.setShader(gradient); matrix = new Matrix(); } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(matrix !=null){ deltaX += mWidth / 5; if(deltaX > 2 * mWidth){ deltaX = -mWidth; } } //关键代码通过矩阵的平移实现 matrix.setTranslate(deltaX, 0); gradient.setLocalMatrix(matrix); postInvalidateDelayed(100); }}
更多相关文章
- Android 常用代码大集合
- android中图片倒影、圆角效果重绘
- android 图片文字轮播效果(图片和文字自动滚动)
- Android Gallery3D效果 教程 案例 代码
- Android为按钮添加相应事件的代码
- 【FAQ】Ubuntu环境下ant编译android代码问题
- 如何获取Android原生代码所有Branchs和Tags
- Android系统进程Zygote启动过程的源代码分析(2)