Android: Есть ли способ получить последнюю позицию View после TranslateAnimation?

Я знаю несколько способов получить значения местоположения View.

getLocationOnScreen()
getLocationInWindow()
getLeft()

Однако ни один из них на самом деле не возвращает текущее местоположение представления, которое я переместил с помощью метода startAnimation(), а только исходное местоположение.

Итак, теперь давайте создадим представление, которое перемещается вправо на 10 пикселей при каждом клике (я опускаю макет, поскольку вы можете просто поместить любое представление в свой основной XML и передать его onClickListener).

public class AndroidTestActivity extends Activity implements OnClickListener {  
LinearLayout testView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    testView = (LinearLayout) this.findViewById(R.id.test);
    testView.setOnClickListener(this);
}

public void onClick(View v) {
    int[] pLoS = new int[2];
    testView.getLocationOnScreen(pLoS);
    TranslateAnimation move = new TranslateAnimation(pLoS[0], pLoS[0] + 10, 0f, 0f);
    move.setFillAfter(true);
    move.setFillEnabled(true);
    testView.startAnimation(move);
}

}

Как видите, это не работает так, как я предполагал, поскольку getLocationOnScreen() всегда возвращает одно и то же значение (в моем случае 0) и не отражает значение, которое я использовал в TranslateAnimation...

Есть идеи?

5
задан Quv 16 June 2012 в 14:44
поделиться