我首先是android新手,所以首先想想任何新手的错误
我想在我的代码中添加一个fling函数.
public class MainGamePanel extends SurfaceView implements
SurfaceHolder.Callback, OnGestureListener {
private MainThread thread;
private Droid droid;
private Droid droid2;
private static final String TAG = gameView.class.getSimpleName();
private GestureDetector gestureScanner;
public MainGamePanel(Context context){
super(context);
getHolder().addCallback(this);
droid = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.playerbox2), 270, 300);
droid2 = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.playerbox2), 50, 300);
thread = new MainThread(getHolder(), this);
setFocusable(true);
gestureScanner = new GestureDetector(this);
}
public boolean onTouchEvent(MotionEvent event){
return gestureScanner.onTouchEvent(event);
}
@Override
protected void onDraw(Canvas canvas){
canvas.drawColor(Color.BLACK);
droid.draw(canvas);
droid2.draw(canvas);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
{
droid.setX(50);
droid.setY(50);
Log.d(TAG, "Coords: x=" + e1.getX() + ",y=" + e2.getY());
return true;
}
@Override
public boolean onDown(MotionEvent e) {
droid2.setX((int)e.getX());
droid2.setY((int)e.getY());
Log.d(TAG, "Coords: x=" + e.getX() + ",y=" + e.getY());
return false;
}
Run Code Online (Sandbox Code Playgroud)
我得到了gestureListener:onDown,onLongPress和onShowPress.
但我无法对onFling,onSingleTapUp和onScroll做出任何回应.
我犯了什么错误?它与观点有关吗?
我不知道看到什么代码有用....所以任何建议都会非常感激.谢谢!
Fra*_*ita 51
onDown在onFling事件发生之前调用.如果在onDown方法中返回false ,则运动事件传播将停止.
尝试return false在方法return true结束时进行更改onDown.
在Dev指南的Input Events页面中,有点迟钝地解释了返回值.(在示例代码下方向下滚动以查看).
小智 7
您需要将视图设置为longclickable,如下所示:
yourView.setLongClickable(true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11903 次 |
| 最近记录: |