自定义带闪动和多背景的textview
来源:互联网 发布:山西大学软件学院 编辑:程序博客网 时间:2024/06/06 10:48
1 首先自定义一个多背景的textview
import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.widget.TextView;/** * 作者:水东流 * 时间:2016/4/20 * 带框文字效果textview */public class MyTextView extends TextView { private Paint mpaint1;//画笔1 private Paint mpaint2;//画笔2 public MyTextView(Context context) { this(context, null); } public MyTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public MyTextView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(); } private void init() { mpaint1 = new Paint(); mpaint2 = new Paint(); mpaint1.setColor(getResources().getColor(android.R.color.holo_blue_light)); mpaint2.setColor(Color.WHITE);//背景色 mpaint1.setStyle(Paint.Style.FILL); mpaint2.setStyle(Paint.Style.FILL); } /** * 绘图 * * @param canvas */ @Override protected void onDraw(Canvas canvas) { //绘制外层矩形 canvas.drawRect(0, 0, getMeasuredWidth(), getMeasuredHeight(), mpaint1); //绘制内侧矩形 canvas.drawRect(10, 10, getMeasuredWidth() - 10, getMeasuredHeight() - 10, mpaint2); canvas.save(); //绘制文字前平移10像素 canvas.translate(10, 0); //父类的方法,绘制文本 super.onDraw(canvas); canvas.restore(); }一般拓展是在onDraw方法中对原生控件行为进行拓展
2 下面是带闪动的多背景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.util.AttributeSet;/** * 作者:水东流 * 时间:2016/4/20 * 闪动效果 */public class MyMoveView extends MyTextView { private int mViewWidth = 0;//宽度 private Paint mpaint; private LinearGradient mLinearGradient; private Matrix mGradientMatrix; private int mTanslate; public MyMoveView(Context context) { super(context); } public MyMoveView(Context context, AttributeSet attrs) { super(context, attrs); } public MyMoveView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } /** * 在此初始化闪动所需值 * @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); if (mViewWidth == 0) { mViewWidth = getMeasuredWidth(); if (mViewWidth > 0) { mpaint = getPaint(); mLinearGradient=new LinearGradient(0,0,mViewWidth,0,new int[]{Color.BLUE,0xfffffff,Color.BLUE},null, Shader.TileMode.CLAMP); mpaint.setShader(mLinearGradient); mGradientMatrix=new Matrix(); } } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(mGradientMatrix!=null){ mTanslate+=mViewWidth; if(mTanslate>2*mViewWidth){ mTanslate=-mViewWidth; } mGradientMatrix.setTranslate(mTanslate,0); mLinearGradient.setLocalMatrix(mGradientMatrix); postInvalidateDelayed(100); } }}这里在onDraw方法里面,通过矩阵的方式来不断平移渐变效果,从而在绘制文字时,产生动态的闪动效果
0 0
- 自定义带闪动和多背景的textview
- 自定义View之TextView的闪动效果
- Android自定义View之闪动的TextView
- 自定义View之TextView的闪动效果
- (1)--Android自定义View:带背景颜色的TextView和条形图
- 走马灯闪动的TextView
- 闪动的TextView
- 【Android UI】自定义TextView实现动态的文字闪动效果
- 自定义圆形背景的TextView
- 自定义带shape的TextView
- ExpandableTextView(带收缩和展开的简单自定义textview)
- 带图片的textView自定义控件
- 带进度边框的自定义TextView
- 自定义带占位符Placeholder的textView
- 自定义带三角形箭头的TextView
- Android自定义控件 -- 带边框的TextView
- 带闪光效果的自定义TextView
- 自定义带倒影效果的TextView
- Spark API 详解/大白话解释 之 map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
- JS获得一个对象的所有属性和方法
- JVM-FULL-GC
- Android 进程间通信(AIDL)
- USB驱动开发(五)之程序设计
- 自定义带闪动和多背景的textview
- Android 颜色渲染(九) PorterDuff及Xfermode详解
- FloatingActionButton&Snackbar
- 软件安装
- 剑指offer 二叉搜索树的后序遍历序列
- sizeof 的用法(初学者)
- Android视频播放之MediaPlayer
- 通过代码实例来说明spark api mapPartitions和mapPartitionsWithIndex的使用
- Bzoj 4515 线段树 SDOI2016 游戏 Game