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