2013-12-08 4 views
2

ViewPager에 첨부 된 프래그먼트의 내용 (textViews 등)에 애니메이션을 적용하려고하면 애니메이션이 조각에서 프래그먼트로 이동할 때 좋습니다. 여기 지원 조각과 연결 방법에 내 코드, 응용 프로그램이 점심을 먹었다 문제가 제공 될 때 보여지는 단편 애니메이션도 필요ViewPager 및 기본 프래그먼트의 내용 애니메이트

내가 여기 firstfragment의 내용을 애니메이션하는 방법 firstanimation를 추가하려고
private void initializeFrags() { 
    List<Fragment> ourlist = new Vector<Fragment>(); 
    ourlist.add(Fragment.instantiate(this, FirstFrag.class.getName())); 
    ourlist.add(Fragment.instantiate(this, SecondFrag.class.getName())); 
    ourlist.add(Fragment.instantiate(this, ThirdFrag.class.getName())); 
    adapter = new ouradapter(super.getSupportFragmentManager(), ourlist); 
    ourPlace = (ViewPager) super.findViewById(R.id.mypager); 
    ourPlace.setAdapter(adapter); 

    // this method generates the errrors 
    firstAnimation(); 

    ourPlace.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 

     @Override 
     public void onPageSelected(int arg0) { 
      if(arg0==0) 
      { 
       View v = adapter.getItem(arg0).getView(); 
       TextView text = (TextView) v.findViewById(R.id.firstText); 
       Animation fadeInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade); 
       text.startAnimation(fadeInAnimation); 
      } 

      Toast.makeText(getApplicationContext(), Integer.toString(arg0), Toast.LENGTH_LONG).show(); 

     } 

     @Override 
     public void onPageScrolled(int arg0, float arg1, int arg2) { 
      // TODO Auto-generated method stub 
     } 

     @Override 
     public void onPageScrollStateChanged(int arg0) { 
      // TODO Auto-generated method stub 
     } 
    }); 
} 

initializeFrags()onCreate 동안 점심을 먹기 때문에 앱이 점심을 먹을 때만 실행됩니다. 여기

firstanimation 방법의 코드입니다

private void firstAnimation() 
{ 
    View v = adapter.getItem(0).getView(); 
    TextView text = (TextView) v.findViewById(R.id.firstText); 
    Animation fadeInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade); 
    text.startAnimation(fadeInAnimation); 
} 

와 나는 또한 조각에 애니메이션을 시도 오류,

12-08 21:45:33.102: E/Trace(29275): error opening trace file: No such file or directory (2) 
12-08 21:45:33.333: E/AndroidRuntime(29275): FATAL EXCEPTION: main 
12-08 21:45:33.333: E/AndroidRuntime(29275): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.worry.fragmentwithanimation/com.worry.fragmentwithanimation.MainActivity}: java.lang.NullPointerException 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2062) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2087) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.ActivityThread.access$600(ActivityThread.java:133) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1198) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.os.Looper.loop(Looper.java:137) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.ActivityThread.main(ActivityThread.java:4803) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at java.lang.reflect.Method.invokeNative(Native Method) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at java.lang.reflect.Method.invoke(Method.java:511) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at dalvik.system.NativeStart.main(Native Method) 
12-08 21:45:33.333: E/AndroidRuntime(29275): Caused by: java.lang.NullPointerException 
12-08 21:45:33.333: E/AndroidRuntime(29275): at com.worry.fragmentwithanimation.MainActivity.firstAnimation(MainActivity.java:88) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at com.worry.fragmentwithanimation.MainActivity.initializeFrags(MainActivity.java:51) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at com.worry.fragmentwithanimation.MainActivity.onCreate(MainActivity.java:34) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.Activity.performCreate(Activity.java:5008) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
12-08 21:45:33.333: E/AndroidRuntime(29275): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2026) 
12-08 21:45:33.333: E/AndroidRuntime(29275): ... 11 more 

가지고 :

TextView first; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.first, container,false); 
    first=(TextView) view.findViewById(R.id.firstText); 
    return view; 

} 

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    // TODO Auto-generated method stub 
    super.setUserVisibleHint(isVisibleToUser); 
    if(isVisibleToUser) 
    { 


     Animation fadeInAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.fade); 
     first.startAnimation(fadeInAnimation); 
    } 
} 

과 나는이있어 오류

12-08 23:05:38.541: E/AndroidRuntime(31143): FATAL EXCEPTION: main 
12-08 23:05:38.541: E/AndroidRuntime(31143): java.lang.NullPointerException 
12-08 23:05:38.541: E/AndroidRuntime(31143): at com.worry.fragmentwithanimation.FirstFrag.setUserVisibleHint(FirstFrag.java:34) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.support.v4.app.FragmentPagerAdapter.setPrimaryItem(FragmentPagerAdapter.java:130) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.support.v4.view.ViewPager.populate(ViewPager.java:1066) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.support.v4.view.ViewPager.populate(ViewPager.java:914) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1436) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.View.measure(View.java:15401) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:622) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:404) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.View.measure(View.java:15401) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4950) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.widget.FrameLayout.onMeasure(FrameLayout.java:314) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.View.measure(View.java:15401) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.widget.LinearLayout.measureVertical(LinearLayout.java:855) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.widget.LinearLayout.onMeasure(LinearLayout.java:578) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.View.measure(View.java:15401) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4950) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.widget.FrameLayout.onMeasure(FrameLayout.java:314) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2154) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.View.measure(View.java:15401) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1856) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1104) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1279) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1002) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4294) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.Choreographer.doCallbacks(Choreographer.java:555) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.Choreographer.doFrame(Choreographer.java:525) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.os.Handler.handleCallback(Handler.java:643) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.os.Handler.dispatchMessage(Handler.java:92) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.os.Looper.loop(Looper.java:137) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at android.app.ActivityThread.main(ActivityThread.java:4803) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at java.lang.reflect.Method.invokeNative(Native Method) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at java.lang.reflect.Method.invoke(Method.java:511) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
12-08 23:05:38.541: E/AndroidRuntime(31143): at dalvik.system.NativeStart.main(Native Method) 

이 문제를 해결하여 활동이 시작될 때 표시되는 조각을 어떻게 애니메이션으로 만들 수 있습니까? 내가 몇 시간 봤어하지만 다른 질문에 나는 우리가 하나의 조각을 다른 것으로 바꿀 때만 애니메이션을 볼 수 있으며이 문제는 onPageSelected에 의해 처리된다. 당신은 단편 애니메이션 시도에서 잘못하고있다

답변

0

:

TextView first; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.first, container,false); 
    first=(TextView) view.findById(R.id.firstText); 
    return view; 
} 

다른 시도는 당신이 당신의 활동이 만들어 질 때 (실제로없는)가 생성되지 않을 수 있습니다 단편화 권리로 작업 할 기회가 없습니다. 나중에 생기므로 애니메이션을 만들려고 할 때 첫 번째는 null입니다.

+2

onActivityCreated에서 애니메이션을 시작하려고하는 이유는 무엇입니까? – Snicolas

+0

thx 많이, 네, 그것은 완벽하게 작동합니다;)하지만 나를 위해 그것을 사용자 (setUserVisibleHint) == 만든 (onActivityCreated), 유일한 쇼, 어떻게 내 지식이 불완전한 xD 나는이 대답을 귀하의 의견을 원인 표시 이 문제를 해결하다 – MyWay