直接继承自Android中原有控件

文章目录

  • 渐变的TextView
    • 效果:
    • 代码:

渐变的TextView

效果:

Android移动开发之【Android实战项目】渐变的TextView小漂亮代码_第1张图片

代码:

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);    }}

更多相关文章

  1. Android 常用代码大集合
  2. android中图片倒影、圆角效果重绘
  3. android 图片文字轮播效果(图片和文字自动滚动)
  4. Android Gallery3D效果 教程 案例 代码
  5. Android为按钮添加相应事件的代码
  6. 【FAQ】Ubuntu环境下ant编译android代码问题
  7. 如何获取Android原生代码所有Branchs和Tags
  8. Android系统进程Zygote启动过程的源代码分析(2)

随机推荐

  1. android滑动菜单demo
  2. Android(安卓)Menu
  3. android中全局变量的运用
  4. [原]如何在Android用FFmpeg解码图像
  5. No 90 · android如何调用dotnet编写的we
  6. AndroidHttpClient使用Cookie应用分析
  7. Android中的Intent和Intent-Filter详解(一
  8. EditText的inputType属性详解,让指定的Edi
  9. Android(安卓)API 解析开发包
  10. Android中AsyncTask的简单用法