背景
游戏上架谷歌申请举荐时,谷歌会给予一些优化倡议。这些倡议实际上都是比拟不错的游戏体验优化方向。以下依据 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/ 游戏盒子