2

チュートリアルから取得したコードを使用した実際のビューページャーの例があります。このチュートリアルは、明らかに専門家である Lauren Darcey と Shane Conder によって書かれました (私は Android の初心者です)。コードは以下に貼り付けます。このコードが行っていることは、ユーザーが水平方向にスワイプすると、膨張 (前方) と破壊 (後方) です。5ページしかありません。それらをすべて膨らませてから、膨らませたり破壊したりせずにユーザーにすべてのスワイプをさせる方がはるかに賢明だと思われます。1 つの大きな幅の広いページ (Windows Phone 7 の Panarama コントロールと Pivot コントロールなど) のように。

また、ページの 1 つに Google マップがある場合、このコードは失敗します。2 回目のインフレーションで吹き飛ばされます (理由はまだわかりません)。

このようにしなければならない理由はありますか?私が提案する方法で利用できる例はありますか? ありがとう、ゲイリー・ブレイクリー

    private class MyPagerAdapter extends PagerAdapter {

    public int getCount() {
        return 5;
    }

    public Object instantiateItem(View collection, int position) {

        LayoutInflater inflater = (LayoutInflater) collection.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        int resId = 0;
        switch (position) {
        case 0:
            resId = R.layout.farleft;
            break;
        case 1:
            resId = R.layout.left;
            break;
        case 2:
            resId = R.layout.middle;
            break;
        case 3:
            resId = R.layout.right;
            break;
        case 4:
            resId = R.layout.farright;
            break;
        }

        View view = inflater.inflate(resId, null);

        ((ViewPager) collection).addView(view, 0);

        return view;
    }

    @Override
    public void destroyItem(View arg0, int arg1, Object arg2) {
        ((ViewPager) arg0).removeView((View) arg2);

    }
4

1 に答える 1

9

を使用ViewPager.setOffscreenPageLimit(int)して、すべてのオフスクリーン タブをロードできます。または4を実行して、(合計 5 から 1 を引いた値) に設定するだけです。((ViewPager) collection).setOffscreenPageLimit(4);((ViewPager) collection).setOffscreenPageLimit(getCount() - 1);

これがメモリに与える影響に注意してください。注意しないと、すべてをロードすると、デバイスの RAM が使い果たされます。

于 2012-08-16T17:59:10.783 に答える