在这个程序里面我没有调用ondraw()方法,那么为什么没法省略这个方法呢?

zrc 发布于 2013/02/27 08:34
阅读 229
收藏 0

//自定义的View组件



package com.example.user_defined_view;



import android.content.Context; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.view.View; 


public class RabbitView extends View {// 构造一个自定义View组件 
private float bitmapX; 
private float bitmapY; 


public float getBitmapX() { 
return bitmapX; 



public void setBitmapX(float bitmapX) { 
this.bitmapX = bitmapX; 



public float getBitmapY() { 
return bitmapY; 



public void setBitmapY(float bitmapY) { 
this.bitmapY = bitmapY; 



public RabbitView(Context context) { 
super(context); 
bitmapX = 750;// 设置这个组件的初始位置 
bitmapY = 500; 



@Override 
protected void onDraw(Canvas canvas) { 
// TODO 自动生成的方法存根 
super.onDraw(canvas); 
Paint paint = new Paint();// 生成画笔 
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), 
R.drawable.rabbit);// 将图片转化为位图 问:这里的THIS代表的是什么? 
canvas.drawBitmap(bitmap, bitmapX, bitmapY, paint);// 在画布上用画笔画出转化过后的位图(表明了的位置,使用的组件的初始位置) 


if (bitmap.isRecycled()) {//判断位图是否被系统回收 
bitmap.recycle();//回收位图 




}


//程序入口

package com.example.user_defined_view;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.FrameLayout;


public class MainActivity extends Activity {


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FrameLayout framelayout = (FrameLayout) findViewById(R.id.mylayout);// 获取XML布局
final RabbitView rabbit = new RabbitView(MainActivity.this);// 实例化一个组建,传入参数,问:这个THIS是那个对象??
rabbit.setOnTouchListener(new OnTouchListener() {//为这个组件添加触摸监听


@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO 自动生成的方法存根
rabbit.setBitmapX(event.getX());
rabbit.setBitmapY(event.getY());
rabbit.invalidate();//重新绘制位图(刷新位图)
return true;
}
});
framelayout.addView(rabbit);//将组件添加到布局中去
}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}


}


加载中
返回顶部
顶部