我知道获取视图位置值的多种方法。
getLocationOnScreen()
getLocationInWindow()
getLeft()
但是,它们实际上都没有返回我通过 startAnimation() 方法移动的 View 的当前位置,而只是返回原始位置。
因此,现在让我们创建一个在每次单击时向右移动 10 个像素的视图(我省略了布局,因为您可以将任何视图放在主 XML 中并在单击侦听器上提供它)。
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 中使用的值...
任何想法?