相关疑难解决方法(0)

Android在视图上投下阴影

我已经做了一些广泛的代码示例搜索,但找不到任何东西.

特别是,我希望为我在ImageView中使用的png drawable添加阴影.这个png drawable是一个带有透明角的圆角矩形.

有人可以提供一个代码示例,说明如何在代码或XML中为视图添加一个不错的投影?

xml android shadow dropshadow imageview

33
推荐指数
4
解决办法
7万
查看次数

如何防止Android的drawBitmap只绘制黑色图像?

根据原始问题,最终结果是圆形矩形png,ImageView具有自然的下垂阴影.

我有阴影工作,但当它绘制时,它会使整个图像变黑.

替代文字

添加阴影时,如何防止原始图像(绝对不是黑色)变黑?

    BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
    Paint shadowPaint = new Paint();
    shadowPaint.setMaskFilter(blurFilter);

    int[] offsetXY = new int[2];
    Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
    Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);

    Canvas c = new Canvas(shadowImage);
    c.drawBitmap(originalBitmap, -offsetXY[0], -offsetXY[1], null);

    imageView.setImageBitmap(shadowImage);
Run Code Online (Sandbox Code Playgroud)





更新:

我实现了Josh关于复制到正确色彩空间的建议,现在它的效果非常好!对于未来的搜索者,此代码会在图像视图上生成阴影.您可以使用x和y,以及OUTER常量来获得所需的效果.

BlurMaskFilter blurFilter = new BlurMaskFilter(2, BlurMaskFilter.Blur.OUTER);
Paint shadowPaint = new Paint();
shadowPaint.setMaskFilter(blurFilter);

int[] offsetXY = new int[2];
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.pier_t);
Bitmap shadowImage = originalBitmap.extractAlpha(shadowPaint, offsetXY);
Bitmap shadowImage32 = …
Run Code Online (Sandbox Code Playgroud)

android paint blur shadow drawbitmap

19
推荐指数
1
解决办法
1万
查看次数

Android按钮的背景为阴影形状

我从形状中制作了一个按钮背景,看起来非常适合我的目的.唯一需要的是为它投下一点阴影.这是代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="#343434" />

            <stroke android:width="1dp" android:color="#171717" />

            <corners android:radius="3dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" />

            <stroke android:width="1dp" android:color="#BABABA" />

            <corners android:radius="4dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
   </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

这就是我想要实现的目标

在此输入图像描述

我该如何掉落阴影?我的猜测是我需要制作另一个形状但是带有黑色/灰色背景并设置某种形式的左边缘填充以使其看起来像阴影.但我不知道该怎么做......而且文档对我没有多大帮助.

稍后编辑:我想在xml文件中添加阴影而不是代码.谢谢.

android shape button android-layout

7
推荐指数
2
解决办法
4万
查看次数

如何为按钮添加模糊的阴影?

我需要在我的按钮上添加模糊的阴影:

在此输入图像描述

我尝试使用layer-list xml drawable创建背景,但它看起来不像模糊.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Drop Shadow Stack -->
    <item>
        <shape>
            <corners android:radius="45dp" />
            <padding
                android:bottom="2dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <stroke
                android:width="6dp"
                android:color="#007879E8" />

        </shape>
    </item>
    //////   10 more items
        <item>
        <shape>
            <corners android:radius="45dp" />
            <padding
                android:bottom="2dp"
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <stroke
                android:width="6dp"
                android:color="#177879E8" />


        </shape>
    </item>

    <!-- Background -->
    <item>
        <shape>
            <corners android:radius="45dp" />
            <stroke
                android:width="2dp"
                android:color="@color/main_purple_text_color" />
        </shape>
    </item>

</layer-list>
Run Code Online (Sandbox Code Playgroud)

此外,我试图使用背景元素隐藏按钮与blured png但它使用了很多资源,我不能创建选择器来改变悬停或点击背景.

我需要为按钮设置单个背景文件,并使用选择器在悬停/单击时更改模糊和渐变.有任何想法如何用Android SDK实现这样的效果?

更新1

谢谢大家的答案,但我不是在问如何创建渐变.我已经这样做了.我需要创建模糊的阴影.

android gradient blur dropshadow

6
推荐指数
2
解决办法
2万
查看次数

如何创建具有透明背景和阴影的形状,但阴影不应在形状轮廓后面可见?

这里有点类似的问题,但答案是只删除高程和阴影......不是我想要的:Android CardView with unique border when transparent

我想要的是 Pixel Launcher 搜索栏中显示的内容...即具有半透明背景和阴影的形状,但阴影与白色形状不重叠(最终会使其看起来灰色) . 我基本上想要一个阴影,但中间有一个洞,我的形状是......

这就是我想要实现的(底部的搜索栏): 我想要的是

这是我尝试过的,但您可以从附图中看到,灰色阴影是从半透明的白色背景中穿过的。

活动_main.xml

    <FrameLayout
      android:layout_width="120dp"
      android:layout_height="120dp"
      android:background="@drawable/rectangle"
      android:elevation="8dp" />
Run Code Online (Sandbox Code Playgroud)

矩形文件

<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <corners android:radius="4dp" />
  <solid android:color="#aaffffff" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这就是我的尝试: 我失败的尝试

你可以看到,即使我的形状是白色背景上的半透明白色,它也会因为下面的阴影而变成灰色,这不是我想要的。

我也尝试过使用 View#setOutlineProvider 但没有成功。

我也试过玩https://github.com/harjot-oberai/MaterialShadows

如果可以避免的话,我不想用 9patch 图像来做。

android transparent shadow

5
推荐指数
1
解决办法
989
查看次数