怎么为android控件边缘添加阴影
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么为android控件边缘添加阴影相关的知识,希望对你有一定的参考价值。
为控件设置一个有阴影感的背景图片即可,可以使用shape
在自定义shape中增加一层或多层,并错开,即可显示阴影效果。为增加立体感,按钮按下的时候,只设置一层。我们可以通过top, bottom, right 和 left 四个参数来控制阴影的方向和大小
//自定义两种阴影效果
第一种
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<layer-list>
<item android:left="4dp" android:top="4dp">
<shape>
<solid android:color="#ff58bb52"/>
<corners android:radius="30dip"/>
</shape>
</item>
</layer-list>
</item>
<item>
<layer-list>
<!-- 第一层 -->
<item android:left="4dp" android:top="4dp">
<shape>
<solid android:color="#66000000"/>
<corners android:radius="30dip"/>
<!-- 描边 -->
<stroke android:width="1dp" android:color="#ffffffff"/>
</shape>
</item>
<!-- 第二层 -->
<item android:bottom="4dp" android:right="4dp">
<shape>
<solid android:color="#ff58bb52"/>
<corners android:radius="30dip"/>
<!-- 描边 -->
<stroke android:width="1dp" android:color="#ffffffff"/>
</shape>
</item>
</layer-list>
</item>
</selector>
第二种
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 点击之后 -->
<item android:state_pressed="true">
<layer-list>
<item android:left="4dp" android:top="4dp">
<shape>
<solid android:color="#ff58bb52"/>
<corners android:radius="3dp"/>
</shape>
</item>
</layer-list>
</item>
<!-- 正常状态 -->
<item>
<layer-list>
<!-- 第一层 -->
<item android:left="2dp" android:top="2dp">
<shape>
<solid android:color="#66000000"/>
<corners android:radius="3dp"/>
</shape>
</item>
<!-- 第二层 -->
<item android:bottom="4dp" android:right="4dp">
<shape>
<solid android:color="#ff58bb52"/>
<corners android:radius="3dp"/>
</shape>
</item>
<!-- 第三层 -->
<item android:bottom="6dp" android:right="6dp">
<shape>
<solid android:color="#ffcccccc"/>
<corners android:radius="3dp"/>
</shape>
</item>
</layer-list>
</item>
</selector>
设置后的效果图如下
参考技术A 为控件设置阴影效果,使用shape进行阴影效果绘制即可。 shape使用方法具体可自行百度。你的采纳是我前进的动力,
记得好评和采纳,答题不易,互相帮助,
手机提问的朋友在客户端右上角评价点(满意)即可.
如果你认可我的回答,请及时点击(采纳为满意回答)按钮!!本回答被提问者和网友采纳 参考技术B 看你是什么版本的Android设备,如果是5.0以上用elevation属性就行。如果是比较低的版本,就得用其它方法了
为选定的边缘 UIView 添加阴影
【中文标题】为选定的边缘 UIView 添加阴影【英文标题】:Add shadow to selected Edges UIView 【发布时间】:2018-09-12 14:30:09 【问题描述】:我需要创建带有阴影的 UIView,但我只需要右、左、下边缘的阴影 -> 上边缘没有阴影。有可能这样做吗?我尝试了不同的偏移量,但我没有达到我的目标。
【问题讨论】:
你的意思是你只希望阴影来自矩形的一个边缘吗?例如,阴影从底部出现,而不是从顶部或侧面出现? 您可能想使用CALayer
和.shadowPath
- 这是一篇不错的入门博文:nachbaur.com/2010/11/16/…(不是我的)
【参考方案1】:
这样的?
let yourView = UIView()
yourView.frame = CGRect(x: 50, y: 50, width: 100, height: 100)
yourView.backgroundColor = UIColor.blue // NEEDS A COLOR TO SHOW SHADOW
yourView.layer.shadowColor = UIColor.black.cgColor
yourView.layer.shadowOpacity = 1
yourView.layer.shadowOffset = CGSize.zero
yourView.layer.shadowRadius = 10
self.view.addSubview(yourView)
【讨论】:
【参考方案2】:在我个人看来,克服后一个问题的最佳方法是创建 UIView 的@IBDesignable 扩展并声明@IBInspectable 属性,如下所述
public extension UIView
// MARK: - Inspectables
/**
Defines the color of the shadow behind the view (defaults to nil).
*/
@IBInspectable public var shadowColor: UIColor?
set
if let color = newValue
self.layer.shadowColor = color.cgColor
else
self.layer.shadowColor = nil
get
if let color = layer.shadowColor
return UIColor(cgColor: color)
return nil
/**
Defines the radius of the shadow behind the view.
*/
@IBInspectable public var shadowRadius: CGFloat
set(newValue)
self.layer.shadowRadius = newValue
get
return self.layer.shadowRadius
/**
Defines the opacity of the shadow behind the view.
*/
@IBInspectable public var shadowOpacity: Float
set(newValue)
self.layer.shadowOpacity = newValue
get
return self.layer.shadowOpacity
/**
Defines the offset of the shadow behind the view.
*/
@IBInspectable public var shadowOffset: CGSize
set(newValue)
self.layer.shadowOffset = newValue
get
return self.layer.shadowOffset
之后,您将能够为情节提要中的每个 UIView(或从 UIView 继承的类)找到后面的参数。
但是,如果您以编程方式工作,则必须尝试使用 shadowOffset
属性,直到获得所需的视觉效果。
【讨论】:
以上是关于怎么为android控件边缘添加阴影的主要内容,如果未能解决你的问题,请参考以下文章