android canvas使用line画半圆

作者:新火燎塬 时间:2022-01-05 17:58:57 

本文实例为大家分享了android canvas使用line画半圆具体代码,供大家参考,具体内容如下

LineView.java


public class LineView extends View {
 private int progress = 0;
 private int max = 100;
 private int roundWidth = 50;
 public LineView(Context context) {
   super(context);
 }

public LineView(Context context, AttributeSet attrs) {
   super(context, attrs);
 }

public LineView(Context context, AttributeSet attrs, int defStyleAttr) {
   super(context, attrs, defStyleAttr);
 }

public void setProgress(int progress) {
   this.progress = progress;
   invalidate();
 }

@Override
 protected void onDraw(Canvas canvas) {

Paint paint = new Paint();
   paint.setAntiAlias(true);
   paint.setColor(Color.RED);

paint.setStrokeWidth(roundWidth);
   paint.setStyle(Paint.Style.STROKE);

canvas.drawCircle(getWidth() / 2, getHeight() / 2, 200, paint);

paint.setStyle(Paint.Style.FILL);
   paint.setStrokeWidth(10);
   paint.setColor(Color.BLUE);
   int startX = 0, startY = 0, stopX = 0, stopY = 0;

startX=0;
   stopX=500;
   for (int i = 0; i <= progress; i++) {
     startY = stopY = getHeight()/2+200-roundWidth/2 - i*(400-roundWidth)/max;
     double v = Math.pow((200 - roundWidth / 2), 2) - (Math.pow((startY-getHeight()/2), 2));
     startX = (int)(getWidth()/2-Math.sqrt(v));
     stopX = (int)(getWidth()/2+Math.sqrt(v));
     canvas.drawLine(startX, startY, stopX, stopY, paint);
   }
 }
}

MainActivity.java


public class MainActivity extends Activity {

private LineView lv;

@Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   lv = (LineView)findViewById(R.id.lv);

lv.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
       lv.setEnabled(false);

new Thread() {
         @Override
         public void run() {
           for (int i = 0; i <= 100; i++) {

final int finalI = i;
             runOnUiThread(new Runnable() {
               @Override
               public void run() {
                 lv.setProgress(finalI);
               }
             });
             try {
               sleep(10);
             } catch (InterruptedException e) {
               e.printStackTrace();
             }
           }

runOnUiThread(new Runnable() {
             @Override
             public void run() {
               lv.setEnabled(true);
             }
           });
         }
       }.start();

}
   });
 }
}

activity_main.xml


<?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:layout_width="match_parent"
 android:layout_height="match_parent"
 >

<com.xhly.sdv.lineview.view.LineView
   android:id="@+id/lv"
   android:layout_width="300dp"
   android:layout_height="300dp"
   android:layout_centerInParent="true"
   />

</RelativeLayout>

来源:https://blog.csdn.net/qq_23077365/article/details/51763618

标签:android,canvas,半圆
0
投稿

猜你喜欢

  • C#事务处理(Execute Transaction)实例解析

    2022-04-12 15:32:43
  • SpringBoot YAML语法基础详细整理

    2023-04-16 14:15:30
  • java ArrayList.remove()的三种错误用法以及六种正确用法详解

    2021-05-29 02:09:48
  • c#批量上传图片到服务器示例分享

    2022-09-12 10:16:24
  • request如何获取body的json数据

    2021-11-16 20:30:31
  • Android实现可拖拽的GridView效果长按可拖拽删除数据源

    2022-10-22 17:39:32
  • Android Studio 一键生成Json实体类教程

    2023-05-19 20:13:39
  • 用Java实现简单画板功能

    2023-01-19 08:17:10
  • C#中的数组用法详解

    2021-08-19 14:50:17
  • C#使用NPOI将List数据导出到Excel文档

    2022-12-18 12:28:09
  • Android拍照或从图库选择图片并裁剪

    2023-07-01 08:21:45
  • Opencv实现傅里叶变换

    2023-08-24 18:53:29
  • C语言预处理器使用方法讲解

    2023-04-07 01:39:02
  • Apache Commons Math3探索之多项式曲线拟合实现代码

    2023-11-16 22:01:56
  • java多线程之CyclicBarrier的使用方法

    2023-11-04 21:52:54
  • 深入理解Java并发编程之ThreadLocal

    2023-11-21 02:43:42
  • Android自定义控件样式实例详解

    2021-10-13 09:24:05
  • 面试官:java ThreadLocal真的会造成内存泄露吗

    2023-11-18 13:04:56
  • Android按钮按下的时候改变颜色实现方法

    2021-09-24 20:15:39
  • WPF中ImageBrush常用方式介绍

    2022-02-26 09:45:30
  • asp之家 软件编程 m.aspxhome.com