返回

解密图凌闪屏页安卓彩蛋

Android

在体验App时发现了一款叫‘图凌’的app,闪屏页非常特别。从下图可以看到,是一个以桌面壁纸为背景的页面。这种闪屏效果让人眼前一亮,所以非常好奇他的实现原理。在不破解apk的情况下(破解失败,有腾讯乐固加固==),猜想了几种实现方式:

在逐个验证猜想之前,想到了一个页面的实现方式:

1. 在AndroidManifest.xml中声明一个Activity,并将其设置为启动Activity。
2. 在该Activity的布局文件中,添加一个全屏ImageView,并将其背景设置为桌面壁纸。
3. 在该Activity的onCreate()方法中,将该Activity设置为全屏模式,并隐藏状态栏。

这种实现方式很简单,但它有一个问题,就是当用户从后台返回该Activity时,会看到一个短暂的黑色闪屏。

为了解决这个问题,可以使用以下方法:

1. 在AndroidManifest.xml中声明一个Service,并将其设置为启动Service。
2. 在该Service的onCreate()方法中,将该Activity设置为全屏模式,并隐藏状态栏。
3. 在该Service的onStartCommand()方法中,启动该Activity。

这种实现方式可以避免黑色闪屏,但它有一个缺点,就是当用户从后台返回该Activity时,会看到一个短暂的加载过程。

为了进一步优化,可以使用以下方法:

1. 在AndroidManifest.xml中声明一个ContentProvider,并将其设置为启动ContentProvider。
2. 在该ContentProvider的onCreate()方法中,将该Activity设置为全屏模式,并隐藏状态栏。
3. 在该ContentProvider的query()方法中,启动该Activity。

这种实现方式可以避免黑色闪屏和加载过程,但它有一个缺点,就是需要修改系统代码。

经过以上分析,最终确定了图凌闪屏页的实现原理:

1. 在AndroidManifest.xml中声明一个Activity,并将其设置为启动Activity。
2. 在该Activity的布局文件中,添加一个全屏ImageView,并将其背景设置为桌面壁纸。
3. 在该Activity的onCreate()方法中,将该Activity设置为全屏模式,并隐藏状态栏。
4. 在该Activity的onResume()方法中,检查当前壁纸是否与上一次启动该Activity时相同。如果不同,则重新设置桌面壁纸,并刷新该Activity。

这种实现方式可以避免黑色闪屏和加载过程,并且不需要修改系统代码。

除了闪屏页之外,图凌还隐藏了一个安卓彩蛋。在主界面中,点击右上角的“设置”按钮,然后点击“关于图凌”,即可看到一个隐藏的页面。在这个页面中,可以看到图凌的版本号、作者信息等信息。此外,还可以点击“彩蛋”按钮,即可看到一个彩蛋页面。在这个页面中,可以看到一个动画,以及一些有趣的信息。