這是我的代碼:的Android - onTouch不工作
public class ViewSecond extends View implements View.OnTouchListener{
private Context context;
private Rect tailleEcran;
private Vibrator vibrator;
private Paint paint;
private Paint monPerso = new Paint();
private Paint flecheHaut = new Paint();
private Paint flecheBas = new Paint();
private Paint flecheGauche = new Paint();
private Paint flecheDroite = new Paint();
private Bitmap bmp, bmpFlecheHaut, bmpFlecheBas, bmpFlecheGauche, bmpFlecheDroite;
private Carte carteActuelle;
public ViewSecond(Context context) {
super(context);
this.context = context;
this.vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
this.tailleEcran = getWindowSize();
this.paint = new Paint();
this.paint.setAntiAlias(true);
this.paint.setStyle(Paint.Style.FILL);
// ON S'OCCUPE DU PERSO PRINCIPAL
monPerso.setColor(Color.RED);
monPerso.setAntiAlias(false);
// ON S'OCCUPE DE LA CARTE
this.carteActuelle = new Carte(1,1,"lol");
// ON S'OCCUPE DES FLECHES DIRECTIONNEL
this.flecheHaut = new Paint();
this.flecheBas = new Paint();
this.flecheGauche = new Paint();
this.flecheDroite = new Paint();
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.flechehaut);
bmpFlecheHaut = Bitmap.createScaledBitmap(bmp,(int)(tailleEcran.exactCenterX()*2)/8,(int)(tailleEcran.exactCenterY()*2)/8,false);
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.flechebas);
bmpFlecheBas = Bitmap.createScaledBitmap(bmp,(int)(tailleEcran.exactCenterX()*2)/8,(int)(tailleEcran.exactCenterY()*2)/8,false);
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.flechegauche);
bmpFlecheGauche = Bitmap.createScaledBitmap(bmp,(int)(tailleEcran.exactCenterX()*2)/8,(int)(tailleEcran.exactCenterY()*2)/8,false);
bmp = BitmapFactory.decodeResource(getResources(),R.drawable.flechedroite);
bmpFlecheDroite = Bitmap.createScaledBitmap(bmp,(int)(tailleEcran.exactCenterX()*2)/8,(int)(tailleEcran.exactCenterY()*2)/8,false);
}
public boolean onTouch(View v, MotionEvent event) {
float x = event.getX();
float y = event.getY();
if(((x>100) && (x<550)) && ((y>100) && (y<550))){
this.vibrator.vibrate(500);
}
this.invalidate();
return false;
}
public void onClick(View v) {
this.paint.setColor(Color.RED);
this.invalidate();
}
protected void onDraw(Canvas canvas){
canvas.drawColor(Color.BLACK);
canvas.drawCircle(10, 10, 10, monPerso);
canvas.drawBitmap(bmpFlecheHaut,(int)((tailleEcran.exactCenterX()*2)/8)+10,(int)((tailleEcran.exactCenterY()*2)-(((tailleEcran.exactCenterY()*2)/8)*2)-10),null);
canvas.drawBitmap(bmpFlecheBas,(int)((tailleEcran.exactCenterX()*2)/8)+10,(int)((tailleEcran.exactCenterY()*2)-(tailleEcran.exactCenterY()*2)/8),null);
canvas.drawBitmap(bmpFlecheGauche,0,(int)((tailleEcran.exactCenterY()*2)-(tailleEcran.exactCenterY()*2)/5.5),null);
canvas.drawBitmap(bmpFlecheDroite,(int)((tailleEcran.exactCenterX()*2)/4)+20,(int)((tailleEcran.exactCenterY()*2)-(tailleEcran.exactCenterY()*2)/5.5),null);
}
// CETTE FONCTION RENVOIE UN RECTANGE DE LA TAILLE DE L'ECRAN
Rect getWindowSize() {
Rect r = new Rect();
WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
display.getRectSize(r);
return r;
}}
我想要當用戶觸摸屏幕來檢測,但它不工作,我試圖把它(onTouch方法)在這裏和在活動中,但沒有做:/任何想法? 您是否看到我的drawImages?最後,我想要檢測點擊這個圖像。 Thx:D
實現onTouchListener檢測觸摸... – 2015-04-03 06:20:24
作爲noob,... sry。但不要太工作:/ – 2015-04-03 06:24:01
如果你擴展一個View使用onTouchEvent,而不是onTouch – pskink 2015-04-03 06:28:05