为什么我的观点没有得到我的触摸事件

时间:2016-06-15 23:56:19

标签: java android canvas touch-event

我有以下代码:

package com.teste;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;


public class ball extends View implements View.OnTouchListener {

    Bitmap littleBall;
    float x, y;
    private int mWidth, mHeight;
    private GestureDetector mDetector;

    public ball(Context context) {
        super(context);
    }

    public ball(Context context, AttributeSet attrs) {
        super(context, attrs);

    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();

        mDetector = new GestureDetector(this.getContext(), new BallListener());

    }

    @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        mWidth = View.MeasureSpec.getSize(widthMeasureSpec);
        mHeight = View.MeasureSpec.getSize(heightMeasureSpec);

        x = mWidth/2;
        y = mHeight/2;

        setMeasuredDimension(mWidth, mHeight);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);

        littleBall = BitmapFactory.decodeResource(getResources(), R.drawable.verde);
        Bitmap resizedBitmap = Bitmap.createScaledBitmap(littleBall, 200, 200, false);
        canvas.drawBitmap(resizedBitmap, (x - (resizedBitmap.getWidth() / 2)), (y - resizedBitmap.getHeight()/2), null);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        Toast.makeText(getContext(), "teste", Toast.LENGTH_LONG);
        return mDetector.onTouchEvent(event);
    }

    class BallListener extends GestureDetector.SimpleOnGestureListener {

        @Override
        public boolean onDown(MotionEvent e) {
            return true;
        }

        @Override
        public boolean onSingleTapUp(MotionEvent e) {

            if (e.getAction() == MotionEvent.ACTION_UP) {
                x = e.getX();
                y = e.getY();
                invalidate();
            }
            return super.onSingleTapUp(e);
        }
    }
}

在不久的将来,当我在屏幕上滑动手指时,我想让球移动到一个地方。但是一开始,我的目标是让LittleBall(使用画布和位图创建)在我触摸屏幕时改变它的位置。我正在使用onTouch和一个gestureListener。在网上搜索,我找到了其他方法来获得像onTouchListener一样的触摸,甚至看起来和Android Developer Help我都不明白这些方法之间有什么区别......

有人可以用一种简单的方式解释我应该使用这些方法以及我做错了甚至不显示我的文字吗?

0 个答案:

没有答案