投影渲染没有透明度

时间:2014-12-07 13:50:15

标签: android android-xml android-drawable dropshadow

this project feature / drop-shadow 分支)中,我尝试在视图容器上添加投影。因此,我定义了以下形状(drawable/shadow_above):

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
            android:startColor="#20000000"
            android:endColor="@android:color/transparent"
            android:angle="90">
    </gradient>
</shape>

然后在布局文件(container_infos.xml)中使用它,如下所示:

<View
    android:background="@drawable/shadow_above"
    android:layout_width="match_parent"
    android:layout_height="4dp"/>

屏幕截图显示了结果。出于某种原因,投影看起来很糟糕。 无透明度。我究竟做错了什么?随意向我的开源项目发送拉取请求。

Awful drop shadow


使用RelativeLayout的解决方案

我设法通过在 fragment_map.xml 中使用RelativeLayout来获得所需的结果:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:orientation="vertical"
              tools:context=".ui.MainActivity">

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

        <FrameLayout
            android:id="@+id/map_container"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:background="@android:color/holo_purple"/>

        <View
            android:background="@drawable/shadow_above"
            android:layout_alignBottom="@id/map_container"
            android:layout_width="match_parent"
            android:layout_height="4dp"/>

    </RelativeLayout>

    <include
        layout="@layout/container_infos"/>

</LinearLayout>

可能存在优化空间。

1 个答案:

答案 0 :(得分:0)

据我所知,你应该给map_container_infos_layout一个4dp大小的负上边距,它应该看起来更好