4

私のコード例では、MainActivity.java に Android、IOS、WINDOWS の 3 つのスワイプ可能なタブがあり、スワイプを使用してタブを切り替えています。

今、私はスワイプ可能なタブで PageTransformer を実装する必要があるので、ここであなたの助けが必要です。

MainActivity.java:-

    public class MainActivity extends FragmentActivity {
    ViewPager Tab;
    TabPagerAdapter TabAdapter;
    ActionBar actionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TabAdapter = new TabPagerAdapter(getSupportFragmentManager());

        Tab = (ViewPager)findViewById(R.id.pager);
        Tab.setOnPageChangeListener(
                new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {

                        actionBar = getActionBar();
                        actionBar.setSelectedNavigationItem(position);                    
                    }
                });
        Tab.setAdapter(TabAdapter);

        ..............
    }
}

これが私のプログラムに実装したいものです:

ここに画像の説明を入力

これが私のタブの外観です:

ここに画像の説明を入力

4

3 に答える 3

6

このタイプのナビゲーションを行うには、使用setPageTransformer()する必要があります。以下のコードをページャーに使用します。

このコードをあなたのMainActivity.java

Tab = (ViewPager)findViewById(R.id.pager); // you have defined view pager as `TAB`

    Tab.setPageTransformer(false, new PageTransformer() {

            public void transformPage(View page, float position) {

                page.setRotationY(position * -30); // animation style... change as you want..
            }
        });
        Tab.setCurrentItem(pos);
    }

ここからさらにアニメーション スタイルを取得します。Pag​​eTransformerまたは ViewPager トランジションでアニメーションをカスタマイズします

于 2014-08-12T06:47:56.037 に答える
2

ここで私のソリューションを見つけました。実装は本当に簡単です

使い方は非常に簡単です。Pag​​eTransformer を ViewPager にアタッチするだけです。

viewpager.setPageTransformer(false, new ViewPager.PageTransformer() {
    @Override
    public void transformPage(View page, float position) {
        // do transformation here
        }
});

ページを Z 軸を中心に 30 度回転します。これを正規化する必要はありません。この効果は、カバー フロー UI パターンに似ています。

@Override
public void transformPage(View page, float position) {
    page.setRotationY(position * -30);
}

だからここに私が使用した私の最終的なコードがあります:

viewPager = (ViewPager)findViewById(R.id.pager);

        viewPager.setOnPageChangeListener(
                new ViewPager.SimpleOnPageChangeListener() {
                    @Override
                    public void onPageSelected(int position) {                       
                        actionBar = getActionBar();
                        actionBar.setSelectedNavigationItem(position);                    
                    }
                });

        viewPager.setAdapter(tabAdapter);        
        viewPager.setPageTransformer(false, new PageTransformer() {

            public void transformPage(View page, float position) {

                page.setRotationY(position * -30); // animation style... change as you want..
            }
        });
于 2014-08-12T07:10:01.550 に答える
0

あなたの内部クラスを作成しますActivity...

public class MyPageTransformer implements ViewPager.PageTransformer {

    public void transformPage(View view, float position) {
        // Do your transform here
    }
}

次に、にActivity設定できますViewPager。例...

Tab.setPageTransformer(true, new MyPageTransformer());

詳細については、PageTransformer を使用したアニメーションのカスタマイズを参照してください。試してカスタマイズできる変換の例もいくつかあります。

于 2014-08-05T10:37:25.457 に答える