java - Android 手势不起作用

标签 java android gesture

这是我的主要 Java 文件,我还将包含我的 XML 文件,问题只是应用程序不执行任何操作,我需要让它滑动以更改页面 newPage() 但是没有任何效果。我有一个不可见的按钮,但这种方法对于我尝试使用该应用程序执行的操作来说不够流畅。

 package com.example.cardtrick;

 import android.os.Bundle;
 import android.view.MotionEvent;
 import android.view.View;
 import android.widget.Button;
 import android.app.Activity;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.view.GestureDetector.OnGestureListener;
 import android.view.GestureDetector;


 public class Trick extends Activity implements OnGestureListener
{

private GestureDetector gestureScanner;
Button testButton;

@SuppressWarnings("deprecation")
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_trick);


    getRequestedOrientation();
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);

    setGestureScanner(new GestureDetector(this));

    setUp();

}


public void setUp()
{
    testButton = (Button) findViewById(R.id.btnHidden);     
    testButton.setText("");     
    testButton.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View V)
        {   
            newPage();  
        }

    });
}
public void newPage()
{       
    Intent myIntent = new Intent(getApplicationContext(), Trick2.class);
    startActivity(myIntent);
}

@Override
public boolean onDown(MotionEvent e) 
{
    // TODO Auto-generated method stub
    newPage();
    return false;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
{
    // TODO Auto-generated method stub
    newPage();
    return false;
}

@Override
public void onLongPress(MotionEvent e) 
{
    // TODO Auto-generated method stub
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) 
{
    // TODO Auto-generated method stub
    return false;
}

@Override
public void onShowPress(MotionEvent e) 
{
    // TODO Auto-generated method stub
}

@Override
public boolean onSingleTapUp(MotionEvent e) 
{
    // TODO Auto-generated method stub
    newPage();
    return false;
}

/**
 * @return the gestureScanner
 */
public GestureDetector getGestureScanner() {
    return gestureScanner;
}

/**
 * @param gestureScanner the gestureScanner to set
 */
public void setGestureScanner(GestureDetector gestureScanner) {
    this.gestureScanner = gestureScanner;
}


}





<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:screenOrientation="portrait"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/backnorepeat"
android:gravity="center_horizontal"
tools:context=".Trick" >


<Button
    android:id="@+id/btnHidden"
    style="@style/FullscreenActionBarStyle"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom" />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center"
    android:contentDescription="@string/card"
    android:src="@drawable/diamonds" />



</FrameLayout>

最佳答案

您需要将 OnTouchListener 添加到 Activity 中的所有 View 中,以便捕获它们上的触摸事件。 将此代码添加到您的 onCreate

    View.OnTouchListener gestureListener = new View.OnTouchListener() {
        public boolean onTouch(View v, MotionEvent event) {
            return gestureScanner.onTouchEvent(event);
        }
    };
    ImageView iview = (ImageView) findViewById(R.id.imageView1);
    iview.setOnTouchListener(gestureListener);

现在您可以在 onFling() 中捕获事件。接下来你必须确定滑动,请参阅答案以了解如何:https://stackoverflow.com/a/938657/2203164 .

编辑: 为了捕获 onFling(),您必须在 onDown() 中返回 true

关于java - Android 手势不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16120692/

相关文章:

java - SPRING MVC数据库jdbc错误

android - redmi手机android后台服务被杀

java - Android 语音转文本可以在模拟器中使用,但不能在手机上使用

android - 服务如何监听触摸手势/事件?

machine-learning - 手势识别功能

java - 适配器中的 Android RecyclerView 显示问题

java - 在 Spring 应用程序上下文文件中定义列表

java - AbstractMap 重写 hashcode 存在问题

android - 类文件是 Java 8,但在将 GCE 后端部署到 android studio 中的服务器时,最大支持的是 Java 7

java - Android Gestures 代码解释