我正試圖在我的應用程序的頁面之間實施滑動操作。我目前有5個XML佈局文件,我可以從一個Activity訪問所有文件。底部有五個按鈕,分別表示每個佈局,按下時切換到相應的XML佈局。使用OnGestureListener或OnGesturePerformedListener在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.
。我的/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;
}
'ViewPager'沒有幫助嗎? – Luksprog
ViewPager很可能有幫助,但我還沒有找到任何好的例子。我查看了所提供的文檔,但我仍然不完全理解如何實現它。 – JuiCe