这是我的主要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>
答案 0 :(得分: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(),你必须在onDown()中return true
。