組件介紹
實(shí)現(xiàn)ViewPager具有頁(yè)面切換動(dòng)畫(huà)效果坦胶。
動(dòng)態(tài)圖
原理分析
使用ViewPager接口PageTransformer,重寫(xiě)void transformPage(View page, float position)方法即可自定義動(dòng)畫(huà)歪玲。page為當(dāng)前滑動(dòng)頁(yè)面迁央,position為當(dāng)前頁(yè)面偏移量。</br>
ViewPager界面可顯示的區(qū)域只會(huì)存在兩個(gè)頁(yè)面滥崩,position的值為-1到1岖圈。當(dāng)前頁(yè)面從ViewPager中間左滑至看不見(jiàn)時(shí),position的值為0到-1钙皮,當(dāng)前頁(yè)面從ViewPager中間右滑至看不見(jiàn)時(shí)蜂科,position的值為0到1。同理短条,頁(yè)面從左側(cè)看不見(jiàn)滑至ViewPager中間导匣,position的值為-1到0,頁(yè)面從右側(cè)看不見(jiàn)滑至ViewPager中間茸时,position的值為1到0贡定。
</br>
因此,只用在position為-1到1之間時(shí)可都,根據(jù)position值缓待,為page做相關(guān)屬性動(dòng)畫(huà)即可。
使用場(chǎng)景
可以用于引導(dǎo)頁(yè)渠牲,其他圖片展示旋炒、頁(yè)面切換時(shí)需要?jiǎng)赢?huà)效果,自定義動(dòng)畫(huà)即可擴(kuò)展签杈。
如何使用
第一步:xml布局
<android.support.v4.view.ViewPager
android:id="@+id/vp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
第二步:初始化組件瘫镇、設(shè)置適配器
ViewPager vp = (ViewPager) findViewById(R.id.vp);
vp.setAdapter(new MyAdapter(getSupportFragmentManager()));
public static final int[] lays = {
R.layout.fragment_01,
R.layout.fragment_02,
R.layout.fragment_03
};
class MyAdapter extends FragmentPagerAdapter {
public MyAdapter(FragmentManager fm) {
super(fm);
}
@Override
public VpTransformerFragment getItem(int position) {
VpTransformerFragment fg = new VpTransformerFragment();
Bundle bundle = new Bundle();
bundle.putInt("layout_id", lays[position % 3]);
fg.setArguments(bundle);
return fg;
}
@Override
public int getCount() {
return 6;
}
}
第三步:設(shè)置動(dòng)畫(huà)
vp.setPageTransformer(true,new CustomPageTransformer(2));
注意事項(xiàng)
new CustomPageTransformer(int animType)中animType目前只有5(1~5)個(gè)值,對(duì)應(yīng)5種不同動(dòng)畫(huà),也可以只定義動(dòng)畫(huà)铣除。
版本控制
版本號(hào) | 更新內(nèi)容 | 修改人 | 修改時(shí)間 |
---|---|---|---|
1.0 | 初次發(fā)布 | lucky_bear | 2017/7/6 |
項(xiàng)目地址
所在文件夾 | demo位置 |
---|---|
widget.VpTransformer | com.qr.demo.widget.VpTransformerActivity |