Java instagram或direct如何不将图标启动器中的形状更改为android oreo中的圆形

Java instagram或direct如何不将图标启动器中的形状更改为android oreo中的圆形,java,android,android-studio,kotlin,android-8.0-oreo,Java,Android,Android Studio,Kotlin,Android 8.0 Oreo,instagram如何在Android oreo中将图标的形状更改为不同的遮罩(圆形、方形、泪珠) <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".NotificationReceiver"

instagram如何在Android oreo中将图标的形状更改为不同的遮罩(圆形、方形、泪珠)

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
安装instagram的设备屏幕截图:

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
我创建了安卓在这个页面中显示的图标设计

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
直接安装的设备屏幕截图:

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
这就是密码

    <?xml version="1.0" encoding="utf-8"?>
    <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
        <background android:drawable="@color/ic_launcher_background"/>
        <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
    </adaptive-icon>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>

如前所述,如果您的
targetSdkLevel
低于26,您可以使用自己的形状图标,但这不是一个好的长期解决方案(您必须在年底前将目标定为26+)。如果你想以Oreo为目标,最好的解决方案是生成一个合适的自适应图标。也就是说,我在Pixel 2上看到了很多形状不正确的图标(Google Hangouts、Firebase、Street View、Firefox、Skype、Facebook Messenger、Outlook等),还有许多其他图标只是白色背景上的常规图标

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
确切的行为将取决于所使用的启动器,因此,如果您依赖启动器允许背景层透明或尊重奇怪的图标形状,则设备之间可能会出现不一致的图标外观

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
为了测试,我做了一个测试项目,其
targetSdkLevel
值为25,只提供了一个方形图标,并在Android 8.1的模拟像素2上运行,得到了一个方形图标,而不是像其他图标一样强制圆形

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
然后我升级到27的
targetSdkLevel
,没有添加自适应图标,它将我的方形图标放在一个白色圆圈内

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>
请注意,您不必将
compileSdkVersion
设置为与
targetSdkVersion
相同的值。您可以将
compileSdkVersion
设置为27,并使用v27支持库,同时将
targetSdkVersion
保持在25以获得方形图标(直到11月)

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <receiver
        android:name=".NotificationReceiver"
        android:enabled="true"
        android:exported="false"></receiver>
</application>

它们可能未使用自适应图标。如果不使用新格式,则该图标将添加到小尺寸的圆形遮罩中。我希望你能帮助我!!在清单中设置
android:icon
属性以引用mipmap。它将按原样显示您的图标。除非某个启动器专门添加了填充,但这是非标准行为,您无法控制它。我更改manifest.xml并添加
android:roundIcon=“@dravable/ic\u launcher\u前台”android:icon=“@dravable/ic\u launcher\u前台”
但不是更改我正在使用
编译DK27版buildToolsVersion'28.0.1'
太棒了!如果它回答了你的问题,你可以接受答案。