【问题标题】:Transparent gradient issue透明渐变问题
【发布时间】:2016-11-08 11:15:03
【问题描述】:

我在 FrameLayout 中有谷歌地图片段的布局。此外,我将新视图放置在具有渐变背景的地图上。 布局:

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    >

    <com.google.android.gms.maps.MapView
        android:id="@+id/mapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

    <View
        android:id="@+id/fadeTop"
        android:layout_width="match_parent"
        android:layout_height="@dimen/fade_height"
        android:layout_gravity="top"
        android:background="@drawable/list_fade_top"/>
    <include layout="@layout/top_line_mid_gray"/>

</FrameLayout>

list_fade_top:

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <gradient
        android:angle="90"
              android:startColor="@color/fade_start_color"
              android:centerColor="@color/fade_center_color"
              android:endColor="@color/fade_end_color"
        android:type="linear"/>
</shape>
  1. 开始/结束和中心颜色。此渐变使用 2 条光线绘制:

<color name="fade_start_color">#00000000</color> <color name="fade_center_color">#4f000000</color> <color name="fade_end_color">#ff000000</color>

  1. 开始/结束和中心颜色。此渐变使用 1 条光线绘制:

<color name="fade_start_color">#00000000</color> <color name="fade_center_color">#6f000000</color> <color name="fade_end_color">#ff000000</color>

  1. 没有中心颜色的渐变的相同行为:

    <gradient
        android:angle="90"
              android:startColor="@color/fade_start_color"
              android:endColor="@color/fade_end_color"
        android:type="linear"/>
    

如何绘制从黑色(或半透明黑色)到全透明的平滑线性渐变?

我尝试开/关硬件加速,'getWindow().setFormat(PixelFormat.RGBA_8888);'没有什么能帮到我。

更新 1 我在 github 创建了一个简单的应用程序。 https://github.com/ralexey/TestApp 只是一个带有彩色背景和渐变的活动。

【问题讨论】:

    标签: android transparent linear-gradients


    【解决方案1】:

    在渐变中添加这一行 android:centerY="y%p" 它可以帮助你

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle" >
    
        <gradient
            android:angle="90"
            android:centerY="25%p"
            android:centerColor="@color/fade_center_color"
            android:endColor="@color/fade_end_color"
            android:startColor="@color/fade_start_color"
            android:type="linear"
            android:dither="true"
            android:useLevel="true" />
    
    </shape>
    

    【讨论】:

    • 谢谢,但也没有帮助
    • 添加此行android:dither="true"
    • android:centerY="50%p"这个符合你的要求
    • 我设置 50% 只是为了在渐变上显示两条光线。我可以完全移除中心颜色和 50%,但它会在渐变底部绘制白线,但我想在没有这条线的情况下获得平滑的渐变
    【解决方案2】:

    试试下面的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item>
            <shape android:shape="rectangle" android:padding="10dp">
                <gradient
                    android:startColor="#00000000"
                    android:centerColor="#6f000000"
                    android:endColor="#ff000000"
                    android:angle="90" />
    
            </shape>
        </item>
    
    </layer-list>
    

    【讨论】:

    • 感谢您的回答,但对我没有帮助。
    猜你喜欢
    • 2011-05-25
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2011-01-18
    • 1970-01-01
    • 2013-01-12
    • 2013-03-13
    相关资源
    最近更新 更多