2013-06-05 2 views
1

Full Edit, так как он, по-видимому, не был ясен, что это действительно программирование вопросПрозрачная панель уведомлений с живыми обоями на Galaxy S4

На Galaxy S4, панель уведомлений прозрачна по умолчанию. При использовании встроенных в «пузырях» обоев это выглядит следующим образом, например:

notification bar with bubbles wallpaper

Теперь я разработал свои собственные живые обои. Для простоты я просто заполняю доступный холст 0xFFFF0000 для скриншотов, но обычно он показывает другую сцену. На Galaxy S4, мои обои не показывают прозрачную панель уведомлений, но черный один по умолчанию:

notification bar with my wallpaper

Я заметил, что иногда мои обои показывает прозрачную панель также, здесь на заблокированном экране. Однако я не смог достоверно воспроизвести поведение.

my wallpaper transparent bar

Мой вопрос просто: есть ли способ, чтобы надежно включить прозрачную панель уведомлений от моего обои кода или манифеста? На самом деле, непредсказуемое переключение между прозрачной и черной полосой делает работу пользователя намного хуже, чем с всегда черной полосой.

+1

принадлежит http://android.stackexchange.com – Raptor

+0

@ShivanRaptor спасибо, я не знал, что это существовало – Thrakbad

+1

На самом деле это не принадлежит ... как мне только что сказали. Позвольте мне уточнить с помощью редактирования. – Thrakbad

ответ

1

Это действительно возможно на некорневого S4:

public static boolean setTransparentNotificationBarTouchWiz(View view) { 
    try { 
     Field field = View.class.getDeclaredField("SYSTEM_UI_FLAG_TRANSPARENT_BACKGROUND"); 
     Class<?> t = field.getType(); 
     if (t == int.class) { 
      int value = field.getInt(null); 
      view.setSystemUiVisibility(value); 
      return true; 
     } 
    } catch (NoSuchFieldException e) { 
    } catch (IllegalAccessException e) { 
    } 

    return false; 
} 

Моя благодарность Кевин @ Трансформатор Тесла для обмена этот флаг со мной.

+0

Большое спасибо, я еще не пробовал это с обоими обоими. Но я все равно соглашусь с ответом, чтобы люди могли лучше его найти. – Thrakbad

0

К сожалению, если вы не создаете пользовательский диск, это невозможно, если только вы не хотите, чтобы строка состояния была изменена для вашего приложения.

Для этого потребуется много работы.

Сначала вам нужно будет добавить Theme.NoTitleBar.Fullscreen в свой манифест

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
    > 

Тогда, как только вы сделали, что вы должны создать стандартную раскладку, которая представляет собой строку состояния, это будет означать, что у вас есть чтобы добавить время, а также получать все уведомления из других приложений, я лично не знаю, как это сделать, но я уверен, что есть способ.

Если вы действительно хотите это сделать, вам нелегко опередить вас.

+0

Большое спасибо за ваш ответ, но я не думаю, что это будет возможно. Я просто хочу, чтобы пусковая установка по умолчанию отображала прозрачность своего статуса, когда мои обои активны, как и для встроенных живых обоев. Я не могу запросить какие-либо функции окна для запуска по умолчанию. – Thrakbad