2014-09-05 7 views
0

두 조각을 서로 쌓아 놓은 애니메이션을 실행하려고합니다.9oldandroids로 API 레벨 9에서 조각 애니메이션을 어떻게 할 수 있습니까?

상단 조각은 세부 정보 조각입니다. 하단 조각은 메뉴 목록보기 조각입니다.

저는 액티비티 레이아웃에서 두 개의 겹치는 framelayouts를 생성하여이 작업을 수행했습니다. 배경 조각이 문 열기과 비슷한 방식으로 공개 될 애니메이션을 할 수 있기를 원한다면, 상단 조각의 가장자리의 20 % 만 볼 수 있습니다.

API 9에서 사용할 수있는 표준보기 애니메이션 라이브러리를 사용하여이 애니메이션을 만들려고했으나 픽셀 만 이동했지만 터치 매핑은 여전히 ​​상단 조각에 해당하고 하단 메뉴 조각에는 액세스 할 수 없었던 것처럼 보였습니다.

그래서 nineoldandroids 라이브러리를 다운로드하고 애니메이션을 수행하기 위해 ObjectAnimators를 사용하여 AnimatorSet을 사용자에게 보냈습니다 ... 이번에는 조각이 움직이는 경우를 제외하고 이전과 같이 뒷면의 조각보다는 회색 배경 만 나타냅니다.

이 나는 ​​배경 조각

private void animateFragmentOut() { 
     activeFragment = (Fragment)getSupportFragmentManager().findFragmentById(R.id.nav_item_fragment_container); 
     View myView = activeFragment.getView(); 
    AnimatorSet set = new AnimatorSet(); 
    set.playTogether(
      ObjectAnimator.ofFloat(myView, "translationX", 0, 230) 
    ); 
    set.setDuration(500).start(); 

}을 공개하는 간단한 변환을 구현하는 시도 방법에 대한 코드는

나는이 애니메이션을 사용할 때 왜 배경 조각이 표시되지 않습니다

? nineoldandroids를 사용하여 백그라운드 조각을 올바르게 표시하려면 어떻게해야합니까?

답변

0

나는 최대의 API 레벨 11에 큰 일이에도 불구하고 다음 코드를

private void animateFragmentOut() { 
     activeFragment = (Fragment)getSupportFragmentManager().findFragmentById(R.id.nav_item_fragment_container); 
     View myView = activeFragment.getView(); 

    Animator.AnimatorListener listener = new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationStart(Animator animation) { 
      launchNavigationFragment(); 
     } 

     @Override 

     public void onAnimationEnd(Animator animation) { 
     } 
    }; 


    ObjectAnimator rotateY = ObjectAnimator.ofFloat(myView,"rotationY",-15f); 
    ObjectAnimator scaleX = ObjectAnimator.ofFloat(myView,"scaleX",0.8f); 
    ObjectAnimator scaleY = ObjectAnimator.ofFloat(myView,"scaleY", 0.8f); 
    ObjectAnimator translateX = ObjectAnimator.ofFloat(myView,"translationX",400f); 

    AnimatorSet animatorSet = new AnimatorSet(); 
    animatorSet.playTogether(rotateY,scaleX,scaleY,translateX); 
    animatorSet.addListener(listener); 
    animatorSet.setDuration(700); 
    animatorSet.start(); 
} 

Saldy를 사용하여 애니메이션의 시작 배경 뷰를 오른쪽으로 팽창 리스너를 사용하여이 문제를 해결 끝났다>와 내 API 9 장치 표준 애니메이션 라이브러리와 동일한 문제가 여전히 발생합니다. 뷰 픽셀은 변환되지만 터치 영역은 같은 위치에 계속 머물러 있습니다. 따라서 배경 탐색 메뉴 조각과 상호 작용할 수 없습니다.

+0

이것은 표준 애니메이션과 nineoldandroid 모두 애니메이션 형태로만 뷰를 그리기 때문입니다. 그러나 어떤 경우에도 뷰를 물리적으로 변형시키지 않습니다 ("룩앤필"이 아닌 "룩앤필"만 있습니다). – pskink

+0

그래서 새로운 이전 API에 대한 위치는 어떨까요? 이 작업을 수행하는 방법에 대한 좋은 자료가 있습니까? 나는 노력해 왔지만, 나는 모두가 그 일을 잘 이해하고 있다고 생각하지 않는다. – feilong

+0

표준 애니메이션 방법은 애니메이션 리스너 startAnimation()을 설정하고 onAnimationEnd에서 뷰를 새로운 위치로 이동하는 것이다. – pskink