2012-11-21 7 views
2

겹치는 세 가지보기가 있습니다. 어떤 이유로 View.Gone과 View.Visible을 원했던 하나의 스크롤 뷰에 다른 두 개를 설정 한 다음 애니메이션을 시작하면 트리거되지 않습니다. 이러한 스크롤 뷰는 조각 내에 있습니다. 조각에서 일부 기능이 완전히 작동하지 않는다는 것을 알고 있습니다. 애니메이션은 꽤 기본적인 것 같습니다.조각 내의 Android 애니메이션이 작동하지 않습니다.

내 버튼 수신기의 방법입니다.

 sv2.setVisibility(View.GONE); 
     sv3.setVisibility(View.GONE); 
     sv1.setVisibility(View.VISIBLE); 
     Animation fadeInAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.fade_in_scollview); 
     //set your animation 
     sv1.startAnimation(fadeInAnimation); 

또한 보이지 않게 설정하고 애니메이션을로드 한 다음 표시되도록 설정하려고했습니다.

 sv1.setVisibility(View.INVISIBLE); 
     Animation fadeInAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.fade_in_scollview); 
     //set your animation 
     sv1.startAnimation(fadeInAnimation); 
     sv1.setVisibility(View.VISIBLE); 

그리고 여기 내 애니메이션 XML입니다.

<?xml version="1.0" encoding="UTF-8"?> 
    <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" 
    android:interpolator="@android:anim/accelerate_interpolator" 
    android:duration="500" 
    android:repeatCount="infinite"/> 
</set> 
+0

리차드, 이것을 알아 냈습니까? 나는 똑같은 일을하려하고있다. – Badams

+0

네, 제가 어떻게 그 일을 끝내 었는지 게시 할 것입니다 - 비슷한 것이 당신에게 효과가 없다면 알려주세요! 그럴 경우 나에게도 알려주십시오. 올바른 답으로 확인해 드리겠습니다. –

답변

0

애니메이션 수신기를 설정하고 내부의 모든 가시성 자료를 관리하여 문제를 해결했습니다.

sv1.setVisibility(View.INVISIBLE); 
    //grab animation from anim folder in res/ 
    Animation fadeInAnimation = AnimationUtils.loadAnimation(getActivity(), R.anim.push_up_anim); 
    fadeInAnimation.setAnimationListener(new AnimationListener() { 
      //set other scroll views to invisible once done 
      public void onAnimationEnd(Animation animation) { 
      sv2.setVisibility(View.INVISIBLE); 
      sv3.setVisibility(View.INVISIBLE); 
      } 

      public void onAnimationRepeat(Animation animation) { 
      } 
      //once our animation starts, we set our view to visible 
      public void onAnimationStart(Animation animation) { 
       sv1.setVisibility(View.VISIBLE); 
      } 
     }); 
     scrollViewAnimationActive = true; 
     //start our animations for views that need to be removed. 
     //We know one of these views were showing by checking if it was "visible". 
     if (sv2.getVisibility() == View.VISIBLE) 
       sv2.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.pushed_out_anim)); 
     else if (sv3.getVisibility() == View.VISIBLE) { 
       sv3.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.pushed_out_anim)); 
     }else if (wikiParentLL.getChildCount() > 1) { 
       wikiParentLL.startAnimation(AnimationUtils.loadAnimation(getActivity(), R.anim.pushed_out_anim)); 
      } 
//finally, start our "animation" 
    sv1.startAnimation(fadeInAnimation); 

희망이 있습니다. 조각에 사용되는 애니메이션이 내 레이아웃 파일입니다 코드

아래

1

시도

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <ImageView 
     android:id="@+id/iv_banner" 
     android:layout_width="fill_parent" 
     android:layout_height="250dp" 
     android:layout_gravity="center_horizontal" /> 
</LinearLayout> 

이 이미지를 넣어하는 것을 잊지 마세요 내 조각 자바 클래스

public class Fragment_Home extends Fragment { 
    public int currentimageindex = 0; 
    Handler mHandler = new Handler(); 
    Runnable mUpdateResults; 

    //Array of drawable images 
    private int[] IMAGE_IDS = { 
      R.drawable.home_slider_stemer, R.drawable.home_slider_plane 
    }; 

    //image view 
    private ImageView iv_banner; 
    private View rootView; 

    public Fragment_Home() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     rootView = inflater.inflate(R.layout.fragment_home, container, false); 

     LoadUIElements(); 



     return rootView; 
    } 

    private void LoadUIElements() { 
     iv_banner = (ImageView) rootView.findViewById(R.id.iv_banner); 
     int delay = 1000; // delay for 1 sec. 

     int period = 2000; // repeat every 4 sec. 
     Timer timer = new Timer(); 

     timer.scheduleAtFixedRate(new TimerTask() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       mHandler.post(mUpdateResults); 
      } 
     }, delay, period); 

     mUpdateResults = new Runnable() { 
      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       try { 
        AnimateandSlideShow(); 
       } catch (Exception e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }; 
    } 

    /** 
    * Helper method to start the animation on the splash screen 
    */ 
    protected void AnimateandSlideShow() { 
     // TODO Auto-generated method stub 
     try { 
      iv_banner.setImageResource(IMAGE_IDS[currentimageindex 
        % IMAGE_IDS.length]); 

      currentimageindex++; 
      Animation rotateimage = AnimationUtils.loadAnimation(getActivity() 
        .getBaseContext().getApplicationContext(), R.anim.fade_in); 
      iv_banner.startAnimation(rotateimage); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

당신의 입술에 드로어 블 폴더입니다.

관련 문제