繁体   English   中英

自定义阴影 imageView

[英]Drop shadow for custom imageView

我创建了一个简单的播放图标。 我将 SVG 文件导入到 Android Studio 并将其作为 imageView 获取。但是,不幸的是,我无法从我的 Adope XD 文档中提取下拉阴影。 无论哪种情况,我都试图通过代码复制下拉阴影效果。 但是我一直没有成功。

左图是我有的,右图是我需要的: 在此处输入图像描述

我一直在摆弄现有代码但没有成功。 这是我到目前为止所拥有的:

imageView:

 <ImageView android:id="@+id/thumbnail_next" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:background="@drawable/background_drop_shadow" app:srcCompat="@drawable/ic_next_button_image_select" />

ic_next_button_image_select(导入的 SVG):

 <vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="40dp" android:height="38dp" android:viewportWidth="40" android:viewportHeight="38"> <path android:pathData="M12,0L28,0A12,12 0,0 1,40 12L40,26A12,12 0,0 1,28 38L12,38A12,12 0,0 1,0 26L0,12A12,12 0,0 1,12 0z" android:fillColor="#1ed760"/> <path android:pathData="M27.6,17.28a2,2 0,0 1,-0 3.439l-10.083,5.987A2,2 0,0 1,14.5 24.987L14.5,13.013a2,2 0,0 1,3.021 -1.72Z" android:fillColor="#090909"/> </vector>

background_drop_shadow(我找到并尝试使用的代码):

 <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <:-- Drop Shadow Stack --> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#02000000" android:width="1dp" /> <corners android:radius="8dp" /> </shape> </item> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#05000000" android:width="1dp" /> <corners android:radius="7dp" /> </shape> </item> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#10000000" android:width="1dp" /> <corners android:radius="6dp" /> </shape> </item> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#15000000" android:width="1dp" /> <corners android:radius="5dp" /> </shape> </item> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#20000000" android:width="1dp" /> <corners android:radius="4dp" /> </shape> </item> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#25000000" android:width="1dp" /> <corners android:radius="3dp" /> </shape> </item> <item> <shape> <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" /> <stroke android:color="#30000000" android:width="1dp" /> <corners android:radius="3dp" /> </shape> </item> <:-- Background --> <item> <shape> <solid android:color="@android:color/transparent" /> <corners android:radius="3dp" /> </shape> </item> </layer-list>

为此,您应该使用 CardView。 所以它会是这样的:

<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#687199"
    >

    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        app:cardBackgroundColor="@android:color/transparent"
        app:cardCornerRadius="40dp"
        app:cardElevation="16dp"
        >

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/test"
            />
    </androidx.cardview.widget.CardView>

</FrameLayout>

例子

您只需要尝试使用app:cardElevationapp:cardCornerRadius即可获得所需的阴影。

另外,请记住,当物体靠近屏幕底部时,Android 阴影系统会绘制更暗和更长的阴影。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM