2016-11-29 47 views

回答

1

使用此answer我創建了一個utils的類的代碼。

public class GlowEffectUtils { 

    @NonNull 
    public static Drawable createSelector(@NonNull Resources resources, @NonNull View view) { 
     Bitmap glow = createGlow(view); 

     StateListDrawable selector = new StateListDrawable(); 
     BitmapDrawable glowDrawable = new BitmapDrawable(resources, glow); 
     selector.addState(new int[]{android.R.attr.state_focused}, glowDrawable); 

     return selector; 
    } 

    @NonNull 
    private static Bitmap createGlow(@NonNull View view) { 
     int glowRadius = 15; 

     int glowColor = Color.rgb(255, 255, 255); 

     Bitmap src = createBitmap(view); 
     Bitmap alpha = src.extractAlpha(); 

     Bitmap bmp = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888); 

     Canvas canvas = new Canvas(bmp); 

     Paint paint = new Paint(); 
     paint.setColor(glowColor); 

     paint.setMaskFilter(new BlurMaskFilter(glowRadius, BlurMaskFilter.Blur.OUTER)); 
     canvas.drawBitmap(alpha, 0, 0, paint); 
     return bmp; 
    } 

    @NonNull 
    private static Bitmap createBitmap(View v) { 
     Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888); 
     Canvas c = new Canvas(b); 
     v.draw(c); 
     return b; 
    } 
} 

,並將其設置是這樣的:

Resources resources = itemView.getContext().getResources(); 
Drawable selector = GlowEffectUtils.createSelector(resources, itemView); 
itemView.setBackground(selector); 
相關問題