gpt4 book ai didi

Android在RelativeLayout中左右滑动

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:07 28 4
gpt4 key购买 nike

我正在尝试在我的 RelativeLayout 中实现向左或向右滑动。我写了一些代码,但无法向左或向右滑动。我正在使用 GestureDetector这是我的来源

private GestureDetector gesturedetector = null;
private RelativeLayout swipelayout;

@SuppressLint("UseValueOf")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.strada_menu_result_loadmore,
container, false);


swipelayout = (RelativeLayout) rootView.findViewById(R.id.swipelayout);

gesturedetector = new GestureDetector(new MyGestureListener());
swipelayout.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

gesturedetector.onTouchEvent(event);

return true;

}

});




return rootView;

}


public boolean dispatchTouchEvent(MotionEvent ev){



return gesturedetector.onTouchEvent(ev);
}



class MyGestureListener extends GestureDetector.SimpleOnGestureListener {

private static final int SWIPE_MIN_DISTANCE = 150;

private static final int SWIPE_MAX_OFF_PATH = 100;

private static final int SWIPE_THRESHOLD_VELOCITY = 100;

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

float dX = e2.getX() - e1.getX();

float dY = e1.getY() - e2.getY();

if (Math.abs(dY) >= SWIPE_THRESHOLD_VELOCITY
&& Math.abs(velocityX) >= SWIPE_THRESHOLD_VELOCITY &&

Math.abs(dX) >= SWIPE_MIN_DISTANCE) {

if (dX > 0) {

Toast.makeText(getActivity(), "Right Swipe",
Toast.LENGTH_SHORT).show();

} else {

Toast.makeText(getActivity(), "Left Swipe",
Toast.LENGTH_SHORT).show();

}

return true;

}
return false;

}
}

我做错了什么?如果有人知道解决方案请帮助我谢谢

最佳答案

你只需要一个 OnTouchListener,这应该是简单的答案。看一看。我在一些工作项目中使用了这段代码,所以一切都应该工作正常。但是,如果缺少某些内容并且不起作用,请告诉我。

yourRelativeLayout.setOnTouchListener(new OnTouchListener() {

int downX, upX;

@Override
public boolean onTouch(View v, MotionEvent event) {

if (event.getAction() == MotionEvent.ACTION_DOWN) {
downX = (int) event.getX();
Log.i("event.getX()", " downX " + downX);
return true;
}

else if (event.getAction() == MotionEvent.ACTION_UP) {
upX = (int) event.getX();
Log.i("event.getX()", " upX " + upX);
if (upX - downX > 100) {

// swipe right
}

else if (downX - upX > -100) {

// swipe left
}
return true;

}
return false;
}
});

关于Android在RelativeLayout中左右滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24827675/

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