0

这是我的主要 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>
4

1 回答 1

1

您需要将 OnTouchListener 添加到活动中的所有视图中,以便在它们上捕获触摸事件。将此代码添加到您的 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() 你必须return true在你的 onDown() 中。

于 2013-04-20T13:27:48.580 回答