5

ギャラリーの画像を表示する GridView があります。ユーザーがリストをスクロールすると、画像の詳細が左からアニメーションで表示されます。これを、GridView アイテムのカスタム レイアウトを定義するクラスに実装しました。LinearLayoutを拡張します。

OnScrollChangedListener mScrollListener = new OnScrollChangedListener() {
    @Override
    public void onScrollChanged() {
        if (!getGlobalVisibleRect(r)) {
            resetAnimation();
        } else {
            if (checkBounds()) {
                    showInfo();
            }
            } else {
                    hideInfo();
            }

メソッドresetAnimation()は、ビューが画面に表示されていない場合にアニメーションをリセットします。メソッドcheckBounds()は、 getGlobalVisibleRect(r)で取得した Rectと画面を表す Rect を比較して、詳細ビューを表示する必要があるかどうかを確認します。

次のようにonFinishInflate()にリスナーを追加します。

        getViewTreeObserver().addOnScrollChangedListener(mScrollListener);

実際の問題: API 19、API 18、API 17、および API 13
で すべてが正常に動作し、実際のデバイスとエミュレーターの両方でテストされています。API 14 (Android 4.0.1 および 4.0.2) では、物理デバイスとエミュレーターの両方で onScrollChanged() が起動されることはありません。 それはバグですか、それとも何か不足していますか?

4

1 に答える 1

1

の代わりに...OnScrollChangedListenerを試していただけますか?OnScrollListener

    gridView.setOnScrollListener(new AbsListView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(AbsListView view, int scrollState) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onScroll(AbsListView view, int firstVisibleItem,
                int visibleItemCount, int totalItemCount) {
            // TODO Auto-generated method stub

        }
    });

なぜ4.0で起動しないのかわかりませんが、これで試すことができます...

于 2013-12-30T05:43:29.683 に答える