<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
首先呢,在app的AndroidManifest.xml檔案裡,設定需要替換的logo和app名稱
eg:下面設定了一套預設的,兩套用於切換的icon和名稱
android:enabled: 設為“true”時,就會啟用當前別名的Activity,和當前的icon和當前的應用名稱: 設為“false”時,表示停止使用當前別名的Activity
android:icon:當前別名的應用圖示
android:label:當前別名的應用名稱
android:name:別名,命名規則同Actively
android:targetActivity:通過別名呼叫的實際 Activity 的名稱
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.cgg.change_icon"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/Theme.ChangeIcon"> <activity android:name=".MainActivity"/> <activity-alias android:name=".DefaultAliasActivity" android:enabled="true" android:icon="@mipmap/ic_launcher" android:label="ChangeIcon" 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=".Alias1Activity" android:enabled="false" android:icon="@mipmap/app_logo_b" android:label="ChangeIcon1" 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=".Alias2Activity" android:enabled="false" android:icon="@mipmap/app_logo_c" android:label="ChangeIcon2" 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>
然後就是程式碼切換:相關方法介紹一下
通過 PackageManager 在清單檔案中所定義的任何元件上切換 啟用/停止 狀態。
PackageManager.setComponentEnabledSetting
設定包元件(活動、接收器、服務、提供程式)的啟用設定。此設定將覆蓋元件在其清單中設定的任何啟用狀態。
引數:
componentName–要啟用的元件
newState–元件的新啟用狀態。
flags–可選的行為標誌
package com.cgg.change_icon import android.content.ComponentName import android.content.Context import android.content.pm.PackageManager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.ImageView import android.widget.RadioGroup import androidx.annotation.StringDef class MainActivity : AppCompatActivity() { val APP_D = "com.cgg.change_icon.DefaultAliasActivity" val APP_1 = "com.cgg.change_icon.Alias1Activity" val APP_2 = "com.cgg.change_icon.Alias2Activity" private var mPackageManager: PackageManager? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mPackageManager = applicationContext.packageManager findViewById<ImageView>(R.id.iv_0).setOnClickListener { ShowComponent(APP_D) } findViewById<ImageView>(R.id.iv_1).setOnClickListener { ShowComponent(APP_1) } findViewById<ImageView>(R.id.iv_2).setOnClickListener { ShowComponent(APP_2) } } private fun ShowComponent(app: String){ packageManager.run { setComponentEnabledSetting( componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP ) setComponentEnabledSetting( ComponentName(baseContext, app), PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP ) } } }
佈局也貼一下
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <ImageView android:id="@+id/iv_0" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="centerCrop" android:src="@mipmap/ic_launcher" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="30dp"/> <ImageView android:id="@+id/iv_1" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="centerCrop" android:src="@mipmap/app_logo_b" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/iv_0" android:layout_marginTop="30dp"/> <ImageView android:id="@+id/iv_2" android:layout_width="80dp" android:layout_height="80dp" android:scaleType="centerCrop" android:src="@mipmap/app_logo_c" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/iv_1" android:layout_marginTop="30dp"/> </androidx.constraintlayout.widget.ConstraintLayout>
功能說完了,下面說下缺陷
替換的icon需要打包的時候就預埋到程式碼裡icon切換的時候和閃退一樣上過含activity-alias包後,如果再更新不含activity-alias包,會導致 APP 從桌面再也找不到的風險
到此這篇關於Android app本地切換logo和名稱的文章就介紹到這了,更多相關Android 切換logo和名稱內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45