相关疑难解决方法(0)

覆盖onTouchEvent与ScrollView竞争

从简单的概述我有一个自定义视图,其中包含用户可以拖动和调整大小的一些位图.

我这样做的方式是相当标准的,因为我在我的CustomView中重写onTouchEvent并检查用户是否在图像中触摸等.

当我想将这个CustomView放在ScrollView中时,我的问题出现了.这可行,但ScrollView和CustomView似乎竞争MotionEvents,即当我尝试拖动图像时,它移动缓慢或视图滚动.

我想我可能需要扩展ScrollView,以便我可以覆盖onInterceptTouchEvent并让它知道用户是否在图像的范围内而不是尝试滚动.但是,因为ScrollView在层次结构中更高,我将如何访问CustomView的当前状态?

有没有更好的办法?

user-interface android drag-and-drop scrollview

16
推荐指数
2
解决办法
2万
查看次数

Android onFling没有响应

我首先是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 …
Run Code Online (Sandbox Code Playgroud)

android

7
推荐指数
2
解决办法
1万
查看次数

将GestureOverlayView添加到我的SurfaceView类,如何添加到视图层次结构?

我在后来的回答中被告知我必须将我在代码中创建的GestureOverlayView添加到我的视图层次结构中,而我不是100%如何做到这一点.以下是完整性的原始问题.

我希望我的游戏能够识别手势.我有一个很好的SurfaceView类,我在onDraw上绘制我的精灵,我有一个运行它的线程来调用onDraw等.

一切都很好.

我试图将GestureOverlayView添加到此,它只是无法正常工作.最后被黑客攻击它不会崩溃的地方,但这就是我所拥有的

public class Panel extends SurfaceView implements SurfaceHolder.Callback,         OnGesturePerformedListener  
{ 
public Panel(Context context)
{
    theContext=context;
    mLibrary = GestureLibraries.fromRawResource(context, R.raw.myspells);
    GestureOverlayView gestures = new GestureOverlayView(theContext);       
    gestures.setOrientation(gestures.ORIENTATION_VERTICAL);
    gestures.setEventsInterceptionEnabled(true);
    gestures.setGestureStrokeType(gestures.GESTURE_STROKE_TYPE_MULTIPLE);

    gestures.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.FILL_PARENT));

    //GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
    gestures.addOnGesturePerformedListener(this);
 }
 ...
 ...
 onDraw...
surfaceCreated(..);
...
...


public void onGesturePerformed(GestureOverlayView overlay, Gesture gesture) {
  ArrayList<Prediction> predictions = mLibrary.recognize(gesture);

  // We want at least one prediction
  if (predictions.size() > 0) {
   Prediction prediction = predictions.get(0);
   // We want at least some confidence …
Run Code Online (Sandbox Code Playgroud)

android gesture surfaceview

3
推荐指数
1
解决办法
6397
查看次数