android學習筆記3:自定義view – Android移動開發技術文章_手機開發 Android移動開發教學課程

在android的程序開發中我們可以根據需要開發出屬於我們自己的view,來豐富我們的頁面佈局和功能,此時我們隻需集成View這個基類,再重寫其中的相關方法即可。接下來實現的這個程序,實現瞭一個隨手指移動的小球的自定義view。

/**
 * 
 */ 
package snoopy.android; 
 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 
 
 
public class DrawView extends View 

    public float currentX = 40; 
    public float currentY = 50; 
    /**
     * @param context
     */ 
    public DrawView(Context context) 
    { 
        super(context); 
        // TODO Auto-generated constructor stub  
    } 
    @Override 
    public void onDraw (Canvas canvas) 
    { 
        super.onDraw(canvas); 
        //創建畫筆  
        Paint p = new Paint(); 
        //設置畫筆的顏色  
        p.setColor(Color.RED); 
        //繪制一個小圓(作為小球)  
        canvas.drawCircle(currentX , currentY , 15 , p);         
    } 

/**
 *
 */
package snoopy.android;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;

public class DrawView extends View
{
 public float currentX = 40;
 public float currentY = 50;
 /**
  * @param context
  */
 public DrawView(Context context)
 {
  super(context);
  // TODO Auto-generated constructor stub
 }
 @Override
 public void onDraw (Canvas canvas)
 {
  super.onDraw(canvas);
  //創建畫筆 www.aiwalls.com
  Paint p = new Paint();
  //設置畫筆的顏色
  p.setColor(Color.RED);
  //繪制一個小圓(作為小球)
  canvas.drawCircle(currentX , currentY , 15 , p);  
 }
}
 

 
package snoopy.android; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.View.OnTouchListener; 
import android.widget.LinearLayout; 
 
public class CustomView extends Activity 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        //獲取佈局文件中的LinearLayout容器  
        LinearLayout root = (LinearLayout)findViewById(R.id.root); 
        //創建DrawView組件  
        final DrawView draw = new DrawView(this); 
        //設置自定義組件的最大寬度、高度  
        draw.setMinimumWidth(300);  
        draw.setMinimumHeight(500);  
        //為draw組件綁定Touch事件  
        draw.setOnTouchListener(new OnTouchListener() 
        { 
            @Override 
            public boolean onTouch(View arg0, MotionEvent event) 
            { 
                //修改draw組件的currentX、currentY兩個屬性  
                draw.currentX = event.getX(); 
                draw.currentY = event.getY(); 
                //通知draw組件重繪  
                draw.invalidate(); 
                //返回true表明處理方法已經處理該事件  
                return true; 
            }        
        }); 
        root.addView(draw); 
    } 

摘自 hn307165411的專欄

發佈留言