android view设置阴影
android
为网友解答android的IT小经验,继续往下看吧!
从Android 5.0(API级别21)开始,View提供了一个名为“elevation”的属性,用于设置阴影的大小。这个属性可以通过XML或代码来设置。
注意,阴影的大小与View的Z值(elevation)和translationZ属性有关。
Z值由elevation和translationZ共同决定,通常elevation用于静态阴影,而translationZ用于动画。

xml设置:
<View
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:elevation="10dp" />
代码设置:
view.setElevation(20);
//或
view.setTranslationZ(20);
在Material Design 设计规范中,存在两个光源,一个是点光源, 一个是环境光,两种光源共同作用,形成View的阴影效果。默认情况下,阴影是黑色的,然而很多时候我们想让阴影颜色与 View 本身的颜色一致,达到更好地视觉效果。Android贴心地考虑到这一点,为我们提供了API:setOutlineAmbientShadowColor和setOutlineSpotShadowColor。开发者可以通过 xml 或 代码改变阴影的颜色。
「setOutlineAmbientShadowColor」
- 当view 的Z 值或者 elevation 值为正数时,设置环境阴影颜色
- 默认阴影是黑色、不透明的,因此阴影的强度在不同颜色的不同视图之间是一致的
- 最终环境阴影的不透明度是(阴影投射器高度、outlineAmbientShadowColor的alpha通道(通常为不透明)和R.attr.ambientShadowAlpha 主题属性)的函数
xml设置:
android:outlineAmbientShadowColor="#FFAAAA"
代码设置:
view.setOutlineAmbientShadowColor(mContext.getResources().getColor(R.color.ambient_shadow_color));
「setOutlineSpotShadowColor」
- 当view 的Z 值或者 elevation 值为正数时,设置点阴影颜色
- 默认阴影是黑色、不透明的,因此阴影的强度在不同颜色的不同视图之间是一致的
- 最终点阴影的不透明度是(阴影投射器高度、outlineAmbientShadowColor的alpha通道(通常为不透明)和R.attr.ambientShadowAlpha 主题属性)的函数
xml设置:
android:outlineSpotShadowColor="#BAFDCE"
代码设置:
view.setOutlineSpotShadowColor(mContext.getResources().getColor(R.color.spot_shadow_color));
设置阴影的其他方案:
- 使用自定义视图和draw方法:如果你想创建更复杂的阴影效果,可以通过扩展View类并重写onDraw方法来实现。在这个方法中,你可以使用Canvas的drawRect、drawPath等方法来绘制阴影。
public class ShadowView extends View {
private Paint paint;
private int shadowColor = Color.BLACK;
private float shadowRadius = 2f;
private float shadowOffset = -1f;
private float shadowOpacity = 0.9f;
public ShadowView(Context context) {
super(context);
init();
}
private void init() {
paint = new Paint();
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(shadowColor);
canvas.drawRect(getPaddingLeft(), getHeight() - shadowOffset, getWidth() - getPaddingRight(), getHeight(), paint);
}
}
相关阅读
-
小米11ultra重量 小米11ultra机身厚度多少
一篇关于小米11ultra机身厚度多少的相关经验,小米11ultra机身厚度为8.38mm,长度为164.3mm,宽度为74.6mm,三颗主摄的塞入以及陶瓷机身的缘故,手机重量达234克。
-
苹果手机怎么设置电话打不进来但可以上网 苹果手机怎样设置电话打
为大家介绍的是苹果手机怎么设置电话打不进来但可以上网的IT知识,苹果手机设置电话打不进来但可以上网共需三个步骤,将勿扰模式开启即可。具体操作步骤如下:
-
华为mate50戴口罩可以解锁 华为mate50口罩解锁怎么设置
文章摘要:华为mate50口罩解锁怎么设置的电脑方面的小经验,华为mate50不支持口罩解锁。只有华为Mate 50 Pro和保时捷版本的3D深感摄像头才可精准识别更为精细丰富的面部特征,实现戴口罩解锁
-
荣耀x20se怎么拦截骚扰电话 手机设置了骚扰拦截怎么还有电话
今天分享:荣耀x20se怎么拦截骚扰电话方面的介绍,荣耀x20se拦截骚扰电话需要进入骚扰拦截、选择拦截规则中的电话拦截规则,开启拦截即可。具体方法如下:


