歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中動態圖形的繪制

開始學習了Android中的動態圖形的繪制,直接用個例子上手;

基本思路如下:

一:創建一個繼承與View類自定義類,本例是(CanvasView),必須要有構造方法(可以使用1: public View(Context context);2: public View(Context context, AttributeSet attrs);3:public View(Context context, AttributeSet attrs, int defStyle)的其中一個);

二:覆蓋其中的onDraw()方法;使用其中Canvas對象在界面上面繪制圖形;

三;然後我們可以通過postInvalidate()或者invalidate()方法來調用onDraw()方法來進行圖形的重繪.

【注:invalidate ()和postInvalidate()方法的選擇:文檔中已經寫的很清楚了,如果要使用invalidate()必須要在UI主線程當中,如果不在UI主線程中,就要去調用postInValidate()】

下面是我寫的一個例子:使用了兩種更新的方法1:Handler結合invalidate();2:直接使用postInvalidate()

實現的效果是:在屏幕上面畫一個矩形,然後開個線程,讓矩形每隔一秒改變顏色,並且矩形以x軸和y軸分別同時加+1想右下角移動.

Android中動態圖形的繪制源代碼下載地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/2月/19日/Android中動態圖形的繪制/

看下效果圖:

第一種方法代碼如下:【直接使用postInvalidate()】

  1. package com.jiangqq.csdn;  
  2.   
  3. /** 
  4.  * 自定義組件畫組件 
  5.  */  
  6. import android.content.Context;  
  7. import android.graphics.Canvas;  
  8. import android.graphics.Color;  
  9. import android.graphics.Paint;  
  10. import android.view.MotionEvent;  
  11. import android.view.View;  
  12.   
  13. public class CanvasView extends View {  
  14.   
  15.     public int x = 0;  
  16.     public int y = 0;  
  17.     public int mIndex = 0;  
  18. //必須加入構造函數,也可以使用另外兩個構造函數   
  19.     public CanvasView(Context context) {  
  20.         super(context);  
  21.         //下面兩個設置聚焦和觸摸模式,可以不設置,這裡設置了,因為其他地方要加入這兩個事件   
  22.         setFocusable(true);  
  23.         setFocusableInTouchMode(true);  
  24.     }  
  25.   
  26.     @Override  
  27.     public boolean onTouchEvent(MotionEvent event) {  
  28.         return false;  
  29.     }  
  30.   
  31.     @Override  
  32.     protected void onDraw(Canvas canvas) {  
  33.         super.onDraw(canvas);  
  34.         if (mIndex < 100) {  
  35.             mIndex++;  
  36.         } else {  
  37.             mIndex = 0;  
  38.         }  
  39.         Paint _Paint = new Paint();  
  40.         switch (mIndex % 4) {  
  41.         case 0:  
  42.             _Paint.setColor(Color.RED);  
  43.             break;  
  44.         case 1:  
  45.             _Paint.setColor(Color.BLUE);  
  46.             break;  
  47.         case 2:  
  48.             _Paint.setColor(Color.YELLOW);  
  49.             break;  
  50.   
  51.         case 3:  
  52.             _Paint.setColor(Color.LTGRAY);  
  53.             break;  
  54.         }  
  55.         canvas.drawRect(x, y, x + 100, y + 100, _Paint);  
  56.     }  
  57.   
  58. }  
Copyright © Linux教程網 All Rights Reserved