ViewPager与PagerAdapter

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(ビュービュー、オブジェクトのオブジェクト); //チェックが表示オブジェクトに関連付けられています、

どのようなデモ次のショー



16583158-400b322d05bdab58.gif

パッケージ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(アニメーターアニメーション){}

        });

    }

}

16583158-dc99f74a1879e7b6.gif

 注意:

ViewPager ScrollView外にネストしている場合には、ViewPagerは、要素を表示しないことが判明。

ソリューション:

AndroidのScrollView指定されたノード:fillviewport = "true" を

ます。https://www.jianshu.com/p/6c8a7e5d21f6で再現

おすすめ

転載: blog.csdn.net/weixin_33744141/article/details/91141319