Android: проведите по экрану, чтобы открыть другое действие?

Я программист n00b, и мне нужна большая помощь.

Просто в учебных целях я хочу сделать простую энциклопедию флоры и фауны (растений и животных)

Я хочу сделать свой домашний экран перетаскиваемым, как домашний экран Android. Проведите пальцем вправо, чтобы открыть страницу растений, и проведите пальцем влево, чтобы открыть страницу животных. Я не знаю, как сделать эффект перехода. Таким образом, мы можем перетащить его наполовину, чтобы посмотреть, что находится на следующей странице, и просто перетащить назад, чтобы отменить его.

Ребята, вы можете поделиться ссылкой, чтобы сделать экран перетаскиваемым?

Спасибо, прежде чем

[Изменить]

@Агарвал Я попробовал код из вашего 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;
    }

}
}
20
задан hrsetyono 12 April 2012 в 16:00
поделиться