gpt4 book ai didi

android - 如何在android中实现触摸和滑动事件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:02:46 25 4
gpt4 key购买 nike

我正在开发一个应用程序,我在其中实现了触摸事件和滑动事件,但现在我需要实现一个向左或向右拖动屏幕的事件。

任何建议..

最佳答案

让我们把它们分开:

触摸事件:

这是一个简单示例,说明如何检测简单的触摸事件、获取坐标并显示 toast 。

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.Toast;

public class MainActivity extends Activity {

private boolean isTouch = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

}


@Override
public boolean onTouchEvent(MotionEvent event) {

int X = (int) event.getX();
int Y = (int) event.getY();

int eventaction = event.getAction();

switch (eventaction) {

case MotionEvent.ACTION_DOWN:

Toast.makeText(this, "ACTION_DOWN AT COORDS "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();

isTouch = true;
break;

case MotionEvent.ACTION_MOVE:

Toast.makeText(this, "MOVE "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();

break;

case MotionEvent.ACTION_UP:

Toast.makeText(this, "ACTION_UP "+"X: "+X+" Y: "+Y, Toast.LENGTH_SHORT).show();

break;

}

return true;

}

}

如果你想实现水平滑动你可以使用这个

private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_MAX_OFF_PATH = 250;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;


int[] values = new int[] {
R.drawable.image1,
R.drawable.image2,
R.drawable.image3 };

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {

try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) {
return false;
}

/**
* left to right swipe
*/
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {

//next image
setImage(image+1);


/**
* right to left
*/
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {


//prev image
setImage(image-1);

}

} catch (Exception e) {

}
return false;
}

关于android - 如何在android中实现触摸和滑动事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17896664/

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