效果预览

右上角

实现部分

1.找到Unity工程内部的AndroidManifest.xml进行改造,找到如下内容:

<activity android:name="com.unity3d.player.UnityCustomActivity" android:exported="true" android:label="@string/app_name" android:windowSoftInputMode="adjustResize">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
  <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>

2.在<activity>标签里添加如下:

android:supportsPictureInPicture="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" 

对于标签的解释

android:supportsPictureInPicture="true":这个属性用于声明该 Activity 支持画中画模式。这样,当用户按下 Home 键或者切换到其他应用时,你的应用就有可能进入画中画模式。这个属性的值为布尔型,表示是否支持画中画模式。

android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation":这个属性用于配置在特定配置更改时 Activity 是否应该被销毁并重新创建。在这里,你声明了在屏幕大小变化、最小屏幕大小变化、屏幕布局变化、屏幕方向变化时,Activity 不会被销毁,而是系统将调用 onConfigurationChanged 方法。这对于画中画模式很重要,因为在画中画模式下,屏幕大小和方向可能会发生变化。

修改后代码如下:

<activity android:name="com.unity3d.player.UnityCustomActivity" 
          android:supportsPictureInPicture="true" android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation" 
          android:exported="true" android:label="@string/app_name" android:windowSoftInputMode="adjustResize">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
  <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>

3.编写一个Activity继承自UnityPlayerActivity,写入函数然后在Unity中显式调用即可,部分机型支持直接调用无需显式调用,函数如下:

/**
*  小窗悬浮
*/
public void EnterPIPMode() {
    enterPictureInPictureMode(new PictureInPictureParams.Builder().build());
}
最后修改:2024 年 05 月 16 日
如果觉得我的文章对你有用,请随意赞赏