android canvas使用line畫(huà)半圓
本文實(shí)例為大家分享了android canvas使用line畫(huà)半圓具體代碼,供大家參考,具體內(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>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
android6.0運(yùn)行時(shí)權(quán)限完美封裝方法
今天小編就為大家分享一篇android6.0運(yùn)行時(shí)權(quán)限完美封裝方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Android的RV列表刷新詳解Payload與Diff方式異同
這篇文章主要為大家介紹了Android的RV列表刷新詳解Payload與Diff方式異同,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10Android canvas畫(huà)圖操作之切割畫(huà)布實(shí)現(xiàn)方法(clipRect)
這篇文章主要介紹了Android canvas畫(huà)圖操作之切割畫(huà)布實(shí)現(xiàn)方法,通過(guò)clipRect方法實(shí)現(xiàn)canvas畫(huà)布的切割操作,需要的朋友可以參考下2016-10-10Android仿高德首頁(yè)三段式滑動(dòng)效果的示例代碼
很多app都會(huì)使用三段式滑動(dòng),比如說(shuō)高德的首頁(yè)和某寶等物流信息都是使用的三段式滑動(dòng)方式。本文將介紹如何實(shí)現(xiàn)這一效果,感興趣的可以學(xué)習(xí)一下2022-01-01Kotlin Service服務(wù)組件開(kāi)發(fā)詳解
這幾天分析了一下的啟動(dòng)過(guò)程,于是乎,今天寫(xiě)一下Service使用; 給我的感覺(jué)是它并不復(fù)雜,千萬(wàn)不要被一坨一坨的代碼嚇住了,雖然彎彎繞繞不少,重載函數(shù)一個(gè)接著一個(gè),就向走迷宮一樣,但只要抓住主線(xiàn)閱讀,很快就能找到出口2022-12-12Flutter質(zhì)感設(shè)計(jì)之列表項(xiàng)
這篇文章主要為大家詳細(xì)介紹了Flutter質(zhì)感設(shè)計(jì)之列表項(xiàng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08Android多進(jìn)程間采用AIDL方式進(jìn)行通信
這篇文章主要為大家詳細(xì)介紹了Android多進(jìn)程間采用AIDL方式進(jìn)行通信,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04android Gallery組件實(shí)現(xiàn)的iPhone圖片滑動(dòng)效果實(shí)例
這篇文章主要介紹了android Gallery組件實(shí)現(xiàn)的iPhone圖片滑動(dòng)效果實(shí)例,即相冊(cè)內(nèi)的圖片實(shí)現(xiàn)可左右滑動(dòng)的效果,需要的朋友可以參考下2014-07-07