在Gallery上仅按手势导航一个View

时间:2011-08-22 14:07:30

标签: android navigation android-gallery

我有一个图库,每个当前项目都与显示尺寸相匹配。我希望当用户尝试将视图“抛出”到任何一侧时,而不是自动滚动,我想只去下一个视图。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

检查此代码段。它不使用滚动常量,而是依赖于scolling键事件来处理不同的分辨率。

private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2){
    return e2.getX() > e1.getX();
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){
    int kEvent;
    if(isScrollingLeft(e1, e2)){ //Check if scrolling left
        kEvent = KeyEvent.KEYCODE_DPAD_LEFT;
    }
    else{ //Otherwise scrolling right
        kEvent = KeyEvent.KEYCODE_DPAD_RIGHT;
    }
    onKeyDown(kEvent, null);
    return true;  
}

这段代码属于一个galleryView模型,它扩展了Gallery,其布局如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="180dp">
    <com.example.android.GalleryView
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="180dp"
        android:gravity="bottom"
        android:fadingEdge="none"/>
</LinearLayout>