一、scrollview嵌套viewpager空白页面
二、 动态切换APP图标(本地提前设置)
使用场景为APP内用户手动选择图标,如节日、特殊活动图标(要实现这个功能主要涉及到两个点:清单文件配置 activity-alias 和PackageManager下的API setComponentEnabledSetting )
-
清单文件配置如下,一个activity-alias代表一个可替换图标(这里需要注意,launcherA和launcherB的
android:enable
属性要配置为false,要不然应用安装界面会有三个图标了)<activity android:name=".MainActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity-alias android:name="launcherA" android:enabled="false" android:exported="true" android:icon="@mipmap/ic_launcher_a" android:label="A图标应用" android:roundIcon="@mipmap/ic_launcher_a_round" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> <activity-alias android:name="launcherB" android:enabled="false" android:exported="true" android:icon="@mipmap/ic_launcher_b" android:label="B图标应用" android:roundIcon="@mipmap/ic_launcher_b_round" android:targetActivity=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> </application>
- 通过setComponentEnabledSetting设置相应的图标,该API对应的3个参数解析
- componentName–要启用的组件
- newState–组件的新启用状态。
- flags–可选的行为标志
int newState = PackageManager.COMPONENT_ENABLED_STATE_DISABLED;//纯更换图标,不额外生成另一个APP
int flags = PackageManager.DONT_KILL_APP;//不杀死包含该组件的应用程序
MiChatApplication.getContext()
.getPackageManager()
.setComponentEnabledSetting(new ComponentName("包名", "启动类全路径"), newState, flags);
通过以上关键2点即可动态更换应用图标