自定义圆加载进度单点触控
来源:互联网 发布:移动巡检软件 编辑:程序博客网 时间:2024/06/16 11:34
//布局文件<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bw.u.day02dandianchukong.MainActivity"> <com.bw.u.day02dandianchukong.MyView android:id="@+id/cv" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="start" android:text="点击加载" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/button" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="startJia" android:text="点击加载加速" android:layout_above="@+id/button" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:id="@+id/button2" /></RelativeLayout>//代码部分package com.bw.u.day02dandianchukong;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity { int max=360; int current=0; MyView cv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cv = (MyView) findViewById(R.id.cv); } public void start(View view){ current=0; new Thread(new Runnable() { public void run() { while(current<=360){ current++; try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } cv.addrest(max,current); } } }){}.start(); } //点击加速 public void startJia(View view){ current+=2; new Thread(new Runnable() { public void run() { while(current<=360){ current++; try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); } cv.addrest(max,current); } } }){}.start(); } }//继承viewpackage com.bw.u.day02dandianchukong;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import android.widget.Toast;public class MyView extends View{ //声明画笔 Paint paint; //声明第二个画笔 Paint cpaint; //声明进度画笔 Paint jpaint; //最大值 int max = 360; //当前进度 int current; float textsize = 30; //创建方法发送线程 public void addrest(int max, int current) { this.max = max; this.current = current; postInvalidate(); } private float x=202; private float y=317; public MyView(Context context) { this(context,null); } public MyView(Context context, AttributeSet attrs) { this(context, attrs,R.style.AppTheme); } public MyView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } protected void onDraw(Canvas canvas) { super.onDraw(canvas); circleview(canvas); } public void circleview(Canvas canvas){ //创建画圆的画笔 paint = new Paint(); cpaint = new Paint(); jpaint = new Paint(); int width = getWidth(); //圆的中心 // int center=width/2; //获取圆的半径 int radio = (width - 20) / 2; paint.setColor(Color.RED); paint.setStrokeWidth(5); paint.setStyle(Paint.Style.STROKE); paint.setAntiAlias(true); //设置进度条的颜色或者格式 cpaint.setColor(Color.BLUE); cpaint.setStrokeWidth(3); cpaint.setStyle(Paint.Style.STROKE); cpaint.setAntiAlias(true); //设置字体的颜色或格式 jpaint.setColor(Color.GREEN); jpaint.setStrokeWidth(2); jpaint.setTextSize(textsize); //用画笔画出一个圆 canvas.drawCircle(x, y, radio, paint); //设置进度条的方向或 RectF rectF = new RectF(x - radio, y - radio, x + radio, y + radio); canvas.drawArc(rectF, 0, 360*current/max, false, cpaint); //进度条百分比 int perent=(int) ((current*1.0/max*1.0)*100); float textWidth=paint.measureText(perent+"%"); canvas.drawText(perent+"%",x-textWidth/2,y+textWidth/2,jpaint); } public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()){ case MotionEvent.ACTION_DOWN: Toast.makeText(getContext(),"点击圆内",Toast.LENGTH_SHORT).show(); break; case MotionEvent.ACTION_MOVE: this.x=event.getX(); this.y=event.getY(); this.invalidate(); break; } return true; }}
2 0
- 自定义圆加载进度单点触控
- 自定义控件旋转圆加载进度
- 自定义加载进度动画
- 图片加载进度 自定义ImageView
- Android 自定义加载进度框
- 自定义View(单点触控)
- Swift自定义进度圆
- 自定义view,进度圆
- Android自定义标题栏:显示网页加载进度
- Android自定义view之图片加载进度
- 自定义Dialog 以加载进度为例
- Android自定义标题栏:显示网页加载进度
- 自定义水波纹加载进度动画--葫芦
- 自定义圆形进度条 自定义属性 单点触控
- 自定义进度
- Android--自定义标题栏之显示网页加载进度
- Android--自定义标题栏之显示网页加载进度
- 自定义控件,Android实现图片加载进度提示
- UIWindow
- java基础学习面向对象之封装 五-2
- (36)Spring Boot Cache理论篇【从零开始学Spring Boot】
- 十个免费的 Web 压力测试工具
- DBLINK
- 自定义圆加载进度单点触控
- 两数组求交集元素-C描述
- 解决IntelliJ IDEA 报编译错误Error:(36, 74) java: diamond operator is not supported in -source 1.5 (use -s
- 我一个程序员的工作日作息时间表
- 关键字自动的Python自动化测试书籍
- Linux netstat命令详解
- Web应用的性能优化思路——找到瓶颈
- iOS开发--第三方框架导入方法之CocoaPods
- 消息中间件剖析