android绘制半圆弧线_android canvas使用line画半圆

本文实例为大家分享了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

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

>

android:id="@+id/lv"

android:layout_width="300dp"

android:layout_height="300dp"

android:layout_centerInParent="true"

/>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值