博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可以在onCreate或者onResume中start Animation吗?
阅读量:6671 次
发布时间:2019-06-25

本文共 979 字,大约阅读时间需要 3 分钟。

hot3.png

    最近产品中出了一个问题,在解决的过程中发现了一篇这样的文章:

    

   下面是这篇文章的一些观点和实现的一些方法。

    开门见山的讲,如果你在onCreate或者onResume中启动一个动画,那么结果会非常让你失望的。

    解决办法1: 在onCreate或者onResume中启动一个timer,delay一定的时间后启动动画。这样做的缺点是delay的时间太短的话,动画起不来;太长的话用户体验会很差。而且相同delay时间在不同的手机上可能表现还不一样。

  解决办法2: 在onWindowsFocussedChanged方法中启动动画。这个方法会在activity window获得focus或者失去focus时被调用。所以这个方法可以更好的表示出当前的activity是否被用户看到了。

    例子:

private TextView myTextView; /** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_home);     myTextView= (TextView)findViewById(R.id.my_textview);     anim = AnimationUtils.loadAnimation(this, R.anim.fade_in); } @Overridepublic void onWindowFocusChanged (boolean hasFocus) {   super.onWindowFocusChanged(hasFocus);   if (hasFocus)      myTextView.startAnimation(anim);}

*hasFoucs* 参数为true表示当前的window已经获得focus。

动画效果定义在下面的文件中 res/anim/fade_in.xml:

转载于:https://my.oschina.net/u/145002/blog/271391

你可能感兴趣的文章