10

Tôi đang cố gắng tạo thanh trạng thái tương tự và thanh điều hướng giống như Google Hiện hành.Gradient/bóng của Google Hiện hành trên thanh trạng thái & thanh điều hướng

Hình ảnh tham khảo: diện tích hình chữ nhật chỉ ra như sau

enter image description here

Sau khi thử các tùy chọn dưới đây trên Android M,

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

tôi nhận được các hành vi dưới đây

Hình ảnh tham khảo:

enter image description here

Bất kỳ ai cũng có thể gợi ý cho tôi cách nhận độ dốc trên cả hai loại này?
Đó có phải là độ dốc hoặc bóng đổ không?

+0

không đi với tùy chọn hệ điều hành cũ, Có vẻ như bạn có thêm một lựa chọn hệ điều hành cũ –

+0

bạn có đề cập đến 'minSdkVersion' hoặc 'targetSdkVersion '?? .... Tôi đang thử nghiệm trên thiết bị Android 6.0, ảnh chụp màn hình hiện tại của google cũng được lấy từ cùng một thiết bị ... tôi đã đề cập trong ứng dụng mẫu của tôi với minSdkVersion là 21 và targetSdkVersion là 23 –

Trả lời

4

Đây là độ dốc được sử dụng làm scrim. Để đạt được hiệu ứng này, điều đầu tiên bạn phải làm là xóa lớp lót nửa trong suốt cho thanh Trạng thái và Điều hướng. Another answer chi tiết cách bạn có thể thực hiện việc này trên các thiết bị nền tảng thấp hơn; nhưng trên Android Lollipop trở lên, bạn có thể làm điều này chỉ đơn giản bằng cách thiết lập hai phong cách thuộc tính minh bạch:

<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> 

Sau đó, để thêm scrim, bạn có thể sử dụng một hình dạng drawable:

<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> 

Sau đó, bạn chỉ có thể thiết lập này như là nền tảng cho một View trong cách bố trí của bạn:

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

bạn cũng có thể thiết lập các thuộc tính android:rotation="180" sử dụng gradient tương tự cho các đáy thứ e màn hình.

+0

Nếu tôi nhận thấy chính xác, tôi có thể thấy rằng nó không phải là google bây giờ ứng dụng đó là có scrim, nhưng màn hình chủ (tức là thanh trạng thái chính nó có scrim). chúng ta có thể kiểm tra mã nguồn Android của thanh trạng thái, cách áp dụng hiệu ứng scrim. –

+0

@ Jitendar Tôi không nghĩ rằng nó được áp dụng cho thanh trạng thái trực tiếp (mặc dù tôi sẽ không hoàn toàn loại trừ nó ra). Tôi nghĩ [Trình khởi chạy Google Hiện hành] (https://play.google.com/store/apps/details?id=com.google.android.launcher & hl = vi), không phải là mã nguồn mở, áp dụng nội dung scrim vào màn hình chính – Bryan

1

Đầu tiên thêm một kiểu để thể hiện đầy đủ trong suốt thanh trạng thái hành động:

<!-- 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> 

và để thêm scrim để nó tạo ra một file drawable và thêm mã này:

<?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> 

và thêm này như là nền trong chủ đề của bạn;

+0

Đã không hoạt động chính xác như trước đây nhưng tôi chắc chắn nhận được một số gợi ý tốt từ câu trả lời của bạn. – Dhruv

Các vấn đề liên quan