android canvas使用line画半园
来源:互联网 发布:sql数值 编辑:程序博客网 时间:2024/06/07 22:22
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>
0 0
- android canvas使用line画半园
- android canvas的使用
- Android-Canvas使用技巧
- Android--使用Canvas绘图
- Android Canvas使用
- Android Canvas使用
- Android使用Canvas绘图
- Android Canvas使用
- Android Canvas 基本使用
- Android Canvas API使用
- Android Canvas 的使用
- android 使用Canvas画箭头
- Android开发--Canvas高级使用
- android-Canvas的使用-随心
- Android:使用Canvas合并Bitmap
- android 中使用Canvas 画圆
- Android 中Canvas的使用
- 《Android群英传》 使用Canvas绘图
- android studio去掉标题栏
- [Leetcode]21. Merge Two Sorted Lists
- 双链表队列和栈的实现与操作
- 空指针
- 用Laravel创建项目
- android canvas使用line画半园
- 数组指针与指针数组
- CTF比赛中必备的瑞士军刀ctf-tools
- 个人独立游戏总结
- adpcm的压缩和解压缩实现
- 【疑难杂症】-CentOS-yum错误: Cannot retrieve repository metadata (repomd.xml) for repository:
- crypt.c —— libcrypt
- BB FlashBack单独导出音频
- 一念永恒 > 第126章 厚积薄发