我正在开发一个必须在Android 2.2上运行的项目,我刚刚意识到我在View中使用了3.0+方法。
当按下按钮时,我有一个菜单可以垂直滑动进出动画。动画结束后,我使用setY()方法更新View位置。
我试图将它更改为getTop / setTop但是它没有正常工作,我怀疑因为getY实际上考虑了转换而getTop不是(我猜动画是作为转换处理的)。
Froyo的任何简单替代方案,而无需修改太多代码?
这是动画部分:
animationSlideInDown = AnimationUtils.loadAnimation(this, R.anim.slide_out_down);
animationSlideOutUp = AnimationUtils.loadAnimation(this, R.anim.slide_in_up);
animationSlideInDown.setDuration(200);
animationSlideOutUp.setDuration(200);
animationSlideInDown.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
if (menuInitialPosition == -1) {
menuInitialPosition = menu.getY();
menuHeight = menu.getHeight();
} else {
menu.setY(menuInitialPosition);
}
}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
menu.setY(menuInitialPosition);
}
});
animationSlideOutUp.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationRepeat(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
menu.setY(-menuHeight);
}
});
这是slide_out转换:
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="-100%"
android:toYDelta="0"
android:fillAfter="true"
android:fillEnabled="true"
android:duration="@android:integer/config_longAnimTime" />
谢谢!
答案 0 :(得分:2)
如果您希望在屏幕上获得特定视图的位置,而不是使用:
int [] locationOnScreen = new int [2]; menu.getLocationOnScreen(locationOnScreen);
要将视图设置为特定位置,您可以使用LayoutParams并为视图设置左上边距。