前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Android项目实战(三十六):给背景加上阴影效果

Android项目实战(三十六):给背景加上阴影效果

作者头像
听着music睡
发布于 2018-05-18 07:19:36
发布于 2018-05-18 07:19:36
1.6K00
代码可运行
举报
文章被收录于专栏:Android干货Android干货
运行总次数:0
代码可运行

圆角背景大家应该经常用:

一个drawable资源文件  里面控制corner圆角 和solid填充色 

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="@dimen/dp_2"></corners>
    <solid android:color="@color/standard_main"></solid>
</shape>

 那么在此基础上 , 实现带阴影效果的圆角背景  

 代码如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 阴影部分 -->
<!-- 个人觉得更形象的表达:top代表下边的阴影高度,left代表右边的阴影宽度。其实也就是相对应的offset,solid中的颜色是阴影的颜色,也可以设置角度等等 -->
<item
    android:left="4dp"
    android:top="4dp">
    <shape android:shape="rectangle" >

        <gradient
            android:angle="270"
            android:endColor="#0F000000"
            android:startColor="#0F000000" />

        <corners
            android:bottomLeftRadius="@dimen/dp_4"
            android:bottomRightRadius="@dimen/dp_14"
            android:topLeftRadius="@dimen/dp_4"
            android:topRightRadius="@dimen/dp_4" />
    </shape>
</item>

<!-- 背景部分 -->
<!-- 形象的表达:bottom代表背景部分在上边缘超出阴影的高度,right代表背景部分在左边超出阴影的宽度(相对应的offset) -->
<item
    android:bottom="3dp"
    android:left="@dimen/dp_0.5"
    android:top="@dimen/dp_0.5"
    android:right="3dp">
    <shape android:shape="rectangle" >
        <gradient
            android:angle="270"
            android:endColor="#FFFFFF"
            android:startColor="#FFFFFF" />

        <corners
            android:bottomLeftRadius="@dimen/dp_4"
            android:bottomRightRadius="@dimen/dp_14"
            android:topLeftRadius="@dimen/dp_4"
            android:topRightRadius="@dimen/dp_4" />
    </shape>
</item>

</layer-list>

 效果: 可以看到 右侧和下侧都有一个小范围的灰色阴影效果。

在实际产品中作为列表item的背景效果:

 是不是实现了一种类似cardview的效果 

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android学习第一弹:Android通过用代码画虚线椭圆边框背景来学习一下shape的用法
学习Shape的用法 非著名程序员 在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,shape可以绘制矩形环形以及椭圆,所以只需要用椭圆即可,在使用的时候将控件
非著名程序员
2018/02/01
2.2K0
Android学习第一弹:Android通过用代码画虚线椭圆边框背景来学习一下shape的用法
Android 通过layer-list 实现View 的阴影效果
主要介绍如何在res文件夹中的drawable中给View的布局添加上阴影效果。那么我们通过shape进行绘制的带阴影的布局有哪些优缺点和使用场景呢?
zinyan.com
2023/07/13
7750
Android 通过layer-list 实现View 的阴影效果
Android知识点
想每次进入页面刷新,可以放在onResume方法里(不推荐) 颜色透明度:#7f000000 代表50%透明度的黑色
六月的雨
2020/03/27
6860
自定义 Drawable 你还只会 <shape> 吗?
其中每一个卡片的背景都是从上到下渐变,仔细看其中的边框也是渐变的,这个要怎么实现呢?第一个能想到的最简单的办法就是让设计师导出包含边框的完整的背景切图。但是作为一个优(ban)秀(zhuan)的开发工程师,当然要想办法自己实现啦,用切图你就输啦!(开玩笑);更重要的是,对比直接使用一张图,使用自定义 Drawable 来实现可以减少包大小(还能炫技)
Rouse
2024/05/28
1360
自定义 Drawable 你还只会 <shape> 吗?
Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
用户1155943
2018/01/04
2.6K0
Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
android之自定义渐变颜色(一)
你是否已经厌恶了纯色的背景呢?那好,android提供给程序员自定义渐变颜色的接口,让我们的界面炫起来吧。 首先,你在drawable目录下写一个xml,代码如下 <?xml version="1.0
forrestlin
2018/05/23
8330
Android – Drawable 详解
很早看过这篇文章,并做了笔记,后来看到群里的小伙伴有问相关Drawable的问题,就把这篇翻译过来的文章给放出来了。大家一起学习,一起进步。想看原文的小伙伴可以点击下面的链接。 原文地址 前言 Drawable是可以绘制到屏幕上的图形。 Drawable用于定义形状,颜色,边界,渐变等,然后将其应用于Activity中的View。 这通常用于自定义显示在特定View。 Drawable倾向于在XML中定义,然后可以通过XML或Java代码应用于View。 有关Android的每个版本的默认Drawab
code_horse
2018/07/02
5.5K0
Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)
本文介绍了如何在Android中创建一个可绘制对象,该对象可以呈现复杂的几何形状、可自定义颜色和样式、支持动态调整大小和位置。同时,还介绍了如何使用GradientDrawable来设置自定义颜色和形状,以及如何使用ShapeDrawable来创建圆角、渐变等效果。同时,还介绍了如何动态创建和修改GradientDrawable的属性,以满足不同的需求。
用户1155943
2018/01/04
3.7K0
Android GradientDrawable(shape标签定义) 静态使用和动态使用(圆角,渐变实现)
Android开发笔记(八)神奇的shape
shape意即形状,是Android中描述规则几何图形的定义,ShapeDrawable其实就是Drawable的一个子类。用好shape,可以让APP页面不再呆板;用好shape,可以节省不小的美工工作量。 shape的定义文件是xml,以shape元素为根节点。根节点下定义了六个节点:corners(圆角)、gradien(渐变)、padding(间隔)、size(尺寸)、solid(填充)、stroke(描边),各节点的属性值主要是各种长宽、半径、角度,以及颜色。这些定义很简单,多用几遍就记住了,不过网上的介绍大多不全,所以博主在下面就详细介绍各节点的属性用法。   shape(根节点) android:shape: 字符串类型,图形的形状。为rectangle表示矩形(默认),为oval表示椭圆(此时corners节点将失效),为line表示直线(此时必须设置stroke节点,不然会报错),为ring表示圆环。 下面的属性只有在android:shape="ring"时可用: android:innerRadius: 像素类型,内圆的半径。 android:innerRadiusRatio: 浮点型,以环的宽度比率来表示内圆的半径。例如,如果android:innerRadiusRatio="3",表示内圆半径等于环的宽度(即外圆直径)除以3。如已设置android:innerRadius则不需设置本属性 android:thickness: 像素类型,环的厚度 android:thicknessRatio: 浮点型,以环的宽度比率来表示环的厚度。例如,如果android:thicknessRatio="2",那么环的厚度就等于环的宽度除以2。如已设置android:thickness则不需设置本属性 android:useLevel: 布尔类型,如果当做是LevelListDrawable使用时值为true,否则为false(一般情况必须设置为false,不然ring无法显示)。   corners(圆角) android:bottomLeftRadius: 像素类型,左下圆角的半径 android:bottomRightRadius: 像素类型,右下圆角的半径 android:topLeftRadius: 像素类型,左上圆角的半径 android:topRightRadius: 像素类型,右上圆角的半径 android:radius: 像素类型,圆角半径(若有上面四个圆角半径的定义,则不需要radius定义)   无corners节点表示没有圆角   gradien(渐变) android:angle: 整型,渐变的起始角度。0值时表示时钟的九点位置,其值增大表示往逆时针方向旋转。例如值为90表示时钟六点位置,值为180表示时钟三点位置,值为270表示时钟零点/十二点位置 android:centerX: 浮点型,圆心的X坐标。当android:type="linear"时不可用 android:centerY: 浮点型,圆心的Y坐标。当android:type="linear"时不可用 android:gradientRadius: 整型,渐变的半径。当android:type="radial"时才需要设置该属性 android:centerColor: 颜色类型,渐变的中间颜色 android:startColor: 颜色类型,渐变的起始颜色 android:endColor: 颜色类型,渐变的终止颜色 android:type: 字符串类型,渐变类型。为linear表示线性渐变(默认值),为radial表示放射渐变(起始颜色就是圆心颜色),为sweep表示滚动渐变(即一个线段以某个端点为圆心做360度旋转) android:useLevel: 布尔类型,设置为true无渐变,false有渐变色。如果要使用LevelListDrawable对象,就要设置为true   无gradien节点表示没有渐变效果   padding(间隔) android:bottom: 像素类型,与下边的间隔 android:left: 像素类型,与左边的间隔 android:right: 像素类型,与右边的间隔 android:top: 像素类型,与上边的间隔   无padding节点表示四周不设间隔   size(尺寸) android:height: 像素类型,图形高度 android:width: 像素类型,图形宽度   无size节点表示长宽自适应   solid(填充) android:color: 颜色类型,内部填充的颜色   无solid节点表示无填充颜色   
aqi00
2019/01/18
1.6K0
Art of Android Development Reading Notes 6
《Android开发艺术探索》读书笔记 (6) 第6章 Android的Drawable
宅男潇涧
2018/08/01
4680
相关推荐
Android学习第一弹:Android通过用代码画虚线椭圆边框背景来学习一下shape的用法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文