在滑動時,您應該使用PageTransformer
將轉換應用於ViewPager
的每個頁面。基本知識涵蓋在Android Developer Training中。
下面實現你在一個非常簡單的方法所需要的一些代碼:
public class SwipeAnimationActivity extends Activity {
private static final String[] COUNTRIES = new String[]{
"Belgium", "France", "Italy", "Germany", "Spain",
"Austria", "Russia", "Poland", "Croatia", "Greece",
"Ukraine",
};
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_swipe_animation);
viewPager = (ViewPager) findViewById(R.id.view_pager);
viewPager.setAdapter(createPagerAdapter());
viewPager.setPageTransformer(false, createPageTransformer());
}
private FragmentPagerAdapter createPagerAdapter() {
return new FragmentPagerAdapter(getFragmentManager()) {
@Override
public Fragment getItem(int position) {
ListFragment listFragment = new ListFragment();
listFragment.setListAdapter(createListAdapter());
return listFragment;
}
@Override
public int getCount() {
return 3;
}
};
}
private ArrayAdapter<String> createListAdapter() {
return new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, COUNTRIES);
}
private ViewPager.PageTransformer createPageTransformer() {
return new ViewPager.PageTransformer() {
@Override
public void transformPage(View page, float position) {
ListView listView = (ListView) page.findViewById(android.R.id.list);
int childCount = listView.getChildCount();
float offset = .5f * listView.getWidth();
for (int i = 0; i < childCount; i++) {
View childView = listView.getChildAt(i);
childView.setTranslationX(i * offset * position);
}
}
};
}
}
您可以輕鬆地調整了transformPage(View page, float position)
達到你需要的效果(可能使用插值來執行某種緩和的動畫)。
是的我已經研究過關於OnPageChangeListner。但我不知道如何處理下一頁的視圖。如果你能給我一些鏈接或關於這個的例子,這將是一個很大的幫助。至於我如何設置項目值從OnPageScrolled.Thanks – Manishika 2014-09-22 07:21:46
是的,很難將** positionOffset **的值與該ListView同步,因爲它在一個片段內,對不起,我不知道如何實現這一點。但是我之前已經完成了一個增強的[ViewPager](https://github.com/vince-styling/traversaless-viewpager-android),你可以在「Indicator Test」片段中找到如何處理positionOffset,只需下載我的示例apk然後檢查。 – VinceStyling 2014-09-22 07:40:37
目前還不清楚你想要做的動畫的確切行爲(比圖片更好的解釋會更好)。無論如何看看這個代碼https://github.com/luksprog/DroidPlayground/blob/1ea55a42d9f1df1de0ee4fa631abc08dcdff1e5c/src/com/luksprog/playground/fragment/ListPagerOffset.java(我從這個問題中瞭解到)。 – Luksprog 2014-10-03 17:36:32