美文网首页Android Other自定义view
Android 设置View的阴影背景

Android 设置View的阴影背景

作者: 8a6694221956 | 来源:发表于2019-04-12 18:11 被阅读136次

公司的项目需要实现一个View的阴影渐变背景效果,然后展示的内容是一个九宫格形式,如下图:

开始想直接使用shape来实现,貌似不行。后面想着使用cardView,但是cardView有系统版本兼容问题,而且不能设置阴影的背景色,果断放弃。最后决定采用图层layer-list来实现,效果和设计稿表现的一致。

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

        <shape android:shape="rectangle">

            <solid android:color="#FFFFFF" />

            <corners android:radius="0dp" />

                android:bottom="2dp"

                android:left="8dp"

                android:right="8dp"

                android:top="2dp" />

        <shape android:shape="rectangle">

            <solid android:color="#FEFEFE" />

            <corners android:radius="10dp" />

                android:bottom="2dp"

                android:left="2dp"

                android:right="2dp"

                android:top="2dp" />

        <shape android:shape="rectangle">

            <solid android:color="#FDFDFD" />

            <corners android:radius="10dp" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="#FCFCFC" />

            <corners android:radius="10dp" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="#FBFBFB" />

            <corners android:radius="10dp" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="#FAFAFA" />

            <corners android:radius="10dp" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="#F9F9F9" />

            <corners android:radius="10dp" />

                android:bottom="2dp"

                android:left="2dp"

                android:right="2dp"

                android:top="2dp" />

</layer-list>

这里需要注意一个问题,就是多图层绘制会导致过度渲染的问题,其实中间图层的背景色除了边框渐变的阴影,其他部分采用透明色就可以了。所以最终的方案如下:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

        <shape android:shape="rectangle">

            <solid android:color="#FFFFFF" />

            <corners android:radius="0dp" />

                android:bottom="2dp"

                android:left="8dp"

                android:right="8dp"

                android:top="2dp" />

        <shape android:shape="rectangle">

            <solid android:color="@color/transparent" />

            <corners android:radius="10dp" />

                android:width="2dp"

                android:color="#FEFEFE" />

                android:bottom="2dp"

                android:left="2dp"

                android:right="2dp"

                android:top="2dp" />

        <shape android:shape="rectangle">

            <solid android:color="@color/transparent" />

            <corners android:radius="10dp" />

                android:width="1dp"

                android:color="#FDFDFD" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="@color/transparent" />

            <corners android:radius="10dp" />

                android:width="1dp"

                android:color="#FCFCFC" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="@color/transparent" />

            <corners android:radius="10dp" />

                android:width="1dp"

                android:color="#FBFBFB" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="@color/transparent" />

            <corners android:radius="10dp" />

                android:width="1dp"

                android:color="#FAFAFA" />

                android:bottom="1dp"

                android:left="1dp"

                android:right="1dp"

                android:top="1dp" />

        <shape android:shape="rectangle">

            <solid android:color="#F9F9F9" />

            <corners android:radius="10dp" />

                android:bottom="2dp"

                android:left="2dp"

                android:right="2dp"

                android:top="2dp" />

</layer-list>

相关文章

  • Android 设置View的阴影背景

    公司的项目需要实现一个View的阴影渐变背景效果,然后展示的内容是一个九宫格形式,如下图: 开始想直接使用shap...

  • View设置阴影

    一、设置阴影 在 Android 5.0 以后,可以通过 xml 或 Java代码 的方式给 View 添加阴影/...

  • Android 5.0 elevation 设置阴影无效

    elevation 设置阴影需要注意两点:1、view需要设置背景2、阴影是绘制在父控件上的,子控件和父控件之间要...

  • 解决APP启动闪屏

    1.在style 中设置 背景透明色 [html]view plaincopy true @android:col...

  • App开发中遇到的问题

    iOS xib view设置阴影失效问题 设置阴影 设置footer高度无效 iOS 11 TableView h...

  • 设置view阴影

    设置单边的阴影

  • View的阴影设置

    阴影的颜色: view.layer.shadowColor =[UIColor grayColor].CGColo...

  • view的阴影设置

    添加以下代码设置贝塞尔曲线

  • 视图和阴影

    定义View的阴影 android 5.0增加了Z属性,用来控制View的高度,从而产生阴影效果 阴影是由Z属性控...

  • Android适配-view设置背景闪烁

    做了一个需求,右滑关闭activity,需要把activity的主题设置为透明,才能在滑动时看到下面的页面,否则看...

网友评论

    本文标题:Android 设置View的阴影背景

    本文链接:https://www.haomeiwen.com/subject/ebqhwqtx.html