2013-10-19 4 views
1

현재 API 14 이상과 호환되는 응용 프로그램을 작성 중입니다. ObjectAnimators를 사용하여 많은 애니메이션 작업을 수행합니다. 목표는 모든 애니메이션을 Android 2.2-2.2.3 Froyo (API 레벨 8) 이상과 호환되도록 만드는 것입니다. 나는 이미 9oldandroids를 사용하여 모든 objectanimator 코드를 변환하기 시작했습니다. 그러나 내가 nineoldandroid가 그들을지지한다고 믿지 않기 때문에 대안으로 사용할 것이 확실하지 않은 몇 가지 기능이 있습니다 (나는 틀릴 수도 있습니다).Android 애니메이션 호환성

다음은 최대 API 11까지만 호환되는 기능의 목록입니다. 도움이 될 것입니다.

setTranslationX setTranslationY setAlpha setX setY setScrollX setScrollY

+0

체크 아웃 [droidQuery (http://bit.ly/droidquery) Froyo와 호환되는 간단한 애니메이션을 작성합니다. * NineOldAndroids *를 사용하고 애니메이션 구문을 더 단순화합니다. – Phil

답변

3

한마디로 : 네, nineoldandroids 그 지원이 없습니다.

9oldandroids에서 ObjectAnimator의 소스를 보면, 프록시를 사용하여 애니메이션하려는 속성에 애니메이션을 적용한다는 것을 알 수 있습니다. 당신이 일반적으로 (그냥 com.nineoldandroids.animation 확실 할 것 같은

PROXY_PROPERTIES.put("alpha", PreHoneycombCompat.ALPHA); 
    PROXY_PROPERTIES.put("pivotX", PreHoneycombCompat.PIVOT_X); 
    PROXY_PROPERTIES.put("pivotY", PreHoneycombCompat.PIVOT_Y); 
    PROXY_PROPERTIES.put("translationX", PreHoneycombCompat.TRANSLATION_X); 
    PROXY_PROPERTIES.put("translationY", PreHoneycombCompat.TRANSLATION_Y); 
    PROXY_PROPERTIES.put("rotation", PreHoneycombCompat.ROTATION); 
    PROXY_PROPERTIES.put("rotationX", PreHoneycombCompat.ROTATION_X); 
    PROXY_PROPERTIES.put("rotationY", PreHoneycombCompat.ROTATION_Y); 
    PROXY_PROPERTIES.put("scaleX", PreHoneycombCompat.SCALE_X); 
    PROXY_PROPERTIES.put("scaleY", PreHoneycombCompat.SCALE_Y); 
    PROXY_PROPERTIES.put("scrollX", PreHoneycombCompat.SCROLL_X); 
    PROXY_PROPERTIES.put("scrollY", PreHoneycombCompat.SCROLL_Y); 
    PROXY_PROPERTIES.put("x", PreHoneycombCompat.X); 
    PROXY_PROPERTIES.put("y", PreHoneycombCompat.Y); 

사용 ObjectAnimator

ObjectAnimator anim = ObjectAnimator.ofFloat(yourView, "translationX", 0f, 1f); 
anim.setDuration(1000); 
anim.start(); 

편집 :!. 여기 당신이 onTouchListener 내에서 뷰에 애니메이션을 적용 할 수있는 방법의 예입니다 공지 사항 그게 false를 반환하면 리스너가 이벤트를 소비하지 나타냅니다.

view.setOnTouchListener(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent event) { 
     ObjectAnimator anim = ObjectAnimator.ofFloat(view, "translationX", 0f, 1f); 
     anim.setDuration(1000); 
     anim.start(); 
     return false; 
     } 
    }); 
+0

답변 해 주셔서 감사합니다. 매우 유용하다고 생각합니다. 나는 9oldandroids 데모 샘플을 통해 사용 예제를 조사 해왔다. 지금까지 한 가지를 제외하고 모든 것이 훌륭합니다. 실제로 onTouch() 이벤트를 기반으로 뷰에 애니메이션을 적용하고 있는데 ObjectAnimator를 사용하여 객체의 뷰 속성을 설정할 수는 없습니다. 속성을 설정하는 방법에 대한 아이디어가 있습니까? – ahmad

+0

@ahmad 물론 onTouch 이벤트에서 여전히 ObjectAnimator를 사용할 수 있습니다. – Phil

+0

onTouch의 예를 포함하도록 답안을 수정했습니다. 그 질문에 대한 답변이 있으면 알려주고, 유용하다고 생각되면 동의라고 표시하십시오. – klmprt