如何在android中创建图标阴影

时间:2016-09-28 13:05:54

标签: android android-layout android-drawable

出于学习目的,我想知道当我们在网格上拖动应用程序图标时,如何在nova启动器中创建阴影图像,我在谷歌搜索了一整天,但我找不到任何建议,所以,如果你们知道如何绘制它会更有帮助。

shadow example 1 shadow example 2

提前致谢。

编辑: 在做了位学习后,能够用下面的代码实现。

public static Bitmap getShadowBitmap(Bitmap src) {
    Bitmap bmOut = Bitmap.createBitmap(src.getWidth(),
            src.getHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bmOut);
    canvas.drawColor(0, PorterDuff.Mode.CLEAR);

    Paint ptBlur = new Paint();
    ptBlur.setMaskFilter(new BlurMaskFilter(5, BlurMaskFilter.Blur.NORMAL));
    int[] offsetXY = new int[2];
    Bitmap bmAlpha = src.extractAlpha(ptBlur, offsetXY);
    Paint ptAlphaColor = new Paint();
    ptAlphaColor.setColor(Color.WHITE);
    canvas.drawBitmap(bmAlpha, offsetXY[0], offsetXY[1], ptAlphaColor);
    bmAlpha.recycle();

    Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
    paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT));
    paint.setColor(Color.TRANSPARENT);

    paint.setAlpha(0);

    canvas.drawBitmap(src, 0, 0, paint);

    return bmOut;
}

结果: enter image description here

1 个答案:

答案 0 :(得分:0)

您可以使用画布来获取图像图标的边界,并可以使用画布上的路径创建所需颜色的轮廓,或者您可以使用像bellow这样的库来了解它是如何工作的。

https://github.com/DevLight-Mobile-Agency/ShadowLayout