TextView 文字加上闪光与外层圆跟内层圆显示文字
来源:互联网 发布:快拍王软件下载 编辑:程序博客网 时间:2024/04/30 14:21
新建一个类集成textView
public class MarcTextViewTwo extends TextView{ int mViewWidth; Paint mPaint; LinearGradient mLinearGradient; Matrix mGradientMatrix; int mTranslate; public MarcTextViewTwo(Context context) { super(context); } public MarcTextViewTwo(Context context, AttributeSet attrs) { super(context, attrs); } @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,0xffffffff, //闪光 Color.BLUE},null, Shader.TileMode.CLAMP ); mPaint.setShader(mLinearGradient); mGradientMatrix = new Matrix(); } } } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); if(mGradientMatrix != null){ mTranslate += mViewWidth/5; if(mTranslate >2*mViewWidth){ mTranslate = -mViewWidth; } mGradientMatrix.setTranslate(mTranslate,0); mLinearGradient.setLocalMatrix(mGradientMatrix); postInvalidateDelayed(100); } }}
然后是外层圆内从圆显示文字效果
public class MarcView extends View { private int mMeasureHeight; private int mMeasureWidth; private Paint mCirclePaint;//外层圆paint private float mCircleXY; private float mRadius; private Paint mArcPaint;//矩形paint private RectF mArcRectF; private float mSweepAngle;//设置圆的扫描 private float mSweepValue = 66; //默认圆的扫描值 private Paint mTextPaint;//文字paint private String tip;//textview显示文字 private int mSize;//texview 文字大小 public MarcView(Context context) { super(context); WindowManager manager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); int length = display.getWidth(); mCircleXY = length/2; mRadius = (float) (length*0.5/2); } public MarcView(Context context, AttributeSet attrs) { super(context, attrs); } //测量 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); mMeasureHeight = MeasureSpec.getSize(heightMeasureSpec); mMeasureWidth = MeasureSpec.getSize(widthMeasureSpec); setMeasuredDimension(mMeasureWidth,mMeasureHeight); initView(); } private void initView() { float length = 0; if (mMeasureHeight >= mMeasureWidth) { length = mMeasureWidth; } else { length = mMeasureHeight; } mCircleXY = length/2; mRadius = (float) (length * 0.5 / 2); mCirclePaint = new Paint(); mCirclePaint.setAntiAlias(true); mCirclePaint.setColor(getResources().getColor( android.R.color.holo_blue_bright)); mArcRectF = new RectF((float)(length*0.1), (float)(length*0.1), (float)(length*0.9), (float)(length*0.9) ); mSweepAngle = (mSweepValue / 100f) * 360f; mArcPaint = new Paint(); mArcPaint.setAntiAlias(true); mArcPaint.setColor(getResources().getColor( android.R.color.holo_green_light)); mArcPaint.setStrokeWidth((float) (length * 0.1)); mArcPaint.setStyle(Paint.Style.STROKE); mTextPaint = new Paint(); mTextPaint.setTextSize(mSize); mTextPaint.setTextAlign(Paint.Align.CENTER); } public void setShowTextSize(int size) { if(size > 0){ mSize = size; }else { //默认值为50 mSize = 50; } this.invalidate(); } /** * 设置显示文本内容 * @return */ public void setShowText(String text) { if(null!=text){ tip = text; }else { tip = "Marc Test"; } this.invalidate(); } public void setSweepValue(float sweepValue) { if (sweepValue != 0) { mSweepValue = sweepValue; } else { mSweepValue = 25; } this.invalidate(); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //绘制圆 canvas.drawCircle(mCircleXY,mCircleXY,mRadius,mCirclePaint); //绘制弧形 canvas.drawArc(mArcRectF,270,mSweepAngle,false,mArcPaint); //绘制文本 canvas.drawText(tip,0,tip.length(),mCircleXY,mCircleXY+(mSize/4),mTextPaint); }}
0 0
- TextView 文字加上闪光与外层圆跟内层圆显示文字
- textView显示文字链接
- textView 文字显示不同颜色
- Android textview 文字中间加上图片
- TextView文字+drawableLeft居中显示
- 设TextView文字居中显示
- Android TextView显示文字对齐
- Android TextView 文字居中显示
- Android TextView显示文字对齐
- Android TextView显示文字对齐
- android TextView 不显示文字
- 更改与显示文字标签TextView标签的使用
- 安卓TextView显示图片与文字作为底部菜单
- Android中用Spannable在TextView中给文字加上边框
- Android中用Spannable在TextView中给文字加上边框
- Android中用Spannable在TextView中给文字加上边框
- 显示文字与输入
- TextView中显示文字和图片
- 2、发现群组 Python代码
- 英语总结
- 如何设置UILabel的内边距?
- Java中的DatagramPacket与DatagramSocket的初步
- c++ const类成员函数
- TextView 文字加上闪光与外层圆跟内层圆显示文字
- 用systemd命令来管理linux系统
- muduo库的学习8---TcpServer与TcpClient的基本设计---TcpServer
- 数据库备份脚本使用说明
- 反射实现对象改值
- 1-Python 安装 Matplotlib
- 【2015年年终总结】——工作中的体验
- js面向对象基础
- 2+python解析RSS(feedparser)