Я программист n00b и нуждаюсь в большой помощи.
Просто для учебной цели я хочу сделать простую энциклопедию флоры и фауны (растений и животных)
Я хочу сделать свой домашний экран перетаскиваемым, как и домашний экран Android. Проведите пальцем вправо, чтобы открыть страницу "Завод", и проведите пальцем влево, чтобы открыть страницу "Животное". Я не знаю, как сделать эффект перехода . Поэтому мы можем перетащить его на полпути, чтобы посмотреть, что на следующей странице, и просто перетащить назад, чтобы отменить его.
Можете ли вы, ребята, поделиться ссылкой, чтобы сделать экран с возможностью перетаскивания?
Спасибо, прежде чем
[изменить]
@Agarwal Я пробовал код из вашего Link2, и он не работает.
Я пытаюсь проверить, обнаружен ли жест или нет, добавив Toast во внутренний класс, но Toast не показан. Link1 в основном то же самое.
и из внешнего вида кода, я думаю, что он не может сделать мой экран перетаскиваемым, как в главном экране Android.
мой код:
public class Home extends Activity implements OnClickListener {
private GestureDetector gestureDetector;
View.OnTouchListener gestureListener;
ImageButton flora, fauna;
Intent go;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initialize();
gestureDetector = new GestureDetector(new SwipeGestureDetector());
gestureListener = new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
};
}
private void initialize() {
//find view by id to image button
//set onClickListener to image button
}
public void onClick(View v) {
//normal switch and case for each button
}
private void onLeftSwipe() {
Toast t = Toast.makeText(Home.this, "Left swipe", Toast.LENGTH_LONG);
t.show();
go = new Intent("test.apps.FLORA");
startActivity(go);
}
private void onRightSwipe() {
Toast t = Toast.makeText(Home.this, "Right swipe", Toast.LENGTH_LONG);
t.show();
go = new Intent("test.apps.FAUNA");
startActivity(go);
}
private class SwipeGestureDetector extends SimpleOnGestureListener {
private static final int SWIPE_MIN_DISTANCE = 50;
private static final int SWIPE_MAX_OFF_PATH = 200;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
Toast t = Toast.makeText(Home.this, "Gesture detected", Toast.LENGTH_SHORT);
t.show();
float diffAbs = Math.abs(e1.getY() - e2.getY());
float diff = e1.getX() - e2.getX();
if (diffAbs > SWIPE_MAX_OFF_PATH)
return false;
// Left swipe
if (diff > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Home.this.onLeftSwipe();
}
// Right swipe
else if (-diff > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
Home.this.onRightSwipe();
}
} catch (Exception e) {
Log.e("Home", "Error on gestures");
}
return false;
}
}
}