我正在尝试ImageButton
从 100% 缩放到 0%。该部分正在工作,但它似乎也将视图移向屏幕的左上角(朝向 0、0)。我不希望我只是想扩展它。为什么这也翻译了观点?
ScaleAnimation 实现
if (view.getVisibility() == 0) {
final ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.0f, 1.0f, 0.0f, Animation.ABSOLUTE, centerX, Animation.ABSOLUTE, centerY);
scaleAnimation.setInterpolator(interpolator);
scaleAnimation.setDuration(5000);
view.startAnimation((Animation)scaleAnimation);
scaleAnimation.setAnimationListener(new Animation.AnimationListener(){
public void onAnimationEnd(Animation animation) {
view.setVisibility(n);
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationStart(Animation animation) {
}
});
}
}
XML 中的ImageButton
及其父级:android.support.design.widget.CoordinatorLayout
<android.support.design.widget.CoordinatorLayout android:id="@+id/main_content"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<ImageButton
android:id="@+id/buttonToggleResultsWindow0"
android:layout_width="35dp"
android:layout_gravity="top|end"
android:layout_height="35dp"
android:visibility="gone"
android:hint="Hide results window"
android:backgroundTint="@color/accent"
android:src="@drawable/ic_filter_tilt_shift_white_24dp"
android:onClick="toggleResultsWindow"
android:background="@drawable/ripple_circle"
/>
编辑 1
如果我将ScaleAnimation
构造函数更改为此
final ScaleAnimation scaleAnimation = new ScaleAnimation(1.0f, 0.0f, 1.0f, 0.0f, Animation.RELATIVE_TO_SELF, centerX, Animation.RELATIVE_TO_SELF, centerY);
并设置centerX
为 8 和centerY
4 似乎保持在同一位置或非常接近同一位置。这对我来说没有任何意义。是什么导致了这种行为?
编辑 2
我弄清楚是什么导致了视图的翻译,但我仍然不确定如何解决它。似乎如果我使用setx()
或setY()
在动画之前的任何时间移动视图,那么它就会变得一团糟。这是因为动画仍然使用视图的原始位置,而不是新位置。因此,当它平移视图时,它正被平移到原始位置。如何ScaleAnimation
使用正确的坐标?