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