android canvas使用line畫半圓
更新時間:2020年02月18日 08:26:56 作者:新火燎塬
這篇文章主要為大家詳細(xì)介紹了android canvas使用line畫半園,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了android canvas使用line畫半圓具體代碼,供大家參考,具體內(nèi)容如下
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>
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 7.0 手電筒控制實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了Android 7.0 手電筒控制實(shí)現(xiàn),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-09-09
Android dataBinding與ListView及事件詳解
這篇文章主要介紹了Android dataBinding與ListView及事件詳解的相關(guān)資料,需要的朋友可以參考下2016-10-10
Android編程開發(fā)中ListView的常見用法分析
這篇文章主要介紹了Android編程開發(fā)中ListView的常見用法,較為詳細(xì)的分析了ListView的功能及常見使用方法,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
Android中簡單的電話管理與短信管理App編寫實(shí)例
這篇文章主要介紹了Android中簡單的電話管理與短信管理App編寫實(shí)例,包括監(jiān)聽電話的呼叫狀態(tài)以及短信群發(fā)聯(lián)系人選擇等基本功能的實(shí)現(xiàn),代碼突出要點(diǎn),需要的朋友可以參考下2016-04-04
Android二級緩存加載圖片實(shí)現(xiàn)照片墻功能
這篇文章主要為大家詳細(xì)介紹了Android二級緩存加載圖片實(shí)現(xiàn)照片墻功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

