gpt4 book ai didi

android - 使用 OnGestureListener 或 OnGesturePerformedListener 在 XML 布局之间滑动

转载 作者:行者123 更新时间:2023-11-29 21:52:31 25 4
gpt4 key购买 nike

我正在尝试在我的应用程序的页面之间实现滑动。我目前有 5 个 XML 布局文件,我可以从一个 Activity 访问所有这些文件。底部有五个按钮,代表每个布局,按下时切换到相应的 XML 布局。

我曾尝试使用 OnGestureListener 实现滑动,但它没有像我希望的那样工作。我需要滑动 View 的 Title 才能使滑动工作。当我滑过布局中显示的任何 View 时,它不起作用。

我开始寻找并找到了 GestureOverlayView,这似乎是我想要的。但是,我发现的所有实现都给我带来了问题。 Tutorial , Similar SO question .

这是我目前的代码:

public class Monitor extends Activity implements android.view.GestureDetector.OnGestureListener, OnGesturePerformedListener {
private GestureDetector gestureScanner;
private GestureOverlayView gestures;
private static final int SWIPE_MIN_DISTANCE = 50;
private static final int SWIPE_THRESHOLD_VELOCITY = 50;
private GestureLibrary gestureLib;

public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
gestures = new GestureOverlayView(this);
View inflate = getLayoutInflater().inflate(R.layout.main, null);
gestures.addView(inflate);
gestures.addOnGesturePerformedListener(this);
gestureLib = GestureLibraries.fromRawResource(this, R.raw.gestures); // Error here
if (!gestureLib.load()) {
finish();
}
setContentView(gestures);
}

我在行 gestureLib = GestureLibraries.fromRawResource(); 上收到错误。错误是 raw cannot be resolved or is not a field.。我的 /project-name/res/ 目录中没有 raw 文件夹。有任何想法吗?还有其他方法吗?

这就是我第一次实现滑动功能的方式,它只在标题栏上有效。

public class Monitor extends Activity implements android.view.GestureDetector.OnGestureListener {
private GestureDetector gestureScanner;
private static final int SWIPE_MIN_DISTANCE = 50;
private static final int SWIPE_THRESHOLD_VELOCITY = 50;
public void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
gestureScanner = new GestureDetector(this);
setContentView( R.layout.monitor );
}


@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i( "TouchEvent", "Here" );
return gestureScanner.onTouchEvent(event);
}

public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY
) {
Log.i( "OnFling", "Right" );
//ur code goes here.
if( getTitle().equals( getString( R.string.main_analogs ) ) ) {
setContentView( R.layout.monitor );
setTitle( R.string.main_monitor );
buildButtons();
if( hasRead ) {
updateMonitorForm();
}
}
}
/* on scroll to the previous page */
else if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY
) {
Log.i( "OnFling", "Left" );
//Ur code goes here
if( getTitle().equals( getString( R.string.main_monitor ) ) ) {
setContentView( R.layout.analogs );
setTitle( R.string.main_analogs );
buildButtons();
if( hasRead ) {
updateMonitorForm();
}
}
}
return false;
}

最佳答案

I am trying to implement swiping between pages on my Application. I currently have 5 XML layout files which I access all from one Activity. There are five buttons on the bottom which represent each layout and when pressed switch to the corresponding XML layout.

这将是 ViewPager 小部件的理想场景(除非您忘记添加其他重要细节)。您可以手动滑动 ViewPager(这样您就不需要自己处理触摸事件),也可以使用 ViewPager 设置当前页面 setCurrentItem 方法(Buttons 部分)。

我已经根据您的场景制作了我的小示例。该示例非常 self 解释,您可以找到它 here .

关于android - 使用 OnGestureListener 或 OnGesturePerformedListener 在 XML 布局之间滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14073508/

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