2013-06-23 5 views
-2

조금 문제가있었습니다. 내 애니메이션이 작동하지 않습니다. 나는 어떤 종류의 오류도 내지 않는다. 단순히 애니메이션이 작동하지 않습니다.애니메이션이 작동하지 않습니다

이것은 내 코드입니다.

public class MainActivity extends FragmentActivity { 

    private PagerAdapter mPagerAdapter; 

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

     this.initialisePaging(); 
    } 

    private void initialisePaging() { 

     List<Fragment> fragments = new Vector<Fragment>(); 
     fragments.add(Fragment.instantiate(this, Tab1Fragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, Tab2Fragment.class.getName())); 
     fragments.add(Fragment.instantiate(this, Tab3Fragment.class.getName())); 
     this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments); 

     ViewPager pager = (ViewPager)super.findViewById(R.id.pager); 
     pager.setAdapter(this.mPagerAdapter); 
     pager.setPageTransformer(true, new ZoomOutPageTransformer()); 
    } 

    public static class Tab1Fragment extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      if (container == null) { 
       return null; 
      } 
      return (ImageView)inflater.inflate(R.layout.tab_frag1_layout, container, false); 
     } 
    } 

    public static class Tab2Fragment extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      if (container == null) { 
       return null; 
      } 
      return (ImageView)inflater.inflate(R.layout.tab_frag2_layout, container, false); 
     } 
    } 

    public static class Tab3Fragment extends Fragment { 

     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      if (container == null) { 
       return null; 
      } 
      return (ImageView)inflater.inflate(R.layout.tab_frag3_layout, container, false); 
     } 
    } 

    public static class PagerAdapter extends FragmentPagerAdapter { 

     private List<Fragment> fragments; 

     public PagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
      super(fm); 
      this.fragments = fragments; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return this.fragments.get(position); 
     } 

     @Override 
     public int getCount() { 
      return this.fragments.size(); 
     } 
    } 

    public static class ZoomOutPageTransformer implements ViewPager.PageTransformer { 
     private static final float MIN_SCALE = 0.85f; 
     private static final float MIN_ALPHA = 0.5f; 

     public void transformPage(View view, float position) { 
      int pageWidth = view.getWidth(); 
      int pageHeight = view.getHeight(); 

      if (position < -1) { // [-Infinity,-1) 
       // This page is way off-screen to the left. 
//    view.setAlpha(0); 
       ViewHelper.setAlpha(view, 0); 

      } else if (position <= 1) { // [-1,1] 
       // Modify the default slide transition to shrink the page as well 
       float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); 
       float vertMargin = pageHeight * (1 - scaleFactor)/2; 
       float horzMargin = pageWidth * (1 - scaleFactor)/2; 
       if (position < 0) { 
//     view.setTranslationX(horzMargin - vertMargin/2); 
        ViewHelper.setTranslationX(view, horzMargin - vertMargin/2); 
       } else { 
//     view.setTranslationX(-horzMargin + vertMargin/2); 
        ViewHelper.setTranslationX(view, -horzMargin + vertMargin/2); 
       } 

       // Scale the page down (between MIN_SCALE and 1) 
//    view.setScaleX(scaleFactor); 
//    view.setScaleY(scaleFactor); 
       ViewHelper.setScaleX(view, scaleFactor); 
       ViewHelper.setScaleY(view, scaleFactor); 

       // Fade the page relative to its size. 
//    view.setAlpha(MIN_ALPHA + 
//      (scaleFactor - MIN_SCALE)/
//      (1 - MIN_SCALE) * (1 - MIN_ALPHA)); 

       ViewHelper.setAlpha(view, MIN_ALPHA + 
         (scaleFactor - MIN_SCALE)/
         (1 - MIN_SCALE) * (1 - MIN_ALPHA)); 

      } else { // (1,+Infinity] 
       // This page is way off-screen to the right. 
//    view.setAlpha(0); 
       ViewHelper.setAlpha(view, 0); 
      } 
     } 
    } 
} 

다른 모든 것들이 잘 작동합니다. 구현하고 싶습니다 this. 도와주세요.

NineOldroids를 사용하지 않고 구현하기 전에. 그러나 이것을 구현 한 후에도 작동하지 않았습니다.

+0

애니메이션 코드는 어디에 있습니까? – Plato

+0

이 ZoomOutPageTransformer 클래스를 확인하십시오. –

+0

내 코드가 단순히 투표를 내리는 것보다 기술적 결함이 있다고 생각한다면 의견을 말하십시오. 코딩 표준을 수정하고 개선하는 데 도움이 될 것입니다. 어쨌든. 감사. –

답변

0

안드로이드 2.2 플랫폼에서는 에뮬레이터에서 작동하지 않지만 플랫폼으로 ICS를 사용하는 Sony Sony Xperia Tipo Dual을 체크했을 때 작동했습니다.

1

또한 문제 체크 아웃 this answer이 있습니다. nineoldandroid를 사용하면 작동하지만 PreTransform은 지원 라이브러리에 있지만 무시됩니다 (Heneycomb). 애니메이션을하기 위해 플리퍼를 보러 움직일 생각입니다. 그러나 나는 아직도 다른 길을 찾고있다.

편집 : 문제 해결 방법을 확인하려면 해당 질문에서 내 대답을 확인하십시오. 뷰 페이지 클래스를 기본적으로 복사하고 setPageTransformer에서 SDK 버전을 확인한 if 문을 제거했습니다.

관련 문제