我拥有的
我有一个箭头图像(像左边的一个).当用户点击它时,它应该旋转180度与动画,应该看起来像正确的.
我做了什么
private void rotate(float degree,final int toggleV) { final RotateAnimation rotateAnim = new RotateAnimation(0.0f,degree,RotateAnimation.RELATIVE_TO_SELF,0.5f,0.5f); rotateAnim.setDuration(500); toggle.startAnimation(rotateAnim); rotateAnim.setAnimationListener(new Animation.AnimationListener() { @Override public void onAnimationStart(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { if (toggleV == 1) toggle.setImageResource(R.drawable.toggle_up); else toggle.setImageResource(R.drawable.toggle_down); } @Override public void onAnimationRepeat(Animation animation) { } }); }
问题
我看到动画效果很好,但在设置图像时有一点闪烁.可能是由于动画结束和图像设置之间的时间差异.
如何清除这个闪烁问题?你有什么更好的做法吗?
解决方法
首先,你最小的SDK要求是什么?如果它至少是Android 3.0,您可以使用较新的动画框架,并使您的图像为此动画:
imageView.animate().rotation(180).start();
关于闪烁:我不会在旋转后重新设置ImageView的源图像,我只是放在原来的位置,并确保旋转动画在动画之后填满,使图像旋转.闪烁很可能是由于在更改源图像时View的重新发布/重绘引起的.
可能会导致进一步的视觉伪像(闪烁?),因为原始旋转的图像和旋转的静态图像可能在几个像素中不同.