Android利用canvas画各种图形(点、直线、弧、圆、椭圆、文字、矩形、多边形、曲线、圆角矩形)

来源:互联网 发布:神雕侠侣 台视源码版 编辑:程序博客网 时间:2024/04/28 22:17
效果图:


二、CustomActivity.java

  1. public class CustomActivity extends Activity {  
  2.     @Override  
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.         setContentView(R.layout.main);  
  6.         init();  
  7.     }  
  8.   
  9.     private void init() {  
  10.         LinearLayout layout=(LinearLayout) findViewById(R.id.root);  
  11.         final DrawView view=new DrawView(this);  
  12.         view.setMinimumHeight(500);  
  13.         view.setMinimumWidth(300);  
  14.         //通知view组件重绘    
  15.         view.invalidate();  
  16.         layout.addView(view);  
  17.           
  18.     }  
  19. }  
  20. 自定义视图类详见转载处!!!

转自:http://blog.csdn.net/rhljiayou/article/details/7212620


今天要给大家介绍的是在android中画饼图: 

      画扇形:

     RectF oval2 = new RectF(60, 100, 200, 240);

     // 设置个新的长方形,60为左上点的x坐标,100为左上点的y坐标;200为右下点的 x坐标,240为右下点的y坐标。

    // 画弧,第一个参数是RectF:该类是第二个参数是角度的开始,第三个参数是多少度,第四个参数是真的时候画扇形,是假的时候画弧     线  

      canvas.drawArc(oval2, 200, 130, true, p);  

     一、 无网情况下:

      由于Android 画图API为提供直接画饼图的方法,采用了比较原始的方法,画扇形,然后拼接在一起,由于为了显示立体效果,程序画了20次,每次改变上下的位置,结果看起来就会有立体感(如果谁有更好的方式,非常愿意学习) 
canvas.drawArc(new RectF(0, 0, 300, 100), 0,60, true, paint);  
会画一个宽300,高100,水平 顺时针方向的60度的扇形,程序中就是用这种方式拼接成整个饼图的.

二、有网情况下:

使用Google API实现: 

WebView webView = new WebView(this);  
String url = "http://chart.apis.google.com/chart?cht=p3&chs=350x180&chd=t:30,30,40";  
webView.loadUrl(url);  
setContentView(webView); 
给Google API传递URL形式的参数,其中cht=p3表示图形类型为饼图,chs=350x180表示宽和高,chd=t:30,30,40表示饼图分为三份,每一份所占的显示比例;  
返回结果是一个包含根据参数生成饼图图片的网页,所以以Android控件WebView接收进行显示。 
下面为效果图。



原创粉丝点击