我正在创建一个动画,其中图像从一个方向转换到另一个方向,动画将一半图像移出屏幕,但图像在动画结束时显示为完整。我只想在动画后显示一半的图像。
目前我在动画开始时在图像视图中使用完整图像,并在动画结束时将其替换为半图像,但它显示的图像更改反射看起来很尴尬,这是我的实际问题。
下面是我的xml和类文件。
动画代码
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration = "2000"
android:fillBefore="true"
android:fillEnabled="true"
android:fromXDelta = "-300%"
android:fromYDelta="200%"
android:toXDelta="60%">
</translate>
animimv5.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
imv5.setBackgroundResource(R.drawable.img5);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
imv5.setBackgroundResource(R.drawable.img5_2);
}
});
答案 0 :(得分:1)
您可以尝试以下操作:
xml中的(将其添加到set参数)android:fillAfter
或使用类源setFillAfter(boolean)
中的相关方法
设置为true时,将在之后应用动画转换 动画结束了。根据文件here 设置为true时,将在之后应用动画转换 动画结束了。默认值为false。如果fillEnabled不是 设置为true并且未在View上设置动画,fillAfter是 假设是真的。
有关其他提示和说明,请查看Chet's blog post
希望它有所帮助..;)
答案 1 :(得分:0)
先生,先生:
MainActivity :
public class MainActivity extends Activity {
private View animatedView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
animatedView = findViewById(R.id.view);
}
public void animate(View view) {
int targetX = ((View) animatedView.getParent()).getWidth() - animatedView.getWidth() / 2;
ObjectAnimator.ofFloat(animatedView, "x", 0, targetX).setDuration(1000).start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
布局XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:id="@+id/view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#CC0000"
android:padding="30dp"
android:textColor="@android:color/white"
android:text="@string/hello_world"/>
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Animate"
android:onClick="animate"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"/>
</RelativeLayout>