Использование android:fitsSystemWindows="true/false" Изменение высоты панели навигации и перемещение панели навигации в белый цвет
Я работаю над UnityPlayerActivity, в котором камера рендерится на весь экран, поверх которого есть панель инструментов и панель навигации. Поэтому я сталкиваюсь со следующими проблемами, как
Случай A: Используется android:fitsSystemWindows="false" Показывает панель навигации, но не так, как ожидалось, поскольку высота панели не отображается в полноэкранном режиме. Но панель навигации Android прозрачна, камера занимает полный экран, как и ожидалось.
Случай B: Используется android:fitsSystemWindows="true" Показывает панель навигации, как и ожидалось, а высота панели отображается в полноэкранном режиме. Но панель навигации Android не прозрачна, поэтому камера не занимает весь экран, как ожидалось.
1 ответ
Не обязательно, чтобы вы были связаны с активностью Unityplayer или mainActivity.
Вы можете сделать любое действие статическим и вызвать функцию или пользовательский интерфейс, присутствующий в этих действиях, из C# unity.
Правильная методология - создать статическую активность в вашем основном проекте Android и назвать ее текущей активностью. После этого в вашем методе oncreate вы устанавливаете для currentActivity следующий код, демонстрирующий, что:
public class MainActivity extends UnityPlayerActivity {
public static MainActivity currentActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
currentActivity=this;
Кроме того: из своего кода Unity вы можете использовать C# для вызова метода Android из MainActivity с помощью следующего кода:
AndroidJavaClass jc = new AndroidJavaClass("yourpackagename.youractivity");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("toggleMenu");
ИЛИ ЖЕ
Вы можете конвертировать UnityPlayerActivity во Фрагмент, ссылка, указанная ниже, поможет вам в этом