Search code examples
androidiconstouchglow

Android - How to make an icon glow on touch?


How to get this blue glow effect over an icon? Is there any quick way of doing it? I really don't want to use photoshop for this effect.

Any help would be really appreciated.


Solution

  • If you want to generate the glow programatically, here's how you can do. My advice, generate it just once at the beggining of your activity, then create a StateListDrawable using it, as said in the comment :

        // An added margin to the initial image
        int margin = 24;
        int halfMargin = margin / 2;
    
        // the glow radius
        int glowRadius = 16;
    
        // the glow color
        int glowColor = Color.rgb(0, 192, 255);
    
        // The original image to use
        Bitmap src = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);
    
        // extract the alpha from the source image
        Bitmap alpha = src.extractAlpha();
    
        // The output bitmap (with the icon + glow)
        Bitmap bmp = Bitmap.createBitmap(src.getWidth() + margin,
                src.getHeight() + margin, Bitmap.Config.ARGB_8888);
    
        // The canvas to paint on the image
        Canvas canvas = new Canvas(bmp);
    
        Paint paint = new Paint();
        paint.setColor(glowColor);
    
        // outer glow
        paint.setMaskFilter(new BlurMaskFilter(glowRadius, Blur.OUTER));
        canvas.drawBitmap(alpha, halfMargin, halfMargin, paint);
    
        // original icon
        canvas.drawBitmap(src, halfMargin, halfMargin, null);
    
        ((ImageView) findViewById(R.id.bmpImg)).setImageBitmap(bmp);