自定义圆形进度条
来源:互联网 发布:把json转化成数组 编辑:程序博客网 时间:2024/06/18 09:08
自定义相机扫描二维码的权限
compile 'com.google.zxing:core:3.2.1' compile 'cn.bingoogolapple:bga-qrcodecore:1.1.3@aar' compile 'cn.bingoogolapple:bga-zxing:1.1.3@aar'
Main方法里的代码
package com.example.weekonetext;import android.content.Intent;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private Button btn_start; private static final int FLAG = 123; private CircleDemo ccd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if(msg.what==FLAG) { int progress = ccd.getProgress(); if(progress>=100) { progress=0; } progress+=10; ccd.setProgress(progress); handler.sendEmptyMessageDelayed(FLAG,1000); } } }; private void initView() { btn_start = (Button) findViewById(R.id.btn_start); ccd = (CircleDemo) findViewById(R.id.ccd); btn_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { handler.sendEmptyMessageDelayed(FLAG,1000); } }); ccd.setOnCircleDemoListen(new CircleDemo.OnCircleDemoListen() { @Override public void onProgressUpdated(int progress) { if(progress>=100) { Intent intent = new Intent(MainActivity.this,Main2Activity.class); startActivity(intent); } } }); } @Override protected void onStop() { super.onStop(); handler.removeMessages(FLAG); }}
自定义View方法里的代码
package com.example.weekonetext;import android.content.Context;import android.content.res.TypedArray;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Rect;import android.graphics.RectF;import android.graphics.Typeface;import android.icu.util.Measure;import android.os.Build;import android.support.annotation.Nullable;import android.support.annotation.RequiresApi;import android.util.AttributeSet;import android.util.Log;import android.util.TypedValue;import android.view.View;/** * Created by Administrator on 2017/11/4 0004. */public class CircleDemo extends View{ //定义起始数据为0 progress不是进度的意思,只是一个变量名,用来加减数据的 private int progress = 0; private OnCircleDemoListen listen; interface OnCircleDemoListen{ void onProgressUpdated(int progress); } public void setOnCircleDemoListen(OnCircleDemoListen listen) { this.listen = listen; } //有参和无参构造 public int getProgress() { return progress; } public void setProgress(int progress) { this.progress = progress; //刷新的放法(系统方法) postInvalidate(); if(listen!=null) { listen.onProgressUpdated(progress); } } public CircleDemo(Context context) { this(context,null); } public CircleDemo(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public CircleDemo(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //取出屏幕的宽高 int width = getWidth(); int height = getHeight(); //取出宽高中的最小值作为圆的直径 int min = Math.min(width, height); //计算圆的半径 int radius = min/2; //画圆(参数是让圆没有卡卡的) Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.BLACK); //让圆不填充 paint.setStyle(Paint.Style.STROKE); canvas.drawCircle(width/2,height/2,radius,paint); paint.reset(); //开始画扇形 paint.setColor(Color.RED); paint.setStyle(Paint.Style.STROKE); paint.setStrokeWidth(30); RectF rectF = new RectF(); rectF.set(0,155,min,min+100); canvas.drawArc(rectF,-90,progress*360/100,true,paint); //画中心圆 paint.reset(); paint.setColor(Color.WHITE); paint.setStyle(Paint.Style.FILL); canvas.drawCircle(width/2,height/2,radius-30,paint); //画文字 paint.reset(); int intt = 10; paint.setColor(Color.BLUE); paint.setTextSize(40); Rect rect = new Rect(); paint.getTextBounds(progress+"",0,String.valueOf(progress).length(),rect); int width1 = rect.width(); int height1 = rect.height(); canvas.drawText(progress+"%",radius-width1/2,radius-height1/2,paint); }}
阅读全文
0 0
- 自定义圆形进度条,绘制进度条
- android 自定义圆形进度条
- 自定义的圆形进度条
- Android:自定义圆形进度条
- android自定义圆形进度条
- Android自定义圆形进度条
- Android自定义圆形进度条
- 自定义圆形进度条
- 自定义圆形进度条
- 自定义圆形进度条
- Android 自定义圆形进度条
- 自定义圆形进度条
- Android自定义圆形进度条
- Android自定义圆形进度条
- 自定义圆形进度条
- Android 自定义圆形进度条
- 自定义圆形进度条
- Android 自定义圆形进度条
- retrofit的简单使用
- CSDN私自调整下载积分。。。。。。。。
- 14. Longest Common Prefix(待补充)
- 一起Talk Android吧(第五十回:Android中的Fragment嵌套一)
- 来自于PayPal的RESTful API标准
- 自定义圆形进度条
- Kotlin入门语法
- linux基础(七)进程、ps、用户登陆审计、top
- 埃森哲5G智慧城市报告:美国GDP将狂增5千亿
- 水平居中的几种方法-margin,text-align
- org.springframework.web.servlet.PageNotFound]-[WARN] No mapping found for HTTP request with URI [/re
- Banner
- iOS项目配置文件info.plist文件解析下
- TensorFlow 与深度学习2017 实录