Программно установленный андроид: windowIsTranslucent

Я смог создать плавающее действие после этого урока http://cases.azoft.com/android-tutorial-floating-activity/

Однако для этого мне пришлось добавить эту строку в styles.xml :

 <item name="android:windowIsTranslucent">true</item> 

Возможно ли иметь такой же эффект, используя только код Android / Java? (Например, в Activity.onAttachedToWindow() или так …)

Заранее спасибо за вашу помощь.

[EDIT 01] styles.xml не должен быть изменен (и я не должен знать, что в нем …). Но для целей тестирования я использую значение по умолчанию:

 <resources> <style name="AppBaseTheme" parent="Theme.AppCompat.Light"> </style> <style name="AppTheme" parent="AppBaseTheme"> </style> </resources> 

[EDIT 02] Resources.Theme.applyStyle (), похоже, делает то, что я хочу (в соответствии с описанием API: «Поместите новые значения атрибутов в тему» ). Поэтому я создал следующий custom_style.xml :

 <resources> <style name="MyCustomStyle" > <item name="android:windowIsTranslucent">true</item> </style> </resources> 

Затем в onAttachedToWindow() я вызывал:

 getTheme().applyStyle(R.style.MyCustomStyle, true); 

Но это не имело никакого эффекта …

Возможно ли иметь такой же эффект, используя только код Android / Java?

Боюсь, нет. Вам придется делать это только в styles.xml . Значение android:windowIsTranslucent для android:windowIsTranslucent самостоятельно не может быть изменено программно.

Когда мы вызываем super.onCreate(savedInstanceState); Класс Activity предоставляет пустое графическое окно, на котором мы устанавливаем наш контент ie.views. И тема применяется к этому окну, а затем содержимое загружается в это представление.

Следовательно, последовательность будет,

  1. Вызов super.onCreate()
  2. Постановка темы для деятельности.
  3. Устанавливая представления контента для этого действия.

например.

styles.xml

 <style name="AppTheme" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:windowBackground">@drawable/background</item> <item name="android:windowNoTitle">true</item> </style> <!-- Application theme.without title bar --> <style name="AppTheme.NoTitleBar" parent="AppBaseTheme"> <!-- All customizations that are NOT specific to a particular API-level can go here. --> <item name="android:windowBackground">@drawable/background</item> <item name="android:windowNoTitle">true</item> </style> <!--Floating activity theme --> <style name="Theme_Translucent" parent="android:style/Theme.NoTitleBar.Fullscreen"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowFullscreen">true</item> </style> 

Затем установите свою тему для Floating activity следующим образом:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTheme(R.style.Theme_Translucent); // Set here setContentView(...) } 

сделай это

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window w = getWindow(); // in Activity's onCreate() for instance w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); w.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); } 

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

Добавьте тему к вам в файл манифеста, как это.

 android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" 

Пример :-

  <activity android:name="com.example.androidhackerphonelocker.MainActivity" android:label="@string/app_name" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

Надеюсь, он решает какую-то проблему вашего …

Intereting Posts
Фоновый стиль Android-радиоприемника при выборе Неопределенная ссылка glBindVertexArrayOES в eclipse Android Data Binding build.gradle syncing prob? Установить направление текста в WebView в RTL Как остановить / отменить диспетчер аварийных сигналов в другом действии? Почему очистка базы данных SQLite при очистке данных приложения от управления приложениями? SupportMapFragment показывает черный экран в течение нескольких миллисекунд Как исказить изображение на любой четырехугольник? Как я могу создать собственный собственный магазин приложений для Android? Как удалить выбранный элемент из списка? Эффективный способ загрузки всех контактов и всех телефонных номеров (Android 2.0) Не удается разрешить символ BitmapFactory.decodeResource в InteliJ Как компенсировать вид воздушного шара в маркере в Google Map V2? Есть ли точка с res / drawable-ldpi в android? Как поддерживать несколько устройств со многими изображениями в приложении?