我有一个活动(A)在计算后启动另一个活动(B)。我的问题是,当活动B启动时,在开始补间动画之前,在大小递增(从.33缩放到1)时应该从左向右移动的箭头可绘制在很短的时间内首先显示。最终结果是在开始制作动画之前,完全尺寸可绘制的一个令人烦恼的闪烁。
一切似乎都表明问题与动画文件(.xml)有关,而与java类无关。当我删除以下代码中的行arrowImage.startAnimation(arrowExtent);
时,可以观察到这一点:
protected void arrowAnimation(Animation arrowExtent) {
// TODO Auto-generated method stub
arrowImage.setImageResource(R.drawable.arrowimage);
arrowImage.startAnimation(arrowExtent);
arrowExtent.setFillAfter(true);
我尝试了以下内容:
arrowImage.setFillBefore(false);
非常感谢任何建议。
动画xml如下:
<?xml version="1.0" encoding="utf-8"?>
<set android:interpolator="@android:anim/accelerate_decelerate_interpolator">
<scale
android:fromXScale="0.33"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:startOffset="0"
android:duration="1000"
android:fillBefore="false" />
<translate
android:fromXDelta="0%"
android:toXDelta="75%p"
android:duration="1000" />
</set>
答案 0 :(得分:0)
当活动开始时,您应该ImageView
或xml
中onCreate()
不可见,并且当动画开始时,您应该将其更改为可见。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// referencing views etc.
arrowImage.setVisibility(View.INVISIBLE);
// or make image invisible in xml
}
protected void arrowAnimation(Animation arrowExtent) {
arrowExtent.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
arrowImage.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) { }
@Override
public void onAnimationEnd(Animation animation) { }
});
arrowImage.setImageResource(R.drawable.arrowimage);
arrowImage.startAnimation(arrowExtent);
}