关于游戏开发:游戏优化系列一海外谷歌应用适配相关

背景

游戏上架谷歌申请举荐时,谷歌会给予一些优化倡议。这些倡议实际上都是比拟不错的游戏体验优化方向。以下依据app上架谷歌利用商店的规范,列举须要适配的中央并提供了批改样例。

1. 谷歌利用图标
游戏icon:
5个不同尺寸的icon,4848, 7272, 9696, 144144, 192*192
别离放在mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi上面。

推送icon(只能由红色+通明组成):(白底通明字)
5个不同尺寸的icon,2424, 3636, 4848, 7272, 96*96
别离放在mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi上面。

示例:

2. 状态栏音讯推送
在游戏利用中进行版本迭代时,如果游戏自身有音讯推送,且SDK中也有推送的状况下,发送音讯的notify办法中,id有可能不同,此时会呈现两条音讯(游戏的和SDK的),有可能会被Google利用商店回绝举荐。

NotificationManager.notify(int id, Notification notification)

呈现两条音讯:

须要做到的成果–同一个利用的音讯重叠:

开展后:

批改示例:

private void mergeNotifications(){
    int mergeId = 0;
    String groupKey = "com.android.example.WORK_EMAIL";
    String channelId = "1";
    Notification notification1 = new NotificationCompat.Builder(MainActivity.this, channelId)
        .setSmallIcon(R.drawable.ic_launcher_background)
        .setContentTitle("推送须要重叠")
        .setContentText("这是一条SDK的告诉")
        .setGroup(groupKey)
        .build();

    Notification notification2 = new NotificationCompat.Builder(MainActivity.this, channelId)
        .setSmallIcon(R.drawable.ic_launcher_background)
        .setContentTitle("推送须要重叠")
        .setContentText("这是一条游戏的告诉")
        .setSmallIcon(R.drawable.ic_stat_name)
        .setGroup(groupKey)
        .build();

    Notification mergeNotification = new NotificationCompat.Builder(MainActivity.this, channelId)
        .setContentTitle("推送须要重叠")
        .setContentText("2条未读信息")
        .setSmallIcon(R.drawable.ic_stat_name)
        .setStyle(new NotificationCompat.InboxStyle()
            .addLine("这是一条游戏的告诉")
            .addLine("这是一条SDK的告诉")
            .setBigContentTitle("2条未读信息")
            .setSummaryText("推送测试"))
        .setGroup(groupKey)
        .setGroupSummary(true)
        .build();

    NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    notificationManager.notify(1, notification1);
    notificationManager.notify(2, notification2);
    notificationManager.notify(mergeId, mergeNotification);
}

3. 零碎主题格调

在利用外面弹出的Dialog、Loading框,须要适配零碎格调!

例如在5.0以上的零碎,呈现这种格调是不行的:

这种格调才是符合要求的:

如果这些Dialog、Loading框不是应用零碎格调,而是自行设计,则能够持续应用,不用进行额定解决; 例如:

具体实现办法有两种:

第一种,在Androidmanifest的application和activity标签下,不要设定android:theme,即可适配零碎格调。

批改示例1:

<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android"    
    package="com.game37.themeapplication">    
<application
       android:allowBackup="true"
       android:icon="@mipmap/ic_launcher" 
       android:label="@string/app_name" 
       android:roundIcon="@mipmap/ic_launcher_round" 
       android:supportsRtl="true">
       <activity
         android:name=".MainActivity"
         android:screenOrientation="sensorLandscape">
         <intent-filter> 
               <action android:name="android.intent.action.MAIN" /> 
               <category android:name="android.intent.category.LAUNCHER" /> 
          </intent-filter>
        </activity>
</application></manifest>

示例成果1:

第二种,可保留android:theme,但须要援用Google库工程appcompat_v7,应用零碎自带主题或者自定义主题。 其中,在自定义的style外面,继承Theme.AppCompat(还有很多子格调能够抉择,如Theme.AppCompat.Light和Theme.AppCompat.NoActionBar等)。

批改示例2:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.game37.themeapplication">
    <application
        ...
        android:theme="@style/Theme.AppCompat">
        <activity
            android:name=".MainActivity"
            android:screenOrientation="sensorLandscape"
            //应用自定义主题
            android:theme="@style/testStyle">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <activity
            //应用零碎自带主题
            android:name=".MainActivity2"
            android:theme="@style/Theme.AppCompat.NoActionBar" />
    </application>
</manifest>

其中,自定义主题款式如下:(设置全屏、背景色等)

<style  name="testStyle" parent="Theme.AppCompat">
    <item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
    <item name="android:windowActionBarOverlay">true</item>
    <item name="android:windowBackground">@null</item>
</style>

<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
    <item name="android:background">@color/colorAccent</item>
</style>

示例成果2:

在Androidmanifest的相干android:theme设置上述继承Theme.AppCompat格调的主题即可。

【常见问题】

游戏工程接入SDK的过程中,如果主Activity继承的是androidx.appcompat.app.AppCompatActivity,须要应用Theme.AppCompat类主题,因而倡议游戏工程的主题设置不留空,即采纳第二种形式设定相干主题!
图片起源:http://www.lyouxi.com/ 游戏盒子

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理