作者
大家好,我叫Jack冯;
本人20年硕士结业于广东工业大学,于2020年6月参加37手游安卓团队;现在首要负责海外游戏发行安卓相关开发。
系列目录
游戏优化系列一:海外谷歌运用适配相关(本章讲解)
游戏优化系列二:Android Studio制造图标教程
游戏优化系列三:Unity游戏的黑屏问题解决方法
本文目录
-
谷歌运用图标
-
状态栏音讯推送
-
体系主题风格
-
导航键
-
屏幕适配
-
回来按钮
布景
游戏上架谷歌申请引荐时,谷歌会给予一些优化主张。这些主张实际上都是比较不错的游戏体会优化方向。以下根据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下面。
Android Studio制造icon的教程,详见《游戏优化系列二-Android Studio制造图标教程》
示例:
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类主题,因而主张游戏工程的主题设置不留空,即选用第二种方式设定相关主题!
【留意】
假如修正主题后,输入框等显现异常(eg:角色的名称输入框,布景白色、字体白色,会影响玩家体会),可运用引荐主题来修复android:theme=”@style/Theme.AppCompat.Light.DarkActionBar”
4.导航键
体系导航键不能挡住功用,最好能够运用IMMERSIVE_STICKY模式(即彻底全屏,告诉栏和导航键都自动隐藏,需求API-19以上支撑)。
掩盖功用情景:
修正示例:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
修正效果:
5. 屏幕适配
(1)屏幕方向
在某些运用程序中偶然会呈现180度左右的倒挂现象。为了获得更好的用户体会,咱们主张您保持整体方向与原始方向共同。
由于某些横屏的游戏,能够根据重力自动转化屏幕(转化后仍是横屏,只是方向不同),所以修正androidmanifest中Activity特点,android:screenOrientation设置为sensorLandscape即可。
(2)适配多种屏幕
在androidmanifest参加下面配置
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true" />
6.回来按钮
回来按钮需具有回来功用,应具有回来上一级内容、撤销当前处理中的事务、退出游戏等效果。
回来键功用的官方解释:
1.具有与屏幕上任何后退或封闭按钮相同的功用
2.暂停和撤销暂停游戏(假如适用)
3.封闭一切对话框窗口
4.导航到菜单堆栈中的上一个方位(假如适用)
5.第一次登录时,在主菜单中按下退出运用程序,在服务器挑选和字符挑选页面中,Android后退按钮呈现错误行为。
具体情境:
(1)在游戏启动、资源加载过程,点击体系回来按钮要求能够后退,或许弹框提示用户是否退出游戏;(部分运用在这过程屏蔽了体系按钮,呈现被谷歌运用商铺回绝的情况)
(2)活动弹窗显现时,点击回来体系按钮要求能够封闭弹窗。
示例说明:点击回来按钮无法封闭弹窗
结束语
过程中有问题或许需求沟通的同学,能够扫描二维码加好友,然后进群进行问题和技术的沟通等;