gpt4 book ai didi

java - Android 手势不起作用

转载 作者:行者123 更新时间:2023-12-01 14:39:31 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com