android 修改应用图标简例

来源:互联网 发布:熔炉的真实事件 知乎 编辑:程序博客网 时间:2024/06/13 11:13

目前市面上很多APP会在重要日期或节假日对应用图标进行修改,这将用到activity-alias属性,该属性可以用于创建多个不同的入口,具体使用如下:

<activity-alias            android:name=".MainActivity2"            android:enabled="false"            android:icon="@drawable/icon2"            android:label="newIcon"            android:targetActivity=".MainActivity" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity-alias>
Manifest完整代码:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.example.changeicondemo"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk        android:minSdkVersion="8"        android:targetSdkVersion="21" />    <application        android:allowBackup="true"        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <activity            android:name=".MainActivity"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <!-- name:组件名字 -->        <!-- enabled:该组件是否启动 -->        <!-- icon:组件图标 -->        <!-- label:组件标签说明 -->        <!-- targetActivity:组件的类 -->        <activity-alias            android:name=".MainActivity2"            android:enabled="false"            android:icon="@drawable/icon2"            android:label="newIcon"            android:targetActivity=".MainActivity" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity-alias>    </application></manifest>
MainActivity代码:

public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        ((Button) findViewById(R.id.btn)).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubchangeIcon();Intent intent = new Intent(Intent.ACTION_MAIN);//模拟Home键点击intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);intent.addCategory(Intent.CATEGORY_HOME);startActivity(intent);}});    }        private void changeIcon() {          PackageManager pm = getApplicationContext().getPackageManager();          //去除旧图标,否则会出现2个图标          pm.setComponentEnabledSetting(getComponentName(),                  PackageManager.COMPONENT_ENABLED_STATE_DISABLED,                  PackageManager.DONT_KILL_APP);          //显示新图标          pm.setComponentEnabledSetting(new ComponentName(                          getBaseContext(),                          "com.example.changeicondemo.MainActivity2"),                          PackageManager.COMPONENT_ENABLED_STATE_ENABLED,                          PackageManager.DONT_KILL_APP);      }  }

activity_main.xml代码:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:gravity="center" >    <Button        android:id="@+id/btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world"         /></RelativeLayout>

实现思路是通过activity-alias属性修改应用入口,从而实现应用图标修改,更新应用图标可能需要一小段时间,例子比较简单,完整Demo下载链接:

http://download.csdn.net/download/jingzhiying/10049880

百度云盘链接: https://pan.baidu.com/s/1slzABDV 密码: qxrn




原创粉丝点击