Новичок Android: понимание действий MotionEvent

Я испытываю затруднения, заставляя мое действие генерировать MotionEvent. ACTION_UP. Вероятно, ошибка новичка.

В LogCat я только вижу событие ACTION_MOVE (который является международным значением 3). Я также вижу координаты X/Y. Никакой ACTION_DOWN и никакой ACTION_UP.

Я искал везде решение. Я нашел один вопрос на форуме, который, кажется, совпадает с моей проблемой, но никакое решение не предложено: http://groups.google.com/group/android-developers/browse_thread/thread/9a9c23e40f02c134/bf12b89561f204ad?lnk=gst&q=ACTION_UP#bf12b89561f204ad

Вот мой код:

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.webkit.WebView;

public class Brand extends Activity {

public WebView webview;
public float currentXPosition;
public float currentYPosition;

@Override
public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);

    webview = new WebView(this);
    setContentView(webview);
    webview.loadUrl("file:///android_asset/Brand.html");


 }

@Override
public boolean onTouchEvent(MotionEvent me) {

    int action = me.getAction();
    currentXPosition = me.getX();
    currentYPosition = me.getY();

    Log.v("MotionEvent", "Action = " + action);
    Log.v("MotionEvent", "X = " + currentXPosition + "Y = " + currentYPosition);

    if (action == MotionEvent.ACTION_MOVE) {
         // do something
    }


    if (action == MotionEvent.ACTION_UP) {
         // do something
    }

    return true;
  }

}

13
задан Dave 9 April 2010 в 16:29
поделиться

1 ответ

Ваша проблема в том, что вы делаете это из WebView. WebView имеют встроенное сенсорное управление, позволяющее пользователю прокручивать страницу, и это должно мешать вам получать MotionEvents. Казалось бы, вам нужно будет использовать другой View. Например, я только что запустил ваш код, сделав следующую замену:

TextView tv = new TextView(this);
setContentView(tv);

вместо

webview = new WebView(this);
setContentView(webview);
webview.loadUrl("file:///android_asset/Brand.html");

, а все остальное сработало. Примечание. Я использовал TextView в качестве всего представления только для простоты. Это работает с ViewGroups, как LinearLayouts, RelativeLayouts, пользовательскими представлениями с холстами и т. Д. Просто кажется, что WebView являются особенными. (Я также получал ACTION_MOVE только при использовании WebView.) Итак, я надеюсь, что вы сможете обойтись без использования чего-то другого, кроме WebView!

10
ответ дан 1 December 2019 в 22:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: