自定义View代码如下。我希望把这个view插入到一个layout的xml的文件中。一直出错,错误类型是error inflating class。应该是这个View出的问题
package com.example.browserstation;
import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Message;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class touchmove extends View{
private int start_x;
private final int width = MainActivity.screenWidth;
private int height ;
private int backwidth;
private int ori_x = 0; //点击屏幕原始坐标,当前坐标和位移数据
private int ori_y = 0;
private int cur_x = 0;
private int cur_y = 0;
private int del_x = 0;
private int del_y = 0;
private Bitmap bmp_back;
private Bitmap bmp_bg1;
private Bitmap bmp_draw0;
private Bitmap bmp_draw1;
private Boolean flag_move = false;
private Boolean flag_temp = false;
private int index = 0;
private Context c;
private TimerTask ttsk = new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
if(flag_move)h.sendEmptyMessage(0x888);
}
};
final Handler h = new Handler(){ //处理信息,背景移动
public void handleMessage(Message msg){
if(msg.what == 0x888){
if(start_x < (backwidth - width-2)){
flag_temp = false;
start_x += 3;
}else if(start_x < backwidth - 3){
start_x += 3;
flag_temp = true;
}else{
if(index>0){
backwidth = bmp_back.getWidth();
index = 0;
}else {
backwidth = bmp_bg1.getWidth();
index += 1;
}
start_x = 0;
flag_temp = false;
flag_move = false;
}
}
invalidate();
}
};
private Timer timer;
public touchmove(Context context) {
super(context);
c = context;
bmp_back = BitmapFactory.decodeResource(getResources(), R.drawable.mainback);
bmp_back = new zoompicture(bmp_back,bmp_back.getWidth(),MainActivity.screenHeight).getOutbtm();
bmp_bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1);
bmp_bg1 = new zoompicture(bmp_bg1,bmp_bg1.getWidth(),MainActivity.screenHeight).getOutbtm();
start_x = 0;
backwidth = bmp_back.getWidth();
height = MainActivity.screenHeight;
bmp_draw0 = bmp_back;
bmp_draw1 = bmp_back;
timer = new Timer();
timer.schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
if(flag_move){
h.sendEmptyMessage(0x888);
}
}
}, 0, 100);
}
public touchmove(Context context, AttributeSet attrs) {
super(context,attrs);
// TODO Auto-generated constructor stub
c = context;
bmp_back = BitmapFactory.decodeResource(getResources(), R.drawable.mainback);
bmp_back = new zoompicture(bmp_back,bmp_back.getWidth(),MainActivity.screenHeight).getOutbtm();
bmp_bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1);
bmp_bg1 = new zoompicture(bmp_bg1,bmp_bg1.getWidth(),MainActivity.screenHeight).getOutbtm();
start_x = 0;
backwidth = bmp_back.getWidth();
height = MainActivity.screenHeight;
bmp_draw0 = bmp_back;
bmp_draw1 = bmp_back;
timer.schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
if(flag_move){
h.sendEmptyMessage(0x888);
}
}
}, 0, 100);
}
public touchmove(Context context, AttributeSet attrs, int delStyle) {
super(context,attrs,delStyle);
// TODO Auto-generated constructor stub
c = context;
bmp_back = BitmapFactory.decodeResource(getResources(), R.drawable.mainback);
bmp_back = new zoompicture(bmp_back,bmp_back.getWidth(),MainActivity.screenHeight).getOutbtm();
bmp_bg1 = BitmapFactory.decodeResource(getResources(), R.drawable.bg1);
bmp_bg1 = new zoompicture(bmp_bg1,bmp_bg1.getWidth(),MainActivity.screenHeight).getOutbtm();
start_x = 0;
backwidth = bmp_back.getWidth();
height = MainActivity.screenHeight;
bmp_draw0 = bmp_back;
bmp_draw1 = bmp_back;
timer.schedule(new TimerTask(){
@Override
public void run() {
// TODO Auto-generated method stub
if(flag_move){
h.sendEmptyMessage(0x888);
}
}
}, 0, 100);
}
/* (non-Javadoc)
* @see android.view.View#onTouchEvent(android.view.MotionEvent)
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch(action){
case MotionEvent.ACTION_DOWN:ori_x = (int)event.getX();ori_y = (int)event.getY();
Log.v("ori_x :",""+ori_x);
return true;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:cur_x = (int)event.getX();cur_y = (int)event.getY();
del_x = cur_x - ori_x;del_y = cur_y - ori_y;
if(del_x < -50){
flag_move = true;
};Log.v("delx: ",""+del_x);
break;
}
// TODO Auto-generated method stub
return super.onTouchEvent(event);
}
/* (non-Javadoc)
* @see android.view.View#onDraw(android.graphics.Canvas)
*/
@Override
protected void onDraw(Canvas canvas) {
if(!flag_temp){
switch(index){
case 0:bmp_draw0 = Bitmap.createBitmap(bmp_back,start_x,0,width,height);
bmp_draw1 = bmp_draw0;
canvas.drawBitmap(bmp_draw0,0,0,new Paint());
break;
case 1:bmp_draw0 = Bitmap.createBitmap(bmp_bg1,start_x,0,width,height);
bmp_draw1 = bmp_draw0;
canvas.drawBitmap(bmp_draw0,0,0,new Paint());
break;
}
}else{
switch(index){
case 0:bmp_draw0 = Bitmap.createBitmap(bmp_back,start_x,0,bmp_back.getWidth()-start_x,height);
bmp_draw1 = Bitmap.createBitmap(bmp_bg1,0,0,start_x+width-backwidth,height);
canvas.drawBitmap(bmp_draw0,0,0,new Paint());
canvas.drawBitmap(bmp_draw1, width-bmp_draw1.getWidth(),0, new Paint());
break;
case 1:bmp_draw0 = Bitmap.createBitmap(bmp_bg1,start_x,0,bmp_bg1.getWidth()-start_x,height);
bmp_draw1 = Bitmap.createBitmap(bmp_back,0,0,start_x+width-backwidth,height);
canvas.drawBitmap(bmp_draw0,0,0,new Paint());
canvas.drawBitmap(bmp_draw1, width-bmp_draw1.getWidth(),0, new Paint());
break;
}
}
Log.v("v","draw1:"+bmp_draw0.getWidth()+"draw2:"+bmp_draw1.getWidth()+" strat_x"+start_x);
// TODO Auto-generated method stub
super.onDraw(canvas);
}
}