我正在尝试在我的应用程序的页面之间实现滑动。我目前有5个XML布局文件,我可以从一个Activity访问所有文件。底部有五个按钮代表每个布局,按下时会切换到相应的XML布局。
我尝试使用OnGestureListener
实现滑动,但它不能按照我的意愿运行。我需要滑动视图的Title
以便滑动才能工作。当我滑过布局中显示的任何视图时,它不起作用。
我开始寻找并找到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.
。我的raw
目录中没有/project-name/res/
个文件夹。有任何想法吗?还有另一种方法吗?
这是我第一次实现滑动功能的方式,只能在标题栏中使用。
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;
}
答案 0 :(得分:2)
我正在尝试在我的应用程序的页面之间实现滑动。一世 目前有5个XML布局文件,我从一个访问所有文件 活动。底部有五个按钮代表每个按钮 布局和按下时切换到相应的XML布局。
这将是ViewPager
小部件的理想方案(除非您忘记添加其他重要细节)。您可以手动滑动ViewPager
(这样您就不需要自己处理触摸事件了),也可以使用ViewPager
方法设置setCurrentItem
的当前页面( Buttons
部分。
我根据你的情况制作了我的小例子。该样本非常自我解释,您可以找到它here。