[英]Android Studio Image Asset Launcher Icon Transparent Background Color
你可能會想這個問題是一個重復這一個。 但從那時起,Android Studio已經更新,並且在那里提供的解決方案不再適用。
我想在android studio中使用圖像資源設置我的應用程序徽標。 這是因為如果我將我的應用程序徽標直接放在drawable或mipmap中,那么會導致很多問題:如果它的大小很大,則會發生應用程序崩潰,如果在oreo上運行的設備然后徽標將不會顯示並且默認ic_launcher正在顯示等。
在嘗試使用圖片資源設置我的應用程序徽標時,我遇到了一個問題:我無法保持app徽標的背景透明。
我有一個在photoshop中制作的png徽標,我想將其設置為我的應用徽標,我不想要任何背景,但android studio圖像資產不提供任何刪除背景的選項。 我嘗試了以下來自谷歌的解決方案:
但這些都不適合我。
這些都不起作用......請幫助我。 任何幫助將不勝感激。
Android 8.0 Oreo(API級別26)引入了自適應啟動器圖標 ,它由兩層組成:前景和背景。 材料設計指南聲明背景圖層在Android O及更高版本中必須是不透明的 ,您可以在以下引文的底部看到。 因此,如果您的應用的targetSdkVersion為26或更高,則Android 8.0或更高版本的自適應啟動器圖標必須至少具有不透明的背景顏色。
https://material.io/guidelines/style/icons.html#icons-icons-for-android
Android的圖標
Android O及更高版本
Android O圖標代表設備主頁和所有應用程序屏幕上的應用程序。 以下指南描述了圖標如何獲得獨特的視覺處理,動畫和行為。
...
圖層規格
圖標由兩層組成:前景和背景。 每個層可以獨立於其他層激活和接收治療。
前景(滾動視差)
- 108 x 108 dp
- 72dp蒙面部分
- 推薦透明度(可選)
背景(微妙的視差)
- 108 X 108 dp
- 72dp蒙面部分
- 必須是不透明的
雖然8.0或更高版本的啟動器圖標必須具有不透明的背景顏色,但7.1或更低版本的其他傳統啟動器圖標可以恢復為透明背景顏色,如果您可以省略應用程序中的圓形啟動器圖標 。
shape
設置為none
,則它們將具有透明背景顏色。 res/mipmap/ic_laucher_round
。 application
元素中刪除屬性android:roundIcon="@mipmap/ic_launcher_round"
。 在上面的左側窗格中,以下XML文件定義Android 8.0或更高版本的自適應啟動器圖標。
如右側窗格所示,它們引用了以下可繪制的XML文件。
在Android 8.0或更高版本中,啟動器圖標的背景顏色可以是透明的,如Android 8.1(Nexus 5X)屏幕截圖所示。 示例應用程序“NoAdaptive”沒有任何資源用於文件夾mipmap-anydpi-v26
的自適應啟動器圖標,而另一個應用程序“Adaptive”具有該資源。
雖然啟動器圖標的背景顏色在Android 8.0或更高版本中可以是透明的,但它取決於用戶的啟動器應用程序。 某些啟動器應用會將您的舊圖標轉換為不透明的自適應圖標。
根據其軟件包名稱com.google.android.launcher
,默認啟動器應用是Google Now Launcher 。 背景顏色可以是透明的,如Update#1的屏幕截圖所示。
根據其軟件包名稱com.google.android.apps.nexuslauncher
,默認的啟動器應用程序是Pixel Launcher 。 “ 最近”屏幕中的背景顏色可以是透明的,如下面的屏幕截圖所示:
這些GMS應用程序是封閉源:
com.google.android.launcher
Google Now Launcher com.google.android.apps.nexuslauncher
Pixel Launcher 相比之下, AOSP應用程序是開源的。 Android中的大多數啟動器應用都基於以下啟動器應用的源代碼:
com.android.launcher
com.android.launcher2
com.android.launcher3
在Launcher3的git branch oreo-release中, LauncherIcons.java具有wrapToAdaptiveIconDrawable
方法,該方法將自適應啟動器圖標中的傳統啟動器圖標包裝起來。
/**
* If the platform is running O but the app is not providing AdaptiveIconDrawable, then
* shrink the legacy icon and set it as foreground. Use color drawable as background to
* create AdaptiveIconDrawable.
*/
static Drawable wrapToAdaptiveIconDrawable(Context context, Drawable drawable, float scale) {
if (!(FeatureFlags.LEGACY_ICON_TREATMENT && Utilities.isAtLeastO())) {
return drawable;
}
try {
if (!(drawable instanceof AdaptiveIconDrawable)) {
AdaptiveIconDrawable iconWrapper = (AdaptiveIconDrawable)
context.getDrawable(R.drawable.adaptive_icon_drawable_wrapper).mutate();
FixedScaleDrawable fsd = ((FixedScaleDrawable) iconWrapper.getForeground());
fsd.setDrawable(drawable);
fsd.setScale(scale);
return (Drawable) iconWrapper;
}
} catch (Exception e) {
return drawable;
}
return drawable;
}
該標志FeatureFlags.LEGACY_ICON_TREATMENT
中定義FeatureFlags.java :
// When enabled, icons not supporting {@link AdaptiveIconDrawable} will be wrapped in this class.
public static final boolean LEGACY_ICON_TREATMENT = true;
因此,傳統啟動器圖標的背景顏色取決於此標志,並且在某些啟動器應用程序(如Pixel Launcher)中它可能是不透明的。
如果該標志設置為true
,則使用R.drawable.adaptive_icon_drawable_wrapper
創建新的自適應啟動器圖標,並且現有的舊圖標將成為其前景層。 根據資源XML文件 ,背景圖層是drawable: @color/legacy_icon_background
:
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/legacy_icon_background"/>
<foreground>
<com.android.launcher3.graphics.FixedScaleDrawable />
</foreground>
</adaptive-icon>
顏色legacy_icon_background
在colors.xml中定義
<color name="legacy_icon_background">#FFFFFF</color>
因此,背景顏色變為白色。
在Android 5.0中,在創建透明文件之前,圖標始終具有不透明的背景。
Icon Type
Launcher Icons (Adaptive and Legacy)
。 Asset Type
”中選擇“ Image
,然后在“ Path
字段(“ Foreground Layer
選項卡)中選擇 ic_launcher-web.png
的大小)。 Background Layer
選項卡中,選擇“ Asset Type
Image
並從步驟4加載透明背 Legacy
選項卡中,為所有Generate
選擇Yes
,為Shape
選擇None
。 Foreground Layer
和“ Background Layer
選項卡中,您可以更改修剪大小 雖然您會在Preview
窗口中看到圖像背后的黑色背景,但在按下Next
, Finish
並編譯應用程序后,您將在Android 5,Android 8中看到透明背景。
這是透明圖像:
嘗試這種方式對我有用:
首先,從Image Asset創建一個啟動器圖標(Adaptive and Legacy)
:為背景圖層選擇一個image
,並將其大小調整為0%或1%,並在舊版標簽中將shape
設置為none
。
在項目窗口中刪除文件夾res/mipmap/ic_laucher_round
並打開AndroidManifest.xml並從application
元素中刪除屬性android:roundIcon="@mipmap/ic_launcher_round"
。
刪除ic_launcher.xml
從mipmap-anydpi-v26
。
注意:某些設備(如Nexus 5X(Android 8.1)會自動添加白色背景,無法執行任何操作。
如果我沒有弄錯你有一個來自Photoshop文件的512x512像素的png文件,你想為它制作所有必要文件夾的徽標(mipmap-xxxhdpi到mipmap-mdpi)。
您也可以在使用Android Studio創建圖標后使用此功能。 我更喜歡用Photoshop創建我的圖標。
使用Photoshop創建512x512px圖標后,我使用此網站 。 您不僅可以為Android應用程序提供Android圖標等等,而且它是免費的。 圖標被正確縮放,命名,並放置在zip文件的android文件夾下的mipmap文件夾中。 您只需在下載並復制並粘貼后解壓縮文件。我至少制作了50個圖標,從未出現過問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.