本文主要是介绍【Android】view.setVisibility(View.GONE)导致动画无效,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题
在安卓中使用动画将一个view弹出布局时,如果它本来是GONE掉的,那么你可能会想在动画的onAnimationStart()
时显示,然后在onAnimationEnd()
时隐藏它。
但是很快会发现,这样的话动画会无法及时显示出来,而是只有其他的view显示出来的时候它才会姗姗来迟。那么是什么原因呢?
查了很多资料才知道,不能在 onAnimationStart()
时才显示,必须在动画开始之前就显示(View.VISIBLE)出来
解决方法
//定义一个放大动画
ScaleAnimation circularAnim = new ScaleAnimation(1.0f, 50f, 1.0f, 50f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
circularAnim.setDuration(500);
circularAnim.setAnimationListener(new AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {//mImageView.setVisibility(View.VISIBLE); // 注意: 不该在动画开始时set VISIBLE,不然会看不到动画}@Overridepublic void onAnimationEnd(Animation animation) {mImageView.setVisibility(View.GONE);// TODO Something...}@Overridepublic void onAnimationRepeat(Animation animation) {}
});//点击开始按钮时播放动画
mStartButton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {mImageView.setVisibility(View.VISIBLE); //而应该在开始动画之前set VISIBLEmImageView.startAnimation(circularAnim);}
});
参考资料:
1、An easy way to make GONE animation work
2、android animation view.setVisibility(View.GONE)导致动画无效
这篇关于【Android】view.setVisibility(View.GONE)导致动画无效的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!