0

This is my main Java file, I'll also include my XML file, the problem is simply that the app does nothing, I need to get it to swipe to change page newPage() but nothing works. I've got a button in it that is invisible but this method isn't smooth enough for what I'm trying to do with the app.

 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>
afuzzyllama
  • 6,538
  • 5
  • 47
  • 64
Matt Farrell
  • 191
  • 1
  • 1
  • 13

1 Answers1

1

You need to add OnTouchListener to all views in your activity in order to catch Touch Events on them. Add this code to your 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);

Now you can catch events in onFling(). Next you have to Determine the swipe, see the answer to read how: https://stackoverflow.com/a/938657/2203164 .

EDIT: In order to catch onFling() you have to return true in your onDown().

Community
  • 1
  • 1
lopisan
  • 7,720
  • 3
  • 37
  • 45