Android使用片段在viewpager中的页面滚动上放置动画
Posted
技术标签:
【中文标题】Android使用片段在viewpager中的页面滚动上放置动画【英文标题】:Android Put animation in Page scroll in view pager using fragment 【发布时间】:2014-06-08 01:52:35 【问题描述】:我想在视图寻呼机中滚动页面时放置动画(放大缩小、淡入淡出、3d 等)。我的代码如下。
我的第一堂课:
public class ViewPagerMainActivity extends FragmentActivity implements
OnClickListener, OnPageChangeListener
// all variable declare here
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,
WindowManager.LayoutParams.FLAG_FULLSCREEN
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
);
setTheme(android.R.style.Theme_Light_NoTitleBar);
setContentView(R.layout.view_pager_main);
// other code here
private class MyPagerAdapter extends FragmentPagerAdapter
public MyPagerAdapter(
android.support.v4.app.FragmentManager fragmentManager)
super(fragmentManager);
@Override
public Fragment getItem(int pos)
switch (pos)
case 0:
return FirstFragment.newInstance("");
case 1:
return SecondFragment.newInstance("");
default:
return SecondFragment.newInstance("Default");
@Override
public int getCount()
return 2; // return no of fragment created by us
@Override
public void onClick(View v)
@Override
public void onPageScrollStateChanged(int arg0)
// TODO Auto-generated method stub
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
// TODO Auto-generated method stub
@Override
public void onPageSelected(int arg0)
// TODO Auto-generated method stub
@Override
public void onBackPressed()
第二个文件:
public class FirstFragment extends Fragment implements OnTouchListener
// all variable decalre here
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
getActivity().setTheme(android.R.style.Theme_Light_NoTitleBar);
v = inflater.inflate(R.layout.sliding_lock_pager, container, false);
// other code here
return v;
public static FirstFragment newInstance(String text)
FirstFragment f = new FirstFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
@Override
public boolean onTouch(View v, MotionEvent event)
return false;
这里是第三个文件:
public class SecondFragment extends Fragment implements OnClickListener
// all varible decalare here
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
getActivity().setTheme(android.R.style.Theme_Light_NoTitleBar);
View v = inflater.inflate(R.layout.password, container, false);
// other code here
// this method move to main pager
txtBack.setOnClickListener(new OnClickListener()
@Override
public void onClick(View v)
((ViewPagerMainActivity)getActivity()).pager.setCurrentItem(0);
);
return v;
public static SecondFragment newInstance(String text)
SecondFragment f = new SecondFragment();
Bundle b = new Bundle();
b.putString("msg", text);
f.setArguments(b);
return f;
@Override
public void onClick(View v)
// TODO Auto-generated method stub
我想在寻呼机滚动时放置动画,或者在寻呼机滚动下一页显示时调用((ViewPagerMainActivity)getActivity()).pager.setCurrentItem(0);
,并显示放大等动画,请任何人帮助我如何做到这一点。
【问题讨论】:
【参考方案1】:您可以将 PagerTransformer 附加到 ViewPager :
mViewPager.setPageTransformer(false, new ViewPager.PageTransformer()
@Override
public void transformPage(View page, float position)
// do transformation here
);
您可以通过以下链接帮助您:
http://developer.android.com/training/animation/screen-slide.html#pagetransformer
http://andraskindler.com/blog/2013/create-viewpager-transitions-a-pagertransformer-example/
【讨论】:
以上是关于Android使用片段在viewpager中的页面滚动上放置动画的主要内容,如果未能解决你的问题,请参考以下文章
在 CoordinatorLayout Android 中的 ViewPager 片段中使用 NestedScrollView 突然滚动
ViewPager 中的 Android Master/Detail 流程
如何用 ViewPager 中的另一个片段替换 Android 片段?