ListViewを継承してオーバースクロール出来るようにする。
なにはともあれ、ListViewを継承する。
public class OverScrollListView extends ListView {あとは、overScrollByメソッドをオーバライドするだけ!
/** overScrollする値. */ private int overScrollDistance = 80; /** * OverScrollする値を設定します。(外部クラスから変更可能にする) * @param overScrollDistance OverScrollする値 * @since 1.0.0 */ public void setOverScrollDistance(int overScrollDistance) { this.overScrollDistance = mOverscrollDistance; } /** * {@inheritDoc} * @see android.view.View#overScrollBy( * int, int, int, int, int, int, int, int, boolean) * @since 1.0.0 */ @Override protected boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY, int scrollRangeX, int scrollRangeY, int maxOverScrollX, int maxOverScrollY, boolean isTouchEvent) { return super.overScrollBy(deltaX, deltaY, scrollX, scrollY, scrollRangeX, scrollRangeY, maxOverScrollX, overScrollDistance, isTouchEvent); }オーバースクロールとは直接関係ないけど、ListViewスクロール時に背景色が変わってしまう対応も。
/** * 初期化処理を行います。 * @since 1.0.0 */ private void initialize() { // スクロール時の背景色変更を無効にする。 super.setScrollingCacheEnabled(false); // 常にスクロール可にする。 super.setOverScrollMode(OVER_SCROLL_ALWAYS); }上記カスタムListViewを使うには、layoutを記載するxmlに以下のようにパッケージ名から指定する。
<パッケージ名.OverScrollListView android:id="@+id/custom_list_view" android:layout_width="match_parent" android:layout_height="wrap_content" />あとは、通常のListViewのように使うだけ。
おしまい。
0 件のコメント:
コメントを投稿