10

Я пытаюсь создать аналогичную строку состояния и градиент навигационной панели, как Google Now.Google Теперь градиент/тень на панели состояния и панели навигации

Изображение Ссылка: прямоугольная область, показанная ниже

enter image description here

Попробовав вариант ниже на Android Зефир,

<item name="android:windowTranslucentNavigation">true</item> 
    <item name="android:windowTranslucentStatus">true</item> 

Я получаю НИЖЕ поведение на

Изображение Ссылка:

enter image description here

Может ли кто-нибудь предложить мне, как получить градиент по обоим этим?
Это градиент или это тень?

+0

не идут с более старой вариант ОС, Вы, кажется, добавить старый вариант OS –

+0

Вы со ссылкой на «minSdkVersion» или «targetSdkVersion '?? .... я тестирую на устройстве Android 6.0, теперь скриншот google теперь снимается с того же устройства ... я упомянул в своем примере приложение с minSdkVersion как 21, а targetSdkVersion as 23 –

ответ

4

Это градиент, используемый как scrim. Чтобы добиться этого эффекта, первое, что вам нужно сделать, это удалить полупрозрачную подложку для баров статуса и навигации. Another answer подробно, как вы можете это сделать на устройствах с более низкой платформой; но на Android Lollipop и выше, вы можете сделать это, просто установив два атрибуты стиля к прозрачному:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="Theme" parent="android:Theme.Material.Wallpaper.NoTitleBar"> 
     <item name="android:statusBarColor">@android:color/transparent</item> 
     <item name="android:navigationBarColor">@android:color/transparent</item> 
     <item name="android:windowTranslucentStatus">true</item> 
     <item name="android:windowTranslucentNavigation">true</item> 
    </style> 
</resources> 

Затем добавить холст, вы можете использовать форму вытяжки:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <gradient android:type="linear" 
     android:angle="270" 
     android:centerY="0.3" 
     android:startColor="#66000000" 
     android:centerColor="#33000000" 
     android:endColor="#00000000"/> 

</shape> 

Тогда вам можно просто установить его в качестве фона на View в макете:

<View 
    android:layout_width="match_parent" 
    android:layout_height="72dp" 
    android:background="@drawable/scrim"/> 

Вы также можете установить атрибут android:rotation="180" использовать тот же градиент в нижней части го e экран.

+0

Если я замечаю это правильно, я мог видеть, что это не приложение google now, которое имеет scrim, но домашний экран (например, в строке состояния есть сценарий). мы можем проверить исходный код Android в строке состояния, как применяется сценарий. –

+0

@Jitendar Я не думаю, что он применяется к строке состояния напрямую (хотя я бы не стал полностью его исключать). Я думаю, что [Google Now Launcher] (https://play.google.com/store/apps/details?id=com.google.android.launcher & hl = ru), который не является открытым исходным кодом, применяет скриншот контента к главному экрану. – Bryan

1

Сначала добавьте стиль, чтобы сделать полностью прозрачной строку состояния действия:

<!-- Base application theme. --> 
<style name="TransparentTheme" parent="android:Theme.Holo.Light"> 
<!-- Customize your theme here. --> 
<item name="android:windowBackground">@null</item> 
<item name="android:actionBarStyle">@style/ActionBarStyle.Transparent</item> 
<item name="android:windowActionBarOverlay">true</item> 
</style> 

<style name="ActionBarStyle.Transparent" parent="android:Widget.ActionBar"> 
<item name="android:background">@null</item> 
<item name="android:displayOptions">showHome|showTitle</item> 
<item name="android:titleTextStyle">@style/ActionBarStyle.Transparent.TitleTextStyle</item> 
</style> 

<style name="ActionBarStyle.Transparent.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 
<item name="android:textColor">@android:color/white</item> 
</style> 

и добавить холстом ему создать Drawable файл и добавьте этот код:

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
<solid android:color="#88000000" /> 
<gradient 
    android:angle="90" 
    android:centerColor="#66000000" 
    android:centerY="0.3" 
    android:endColor="#00000000" 
    android:startColor="#CC000000" 
    android:type="linear" /> 
</shape> 

и добавить в качестве фона в вашей теме;

+0

Не работал точно так, как раньше, но я определенно получаю хороший совет из вашего ответа. – Dhruv