我有一个包含原生Android活动和UnityPlayer的项目。
该项目的设置使得我可以在Android Studio中进行Android UI工作,将项目构建为库,并通过特殊的" bootstrap"在Android工作室中执行。允许我通过Android Studio直接部署到我的设备的项目(Unity播放器在这种情况下不起作用)。
如果我想运行Unity播放器,我将库项目导出为.aar存档并将其放在我的Unity插件文件夹中。然后我通过Unity部署到我的设备 - >建设与发展运行
bootstrap项目不包含自己的类或样式,它只是在处理特定于Android的代码时启用快速部署的包装器。
在大多数情况下,这种方法运作得相当好。但是,我注意到引导程序构建和Unity构建之间的一些视觉差异。具体来说,android:elevation
标记在应用中的任何位置都不起作用。另外 - 我的波纹可绘制按钮在一个小方块区域内动画,而不是在引导程序项目中可见的完整圆圈。请参阅下面的屏幕截图。
我的所有活动都继承自AppCompatActivity
,我使用的是继承自Theme.AppCompat.Light.NoActionBar
的自定义主题。我在运行5.1.1的Nexus 6和运行5.0的Nexus 9上进行了测试。我的最低SDK级别为15,目标SDK为22。
其他样式元素工作正常 - 主要/主要暗/重音颜色很好。如何使Unity构建看起来与原生Android构建相同?
Bootstrap构建截图
Unity构建屏幕截图
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
</style>
引导程序清单
<manifest package="<mypackage>.bootstrap"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
tools:replace="android:icon"/>
</manifest>
图书馆项目清单
<manifest
package="<mypackage>"
xmlns:android="http://schemas.android.com/apk/res/android"
android:versionCode="1"
android:versionName="1.0">
<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-feature
android:name="android.hardware.bluetooth_le"
android:required="false"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<!-- Activities and services -->
</application>
</manifest>