自定义view 自定义进度条 progress
来源:互联网 发布:廉价口红知乎 编辑:程序博客网 时间:2024/05/21 17:09
package qiuhaitao.bwie.com.progress_demo;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Build;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.view.GestureDetector;import android.view.MotionEvent;import android.view.View;import static android.R.attr.radius;public class MyView extends View{ private SingleTapThread singleTapThread; private Paint paint,paint1,paint2; private int windowWidth; private int windowHeight; private int ii; private GestureDetector detector; /** * 最后滑动的X坐标 */ private int lastX; /** * 最后滑动的Y坐标 */ private int lastY; public MyView(Context context) { this(context,null); } public MyView(Context context, AttributeSet attrs) { this(context, attrs,0); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); //测量模式 int widthMode = MeasureSpec.getMode(widthMeasureSpec); int heightMode = MeasureSpec.getMode(heightMeasureSpec); //测量规格大小 int widthSize = MeasureSpec.getSize(widthMeasureSpec); int heightSize = MeasureSpec.getSize(heightMeasureSpec); int width; int height; if (widthMode == MeasureSpec.EXACTLY) { width=widthSize; } else if (widthMode == MeasureSpec.AT_MOST) { width=Math.min(widthSize,radius*2); } else { width=windowWidth; } if (heightMode == MeasureSpec.EXACTLY) { height=heightSize; } else if (heightMode == MeasureSpec.AT_MOST) { height=Math.min(heightSize,radius*2); } else { height=windowHeight; } setMeasuredDimension(width,height); } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); paint = new Paint(); paint.setColor(Color.BLACK); paint.setStyle(Paint.Style.STROKE); paint.setTextSize(90); paint.setStrokeWidth(10); canvas.drawCircle(getWidth()/2,getHeight()/2,300,paint); paint1 = new Paint(); paint1.setColor(Color.GRAY); canvas.drawCircle(getWidth() / 2, getHeight() / 2, ii, paint1); int i = ii / 3; canvas.drawText(i+"%",getWidth() / 2-100,getHeight() / 2,paint); detector = new GestureDetector(new MyGestureDetector()); setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return detector.onTouchEvent(event); } });} public class MyGestureDetector extends GestureDetector.SimpleOnGestureListener{ @Override public boolean onDoubleTap(MotionEvent e) { return super.onDoubleTap(e); } @Override public boolean onSingleTapConfirmed(MotionEvent e) { singleTapThread = new SingleTapThread(); getHandler().postDelayed(singleTapThread, 100); return super.onSingleTapConfirmed(e); } } private class SingleTapThread implements Runnable { @Override public void run() { if (ii < 300) { invalidate(); getHandler().postDelayed(singleTapThread, 100); ii = ii + 1;// } else {// getHandler().removeCallbacks(singleTapThread); } } } @Override public boolean onTouchEvent(MotionEvent event) { //获取当前手指的坐标 int currentX = (int) event.getX(); int currentY = (int) event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: lastX = currentX; lastY = currentY; break; case MotionEvent.ACTION_MOVE: //获取当前偏移的坐标 int biasX = currentX - lastX; int biasY = currentY - lastY; //重写layout方法改变控件所在屏幕的位置 layout(getLeft()+biasX, getTop()+biasY, getRight()+biasX, getBottom()+biasY); break; } return true; }}
阅读全文
0 0
- 自定义view 自定义进度条 progress
- android progress自定义进度条
- 自定义Progress进度条
- 自定义Progress进度条
- 自定义Progress进度条
- Android在自定义View(SurfaceView)中实现进度条Progress
- Android在自定义View(SurfaceView)中实现进度条Progress
- Android在自定义View(SurfaceView)中实现进度条Progress
- 自定义View---自定义进度条
- 史上难求的自定义progress环形进度条效果——自定义View来袭!!!
- 自定义View实现进度条
- 自定义view-环形进度条
- 自定义View圆形进度条
- 自定义view-环形进度条
- 自定义View 进度条
- 自定义view圆形进度条。
- 自定义View圆形进度条
- 自定义view进度条
- Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vue、node基础知识普及
- Android【官方教程】NDK 构建项目
- oracle day01
- 【DRP】ajax总结
- Myeclipse运行JMS的生产者时,报错:“java.lang.UnsupportedClassVersionError : Unsupported major.minor version 51”
- 自定义view 自定义进度条 progress
- 写个准备读研的学弟的Java学习指南
- dubbo-admin管理平台搭建简单介绍
- 安卓平台下使用bootstrap
- Android TextUtils类介绍
- 【linq】-实现数据的随机查询
- Unity编辑脚本(启动指南)-脚本对象
- handler原理分析及模仿handler实现简单主/子线程通信架构
- c++---不使用“+”实现加法操作