2014-01-23 6 views
0

ImageView가 RelativeLayout의 가운데에 정렬되어 있으며 alignedParentTop으로 전환하려고합니다. TranslateAnimation을 설정하는 데 필요한 deltaY를 얻는 방법은 무엇입니까?안드로이드가 이동하면 뷰 좌표를 얻습니다.

편집 : 나는 이미 한 일을 소개하도록 요청했습니다 때문에 , 여기에 내가 사용하고 코드입니다 :

private Animation getTranslateAnimation(final View v) { 
    final float yDelta = getScreenHeight() - (2 * v.getHeight()); 

    TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, yDelta); 

    translateAnimation.setDuration(Initial.DURATION_MILLIS); 
    translateAnimation.setInterpolator(new AccelerateDecelerateInterpolator()); 
    return translateAnimation; 
} 

이 접근 방식의 문제는 내가 보여 글고을 가지고 이 애니메이션 후에는 ImageView 바로 아래에 위치해야합니다. onAnimationEnd를 볼 수있게하는 AnimationListener를 설정했지만 새로운 위치가 아닌 원래 위치 아래에 배치합니다. 몇 가지 쉬운 방법이 있습니까 아니면 내가 PropertyAnimation 프레임 워크로 전환해야합니까?

+0

다른 접근 방식이 많이 있습니다. 보기 (활동, 단편, 대화 상자 등)는 어디에 표시됩니까? 왼쪽 위 모퉁이가 0,0이므로 기본적인 생각은 현재 뷰 (당신이 그 위치에 머무르기를 원한다고 가정)에 대해 X를 얻고 y를 0으로 이동시키는 것입니다. 더 많은 정보를 가진 코드를 보여줄 수 있습니다. 그 동안 시도한 것을 게시 할 수 있습니까? – Rarw

답변

0

Animation Resources Documentation을 살펴보면 부모 또는 자기에 상대적인 값을 정의 할 수 있음을 알 수 있습니다. 은 "P"가 표시 - 뷰가 최대 android:toYDelta="0%p"이 있기 때문에 (부모의 상단이 정렬로, 원래의 위치에서 번역되어,

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:fromXDelta="0%" 
     android:toXDelta="0%" 
     android:fromYDelta="0%" 
     android:toYDelta="0%p" /> 
</set> 

이이 영향을 미칠 것입니다 : 그래서 당신은 XML-자원이 같은보고를 가질 수 그것은 부모와 관련이있다).

실제로 프로그래밍 방식으로 수행 할 필요가없는 경우이 방법이 효과적입니다.

관련 문제