蓝桉云顶

Good Luck To You!

如何通过Android实现图片添加阴影效果的两种方法?

Android实现图片添加阴影效果的2种方法包括:1. 自定义drawable,使用layer-list定义两个图片;2. 自定义view,通过setShadowLayer绘制图片阴影。

在Android开发中,给图片添加阴影效果是一个常见的需求,通过合理的阴影效果,可以提升界面的美观度和用户体验,下面将详细介绍两种实现方法:自定义Drawable和使用自定义View。

自定义Drawable

定义layer-list文件

我们需要创建一个layer-list文件来定义阴影和背景图片,在这个文件中,我们使用两个item元素,分别表示阴影和背景图片,以下是show_view.xml的代码示例:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-阴影图片,android:left表示阴影图片左边到背景图片左边的距离,android:top表示阴影图片上边到背景图片上边的距离 -->
    <item android:left="5dp" android:top="5dp">
        <shape>
            <corners android:radius="25dp"/>
            <solid android:color="#60000000"/>
        </shape>
    </item>
    <!-背景图片,android:right表示阴影图片右边到背景图片右边的距离,android:bottom表示阴影图片下边到背景图片下边的距离 -->
    <item android:bottom="5dp" android:right="5dp">
        <shape>
            <corners android:radius="25dp"/>
            <solid android:color="#000000"/>
        </shape>
    </item>
</layer-list>

在布局文件中使用

我们在main.xml中定义一个TextView作为待显示控件,并将show_view.xml设为这个TextView的背景,以下是main.xml的代码示例:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.example.liusiyutaloner.frescotest.MainActivity">
    <TextView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:background="@drawable/show_view"/>
</RelativeLayout>

运行效果

运行程序后,我们可以看到添加了阴影效果的TextView,这种阴影效果是实边的,没有虚化效果,可能会影响用户体验。

自定义View

为了实现更真实的阴影效果,我们可以自定义一个View,通过setShadowLayer绘制图片阴影,以下是CustomShadowView类的代码示例:

package com.example.liusiyutaloner.frescotest;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
public class CustomShadowView extends View {
    private Paint mPaint;
    public CustomShadowView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mPaint = new Paint();
        mPaint.setColor(Color.BLACK);
        this.setLayerType(View.LAYER_TYPE_SOFTWARE, null); // 关闭硬件加速
    }
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // 绘制阴影,param1:模糊半径;param2:x轴大小;param3:y轴大小;param4:阴影颜色
        mPaint.setShadowLayer(10F, 15F, 15F, Color.GRAY);
        RectF rect = new RectF(0, 0, 200, 200);
        canvas.drawRoundRect(rect, (float)75, (float)75, mPaint);
    }
}

在布局文件中使用

将CustomShadowView类加到main.xml中,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    tools:context="com.example.liusiyutaloner.frescotest.MainActivity">
    <com.example.liusiyutaloner.frescotest.CustomShadowView
        android:layout_gravity="center"
        android:layout_width="125dp"
        android:layout_height="125dp" />
</RelativeLayout>

运行效果

运行程序后,我们可以看到CustomShadowView绘制出的阴影具有虚化效果,多了立体感和层次感,因此更推荐使用这种方法。

通过自定义Drawable和自定义View这两种方法,都可以实现Android中图片添加阴影的效果,自定义Drawable的方法简单直接,但阴影效果不够真实;而自定义View的方法虽然稍复杂,但可以实现更逼真的阴影效果,开发者可以根据具体需求选择合适的方法来实现阴影效果。

以上就是关于“Android实现图片添加阴影效果的2种方法”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年11月    »
123
45678910
11121314151617
18192021222324
252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接