ViewPagerは、ビュー内でスライドするために使用することができ成分であり、彼は相棒のPagerAdapter、我々は彼らの2人のパートナーの能力を見てみましょう。この時間を持っています。
私たちは、PagerAdapter ViewPagerと組み合わせて使用したいです
まず、レイアウトファイル
<android.support.v4.view.ViewPager
アンドロイド:ID = "@ + ID / viewpager"
アンドロイド:layout_width = "match_parent"
アンドロイド:layout_height = "match_parent" >
その後、独自のアダプタ継承PagerAdapterを実装します。PagerAdapterを達成する方法
)(1、公共のint同様にgetCount; //ビューの総数を取得します。
2、公共ボイドstartUpdate(のViewGroupコンテナ); 3は、パブリックオブジェクトinstantiateItem(のViewGroupコンテナ、INT位置); //現在のビューをインスタンス化し、contrainerはisViewFromObjectため(に戻るか、関連する生成されたビュー・オブジェクトその後に添加し、そしてチェックしてください)
。4、destroyItemます。public void(のViewGroupコンテナ、 int型の位置、オブジェクトオブジェクト); //(メモリを解放する)ビューからコンテナを削除するには、指定5、finishUpdateます。public void(のViewGroupコンテナ)。
6、パブリックブールisViewFromObject(ビュービュー、オブジェクトのオブジェクト); //チェックが表示オブジェクトに関連付けられています、
どのようなデモ次のショー
パッケージcom.example.communityfunction.myView;輸入はjava.util.List;輸入android.animation.Animator;輸入android.animation.Animator.AnimatorListener;輸入android.animation.AnimatorSet;輸入android.animation.ObjectAnimator;輸入android.app .ActionBar.LayoutParams;インポートandroid.content.Context;輸入android.graphics.Bitmap;インポートandroid.support.v4.view.PagerAdapter;インポートandroid.support.v4.view.ViewPager;輸入android.view.View;インポートアンドロイド.view.View.OnClickListener;輸入android.view.ViewGroup;輸入android.widget.ImageView; publicclassImgViewPagerAdapterextends PagerAdapter
{
privateList imgBm;
プライベートコンテキストmContext。
プライベートViewPagerページャ。
publicImgViewPagerAdapter(コンテキスト・コンテキスト、ListimgBm、ViewPagerページャ)
{
this.imgBm = imgBm。
this.mContext =コンテキスト。
this.pager =ページャ。
}
@オーバーライド
publicint同様にgetCount()
{
imgBm.sizeを返します();
}
@オーバーライド
publicObject instantiateItem(finalViewGroup容器、INT位置)
{
ImageViewのImageViewの=新しいImageViewの(mContext)。
imageView.setImageBitmap(imgBm.get(位置))。
container.addView(ImageViewの、LayoutParams.MATCH_PARENT、LayoutParams.MATCH_PARENT)。
imageView.setOnClickListener(新しいOnClickListener()
{
@オーバーライド
publicvoidのonClick(ビューV)
{
startAnim();
}
});
returnimageView; }
PagerAdapterのみ3枚のキャッシュ画像が表示されるように、//キャッシュの範囲を超えてスライド画像が、それはこのメソッドを呼び出した場合、画像が破壊されます
@Override publicvoiddestroyItem(のViewGroup容器、intposition、オブジェクトのオブジェクト)
{container.removeView((ビュー)オブジェクト)。}。
@オーバーライド
publicbooleanisViewFromObject(表示arg0は、オブジェクトARG1)
{
returnarg0 ==引数1; //公式プロンプト書か}
/ *
*アニメーション
* /
publicvoid startAnim()
{
AnimatorSet animSet AnimatorSet =新しいです();
animSet.play(ObjectAnimator.ofFloat(ページャ、 "アルファ"、1.0F、0F))
.with(ObjectAnimator.ofFloat(ページャ、 "scaleXプロパティ"、1.0F、0F))
.with(ObjectAnimator.ofFloat(ページャ、 "scaleYの"、1.0F、0F))。
animSet.setDuration(400)。
animSet.start();
animSet.addListener(新しいAnimatorListener(){
@オーバーライド
publicvoid onAnimationStart(アニメーターアニメーション){}
@オーバーライド
publicvoid onAnimationRepeat(アニメーターアニメーション){}
@オーバーライド
publicvoid onAnimationEnd(アニメーターアニメーション)
{
pager.setVisibility(View.GONE)。
}
@オーバーライド
publicvoid onAnimationCancel(アニメーターアニメーション){}
});
}
}
注意:
ViewPager ScrollView外にネストしている場合には、ViewPagerは、要素を表示しないことが判明。
ソリューション:
AndroidのScrollView指定されたノード:fillviewport = "true" を
ます。https://www.jianshu.com/p/6c8a7e5d21f6で再現