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中的页面滚动上放置动画的主要内容,如果未能解决你的问题,请参考以下文章

Android ViewPager 适配器修改其他页面

在 CoordinatorLayout Android 中的 ViewPager 片段中使用 NestedScrollView 突然滚动

ViewPager 中的 Android Master/Detail 流程

如何用 ViewPager 中的另一个片段替换 Android 片段?

在 ViewPager 片段中使用 Google Map V2 崩溃?

在android中使用viewpager的带有多个片段的SearchView