ギャラリーの画像を表示する 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() が起動されることはありません。
それはバグですか、それとも何か不足していますか?