HorizontalScrollView内にLinearLayoutがあります。内容はイメージです。スクロール中に、iPhoneのHSWに相当するものでページングオプションを設定するときと同じ動作を実現する必要があります(リストのスクロールは、リストのすべてのページで停止し、移動を続ける必要はありません)。
これはAndroidでどのように行われますか?この機能を自分で実装する必要がありますか、それとも設定する特定のプロパティまたはHSVのサブクラスを実装する必要がありますか?
だから、私の解決策は:
メソッドcomputeScrollは、リストを移動するために呼び出されます。デフォルトでは、特定の比率で減速するように実装されていると思います...このモーションは必要ないので、ボディを指定せずにオーバーライドするだけです。
イベントハンドラのコードは次のとおりです。
_scrollView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP)
{
float currentPosition = _scrollView.getScrollX();
float pagesCount = _horizontalBar.getChildCount();
float pageLengthInPx = _horizontalBar.getMeasuredWidth()/pagesCount;
float currentPage = currentPosition/pageLengthInPx;
Boolean isBehindHalfScreen = currentPage-(int)currentPage > 0.5;
float edgePosition = 0;
if(isBehindHalfScreen)
{
edgePosition = (int)(currentPage+1)*pageLengthInPx;
}
else
{
edgePosition = (int)currentPage*pageLengthInPx;
}
_scrollView.scrollTo((int)edgePosition, 0);
}
return false;
}
});
そして私の継承したHorizontalScrollView
@Override
public void computeScroll (){
return;
}
私はここでニースの解決策に出会いました:
これは、ここにあるコードのクリーンアップされたGitHubバージョンです。
画像で使用するのはやり過ぎのように思えるかもしれませんが、このソリューションでは、小さなトリックを使用して無限のページングを行うことができます(つまり、最初のページで最後のページに戻ることができ、最後のページで最初のページに進むことができます) )。また、不明な数のページを作成し、別の小さなトリックを使用してコンテンツを動的に生成することもできます。 2番目のリンクで私のコメントを参照してください ここ
私がこれをどのように達成したかの詳細については。
お役に立てれば。
Android=)の新しい互換性パッケージ(リビジョン3)は、それを行うViewPagerを追加しました。