Android关于Activity切换效果的达成加强
发布时间:2021-11-24 15:03:45 所属栏目:教程 来源:互联网
导读:早前做完一个应用后期需要加入点效果化。 相对于iPhone上应用的效果,最为经典的界面切换视觉效果就是,放大进入和缩小退出。 还好Android也早以有了这样对应的动画文件。 并且如大家所知的,提供了 overridePendingTransition()这个 最简单实现的方法api.
|
早前做完一个应用后期需要加入点效果化。 相对于iPhone上应用的效果,最为经典的界面切换视觉效果就是,放大进入和缩小退出。 还好Android也早以有了这样对应的动画文件。 并且如大家所知的,提供了 overridePendingTransition()这个 最简单实现的方法api. ------------------------ 但是如网上所说的: 这里需要特别说明的是,关于overridePendingTransition这个函数,有两点需要主意: 1.它必需紧挨着startActivity()或者finish()函数之后调用 2.它只在android2.0以及以上版本上适用 ---------------------------------------- 第二点不提了。 提下第一点,该方法必须在以上两个函数之后调用。 简单说就是 A ——> B切换 我们可以在A是startActivity方法后执行。那我A进来的时候呢? 比如A为入口Activity。 当然目前的应用可以很简单的解决这个视觉上的问题,因为一般应用进入都做了log或是过渡的Activity。 问题1也基本算解决了。 但是感觉每次都在start或是finish方法后写下这代码挺麻烦的 于是我试着把overridePendingTransition写在基类的oncreate中。 [html] /** * @author Nono * */ public abstract class BaseActivity extends Activity { public TextView titleView; @Override protected void onCreate(Bundle savedInstanceState) { requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); super.onCreate(savedInstanceState); overridePendingTransition(R.anim.zoomin, R.anim.zoomout); } 发现也行的。。猜测这个方法背后发生了什么。 然后蛋疼的去看了下Activity中overridePendingTransition()方法, 然后引出:ActivityManagerNative,ActivityManagerProxy等等各个无语凝噎的名词。 引出ActivityManager框架。FrameWork层次东西了,有兴趣的可以google研究下。 提下切换效果的另一种玩法。 style文件。 上面这个方式看似能很好的解决了切换这个问题。 但是仔细一看却发现,只存在两种状态下,startActivity,开启时和 finish,结束时。 一开始我考虑到activity单例以及不销毁问题。也就是不finish的时候。 悲剧了效果代码没地方写了。 简单举例:比如tabLayout布局式的。一个tabHost容器中有4个Activity,一般来说tag切换时,我们是不调用finish,而只是执行onStop,甚至上次我打 log时发现居然只是onPasue()(这个问题比较诡异了,暂且不理它)。 最后发现activity中Style下的一个android:windowAnimationStyle属性。 [html] <style name="activty_fade_in_fade_out"> <item name="@android:activityOpenEnterAnimation">@anim/fade_in</item> <item name="@android:activityOpenExitAnimation">@anim/fade_out</item> <item name="@android:activityCloseEnterAnimation">@anim/fade_in</item> <item name="@android:activityCloseExitAnimation">@anim/fade_out</item> </style> [html] <style name="register_activity" parent="XTheme"> <item name="@android:windowAnimationStyle">@style/activty_bottom_in_top_out</item> </style> [html] <activity android:name=".activity.LoginActivity" android:screenOrientation="portrait" android:theme="@style/In_Out_theme"/> 以上只是style中item可以有更多选择,就刚好解决了上面提到的问题。 ![]() (编辑:开发网_郴州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |



浙公网安备 33038102330466号