【问题标题】:How to make the icon background of an Android app transparent?如何让安卓应用的图标背景透明?
【发布时间】:2018-11-30 07:41:12
【问题描述】:

一个PNG图片作为图标的前景,背景应该是完全透明的。

在 Asset Studio 中使用 Android Studio > New Image Asset > Configure Image Asset dialog,几乎可以尝试多种背景选项组合,包括从路径中完全删除文件以及删除 ic_launcher.xmlic_launcher_round.xml 中的背景标签。

在此向导中从路径中删除文件并从 XML 文件中删除标签几乎可以解决问题,但仍保留一个微弱的黑色轮廓作为背景 (~alpha=20%)。在查看设备启动器上的图标时,背景层的所有其他选项都会在前景图像后面留下纯白色或黑色背景。

许多应用只在其图标上设置了前景,因此这是可能的。我在这里做错了什么?

更新:感谢您的快速cmets!我尝试了作为答案提供的两种解决方案,结果相同。屏幕截图已按建议上传。

仅在向导中更新旧版图标是不够的,因为这只会更改旧版图标格式。更新的“自适应”图标也是必需的。即使背景设置为完全透明的方形 png,Android Studio 也会将其更改为白色。如果背景文件被完全删除,向导会允许完成,但 Android Studio 会使用稍微不透明的黑色背景,如图所示。对于上传的图片,前景后面应该没有任何东西,完全灰色到在这种情况下没有任何可见的圆圈。

Screen capture from device running API 25

【问题讨论】:

  • 你能展示一下你正在得到什么以及你正在努力实现什么吗?
  • 如果你想为 ic_launcher 使用透明图标,然后将你的 512x512 大小的图标粘贴到 drawable 中,你不需要通过 -new image assets > configure... 只粘贴就可以了.然后在 manifest 中引用新粘贴的图标
  • (如果您想查询否决票,请在 cmets 中进行。大多数不登录或不投票的人对此并不感兴趣。大多数要求解释投票的呼吁都被忽视了反正选民,所以我建议你忽略它。)
  • @halfer 我会在这里跟随你的领导,因为这是我的第一篇文章,我将尝试通过 cmets 征求对否决票的解释。
  • @halfer 最好能对帖子中的问题有所了解,否则我只会受到空洞的谴责,没有改进的能力。

标签: java android xml image android-studio


【解决方案1】:

方法一:

如果您有 png,只需将其复制并粘贴到 drawable 中,然后从清单中引用图像名称。

<application
        android:allowBackup="true"
        android:icon="@mipmap/new_image"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/new_image"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        ....
        </application>

方法二:

转到文件 > 新建 > 图像资产,确保选择 png 图像(具有透明背景)并将背景形状设置为无。

【讨论】:

  • 对我有用的解决方案是同时实现这两种方法。
  • 非常非常非常感谢@AmirDe,感谢您使用方法 1 挽救了我的一天。
【解决方案2】:

首先你有一个背景图片来获得透明图标,没有任何背景图片你不能让你的图标透明。

如果您希望图像透明,您只需使用一些照片编辑器。

【讨论】:

    【解决方案3】:

    获取 imageButton 的视图

    View v = findViewById(R.id.myImageBtn);
    

    从应用程序中获取图标,例如 Chrome

    pkgnam="com.android.chrome";
    Intent intent1 = ctx.getPackageManager().getLaunchIntentForPackage(pgknam);
    Drawable myIcon = getPackageManager().getActivityIcon(intent1);
    

    将背景图标设置为与前景图标相同

    v.setForeground(myIcon);
    v.setBackground(myIcon);
    

    【讨论】:

    • 上下文 ctx; ctx = 这个;
    猜你喜欢
    • 2018-05-23
    • 1970-01-01
    • 2012-04-15
    • 2013-09-27
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    相关资源
    最近更新 更多