2016-09-28 91 views
1

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

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

回答

0

您可以使用画布来获得图像图标的边界,并且可以使用在画布上的路径创建您想要的颜色的轮廓,也可以使用一些图书馆像波纹管得到关于它如何工作的一些想法。

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

+0

感谢@Nitesh您的快速重播,我将检查约ShadowLayout库的细节。 – sreeramu