15

I have listview with some text. I want to show images on swipe action (almost like in gmail app). For example, if I swipe from left to right - my list item is moving right, and image is sliding from the left. My list item can move right no more than image width. After swipe stops, list item is moving to start position. How could I make such thing? example

4

3 に答える 3

1

それを行うライブラリは見つかりませんでしたが、自分で作るのは難しくありません。Nick がandroid-swipetodismissを見て指摘したように、SwipeDismissListViewTouchListener.javaを見てください。

まず、あなたの子供のカスタムViewを作成する必要があります。テキストを含む別の が重なっているListViewが必要になります。ImageViewView

次に、onTouch()リスナーを に追加しますListView。(ジェスチャMotionEvent.ACTION_DOWNを開始するとき) で、タッチ座標を取得し、タッチしている子を計算しListViewます。次に例を示します。

        int[] listViewCoords = new int[2];
        mListView.getLocationOnScreen(listViewCoords);
        int x = (int) motionEvent.getRawX() - listViewCoords[0];
        int y = (int) motionEvent.getRawY() - listViewCoords[1];
        View child;
        for (int i = 0; i < childCount; i++) {
            child = mListView.getChildAt(i);
            child.getHitRect(rect);
            if (rect.contains(x, y)) {
                mDownView = child;
                break;
            }
        }

タッチした点と現在の座標のMotionEvent.ACTION_MOVE間の X 座標の差を測定すると、次のようになります。MotionEvent.ACTION_DOWN

float deltaX = motionEvent.getRawX() - mDownX;

Viewしたがって、テキストを含むを翻訳して、ImageViewが明らかになるようにします。

mDownView.setTranslationX(deltaX);

指を離すと、セットmDownView .setTranslationX(0)したばかりで、画像が再び覆われます。これは単なるガイドです。カバーされていない詳細がいくつかありますが、これで開始できるはずです。

于 2014-12-29T19:24:28.263 に答える