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 件のコメント:
コメントを投稿