在ImageView中添加发光/阴影

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ImageView中添加发光/阴影相关的知识,希望对你有一定的参考价值。

What I am trying to achieve:

enter image description here

What I am able to achieve:

enter image description here

码:

<de.hdodenhof.circleimageview.CircleImageView
        android:padding="5dp"
        android:background="@drawable/sub_cat_background"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:id="@+id/tab_image"
        android:src="@drawable/mehendi_tab"
        android:layout_gravity="center_horizontal"/>

sub_cat_background.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:innerRadius="0dp"
       android:shape="ring"
       android:thicknessRatio="2"
       android:useLevel="false" >
    <solid android:color="@android:color/transparent" />

    <stroke
        android:width="5dp"
        android:color="@color/white" />
</shape>

这是群众之王建议后我能得到的:

现在如何将灰色环更改为阴影效果,如上图enter image description here所示

编辑4:

我也试过画布的方式。

为此,我没有用xml设置白色环,而是使用带有白色圆圈的图像,如上图所示(图2)。

 Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.salon_selected);

            int imageMaxSize = Math.max(bitmap.getWidth(), bitmap.getHeight());


            RadialGradient gradient = new RadialGradient(imageMaxSize / 2, imageMaxSize / 2, imageMaxSize / 2,
                    new int[] {0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF},
                    new float[] {0.0f, 0.8f, 1.0f},
                    android.graphics.Shader.TileMode.CLAMP);
            Paint paint = new Paint();
            paint.setShader(gradient);


            Canvas canvas=new Canvas();
// in onDraw(Canvas)
            canvas.drawBitmap(bitmap, 0.0f, 0.0f, paint);

            tabImage.setImageBitmap(bitmap);

但我没有得到任何影响,Code source(How to achieve feathering effect in Android?

答案

在android studio中,可以使用构建drawable来将阴影应用于任何View。这类似于投影。

android:background="@drawable/abc_menu_dropdown_panel_holo_light"

使用此功能,您无法更改视图的背景颜色及其边框颜色。如果您想要自己的自定义drawable,请使用layer-list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--the shadow comes from here-->
    <item
        android:bottom="0dp"
        android:drawable="@android:drawable/dialog_holo_light_frame"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp">

    </item>

    <item
        android:bottom="2dp"
        android:left="2dp"
        android:right="2dp"
        android:top="2dp">
        <!--whatever you want in the background, here i preferred solid white -->
        <shape android:shape="rectangle">
            <solid android:color="@android:color/white" />

        </shape>
    </item>
</layer-list>

并适用于您的观点,如下所示

android:background="@drawable/custom_drop_shadow_drawable"

如果这不起作用,你可以尝试使用ShadowImageView这样的东西

另一答案

通过使用这些属性,您可以获得发光和阴影效果

android:shadowColor
android:shadowDx
android:shadowDy
android:shadowRadius

您是否需要以编程方式实现相同的效果。 Android提供以下与影子相关的API。

public void setShadowLayer (float radius, float dx, float dy, int color)

所以,我尝试了一些不同的字体,阴影设置,颜色和透明度设置。

这是一个结果image

您也可以使用任何视图执行此操作,即imageview,按钮,textview等。

source code for reference

以上是关于在ImageView中添加发光/阴影的主要内容,如果未能解决你的问题,请参考以下文章

这种 ANDROID边界效果怎么做的.发光或者叫阴影

使用内部阴影的 UILabel 中的发光效果

如何在 PHP 的 GD 库中为文本添加发光或阴影? [关闭]

如何为小部件边框/阴影添加霓虹发光效果?

iOS 中 ImageView 的阴影效果

自定义控件三部曲之绘图篇(十六)——给控件添加阴影效果与发光效果