47度Android滑动列表仅在每秒触摸时接收移动事件

时间:2014-05-09 08:02:22

标签: android motionevent

我正在使用47degrees android滑动列表视图 https://github.com/47deg/android-swipelistview

我将所有复制到Eclipse项目中的文件都保持不变。

我在xml

中设置了listview
<com.company.appname.swipe.SwipeListView
            xmlns:swipe="http://schemas.android.com/apk/res-auto"
            android:id="@+id/home_list_view"
            android:listSelector="#00000000"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            swipe:swipeFrontView="@id/swipelist_frontview"
            swipe:swipeBackView="@id/swipelist_backview"
            swipe:swipeActionLeft="reveal"
            swipe:swipeActionRight="reveal"
            swipe:swipeMode="both"
            swipe:swipeCloseAllItemsWhenMoveList="false"
            swipe:swipeOpenOnLongPress="false"
            swipe:swipeAnimationTime="300"
            swipe:swipeOffsetLeft="100dp"
            swipe:swipeOffsetRight="0dp"
            />

我在代码中设置了SwipeListView

SwipeListViewTouchListener touchListener = new SwipeListViewTouchListener(mListView, R.id.swipelist_frontview, R.id.swipelist_backview);
    touchListener.resetItems();
    mListView.setOnTouchListener(touchListener);

当我尝试滑动列表项时,顶视图开始滑动一秒钟然后停止一部分(平均说10%,但可能会根据滑动的速度略有不同)。所以它被困在那个位置。我第二次尝试滑动它,它顺利滚动。

注意:我每隔一次触摸一个项目就会暂停 - 但它不必是同一个项目。例如,我可以开始滑动一行停止,然后我可以滚动相同的行或不同的行,它将是平滑的。

在调查中,我注意到第一次尝试滑动投掷和MotionEvent.ACTION_DOWN事件后跟MotionEvent.ACTION_UP事件。第二次有MotionEvent.ACTION_DOWN后跟MotionEvent.ACTION_MOVE后跟MotionEvent.ACTION_UP(所以第一次没有MotionEvent.ACTION_MOVE

有任何想法或建议吗?

2 个答案:

答案 0 :(得分:0)

我在项目中使用了swipe listview,但我没有遇到任何问题。我在你的代码和我的代码中看到的唯一区别是touchListener.resetItems(); 我使用滑动监听器而不是touchlistener。

listViewCalendar
            .setSwipeListViewListener(new BaseSwipeListViewListener() {

                @Override
                public void onOpened(int position, boolean toRight) {
                }

                @Override
                public void onClosed(int position, boolean fromRight) {
                }

                @Override
                public void onListChanged() {
                }

                @Override
                public void onMove(int position, float x) {
                }

                @Override
                public void onStartOpen(int position, int action,
                        boolean right) {

                }

                @Override
                public void onStartClose(int position, boolean right) {



                }

                @Override
                public void onClickFrontView(int position) {
                    // 
                }

                @Override
                public void onClickBackView(int position) {
                    // Log.d("swipe", 
                }

                @Override
                public void onDismiss(int[] reverseSortedPositions) {

                }

            });

    listViewCalendar.setOffsetLeft((width - convertDpToPixel(115)));
    listViewCalendar.setSwipeMode(SwipeListView.SWIPE_MODE_LEFT);
    listViewCalendar.setSwipeActionLeft(SwipeListView.SWIPE_ACTION_REVEAL);
    listViewCalendar.setOffsetLeft(width - convertDpToPixel(120f));
    listViewCalendar.setAnimationTime(75);

并且继承了我的xml。

<com.fortysevendeg.swipelistview.SwipeListView
    xmlns:swipe="http://schemas.android.com/apk/res-auto"
    android:id="@+id/listViewCalendar"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/buttonNewEntry"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/relativeLayout1"
    android:listSelector="#00000000"
    swipe:swipeBackView="@+id/back"
    swipe:swipeCloseAllItemsWhenMoveList="true"
    swipe:swipeFrontView="@+id/front"
    swipe:swipeMode="both" >
</com.fortysevendeg.swipelistview.SwipeListView>

随时提出任何问题。

答案 1 :(得分:0)

似乎将listview swipemode属性更改为

swipe:swipeMode="none"

解决了我的特殊问题。