public CaretDrawable(Context context, @ColorInt int caretColor) { paint.setColor(caretColor); paint.setFlags(Paint.ANTI_ALIAS_FLAG); mWidth = (int) dpToPx(context, CARET_WIDTH_DP); mHeight = (int) dpToPx(context, CARET_HEIGHT_DP); }
@Override protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0, 0, paint); bitmap = FastBlur.blur(bitmap, radius, true); return bitmap; }
/** * 给 {@link View} 设置高斯模糊背景图片 * * @param context * @param bkg * @param view */ public static void blur(Context context, Bitmap bkg, View view) { long startMs = System.currentTimeMillis(); float radius = 15; float scaleFactor = 8; //放大到整个view的大小 bkg = DrawableProvider.getReSizeBitmap(bkg, view.getMeasuredWidth(), view.getMeasuredHeight()); Bitmap overlay = Bitmap.createBitmap((int) (view.getMeasuredWidth() / scaleFactor) , (int) (view.getMeasuredHeight() / scaleFactor), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlay); canvas.translate(-view.getLeft() / scaleFactor, -view.getTop() / scaleFactor); canvas.scale(1 / scaleFactor, 1 / scaleFactor); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(bkg, 0, 0, paint); overlay = FastBlur.doBlur(overlay, (int) radius, true); view.setBackgroundDrawable(new BitmapDrawable(context.getResources(), overlay)); Log.w("test", "cost " + (System.currentTimeMillis() - startMs) + "ms"); }
/** * 将 {@link Bitmap} 高斯模糊并返回 * * @param bkg * @param width * @param height * @return */ public static Bitmap blurBitmap(Bitmap bkg, int width, int height) { long startMs = System.currentTimeMillis(); float radius = 15;//越大模糊效果越大 float scaleFactor = 8; //放大到整个view的大小 bkg = DrawableProvider.getReSizeBitmap(bkg, width, height); Bitmap overlay = Bitmap.createBitmap((int) (width / scaleFactor) , (int) (height / scaleFactor), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlay); canvas.scale(1 / scaleFactor, 1 / scaleFactor); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(bkg, 0, 0, paint); overlay = FastBlur.doBlur(overlay, (int) radius, true); Log.w("test", "cost " + (System.currentTimeMillis() - startMs) + "ms"); return overlay; } }
public MaskView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); setWillNotDraw(false); Point size = new Point(); size.x = getResources().getDisplayMetrics().widthPixels; size.y = getResources().getDisplayMetrics().heightPixels; mEraserBitmap = Bitmap.createBitmap(size.x, size.y, Bitmap.Config.ARGB_8888); mEraserCanvas = new Canvas(mEraserBitmap); mPaint = new Paint(); mPaint.setColor(0xcc000000); transparentPaint = new Paint(); transparentPaint.setColor(getResources().getColor(android.R.color.transparent)); transparentPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); mEraser = new Paint(); mEraser.setColor(0xFFFFFFFF); mEraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); mEraser.setFlags(Paint.ANTI_ALIAS_FLAG); }
@Override protected synchronized void onDraw(Canvas canvas) { super.onDraw(canvas); int halfWidth = getWidth() / 2; int halfHeight = getHeight() /2; int radius = halfWidth < halfHeight ? halfWidth : halfHeight; float halfStrokeWidth = mStrokeWidth / 2; // 设置画笔 mPaint.setColor(mBackgroundColor); mPaint.setDither(true); mPaint.setFlags(Paint.ANTI_ALIAS_FLAG); mPaint.setAntiAlias(true); mPaint.setStrokeWidth(mStrokeWidth); mPaint.setStyle(Paint.Style.STROKE); //设置图形为空心 // 画背景 canvas.drawCircle(halfWidth, halfHeight, radius - halfStrokeWidth, mPaint); // 画当前进度的圆环 mPaint.setColor(mPrimaryColor); // 改变画笔颜色 mRectF.top = halfHeight - radius + halfStrokeWidth; mRectF.bottom = halfHeight + radius - halfStrokeWidth; mRectF.left = halfWidth - radius + halfStrokeWidth; mRectF.right = halfWidth + radius - halfStrokeWidth; canvas.drawArc(mRectF, -90, getRateOfProgress() * 360, false, mPaint); canvas.save(); }
@Override protected Bitmap transform(@NonNull Context context, @NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0, 0, paint); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { try { bitmap = SupportRSBlur.blur(context, bitmap, radius); } catch (NoClassDefFoundError e) { bitmap = RSBlur.blur(context, bitmap, radius); } catch (RuntimeException e) { bitmap = FastBlur.blur(bitmap, radius, true); } } else { bitmap = FastBlur.blur(bitmap, radius, true); } return bitmap; }
Rect canvasBounds = new Rect(); TextPaint badgeTextPaint = new TextPaint(); badgePaint.setFlags(Paint.ANTI_ALIAS_FLAG); badgeTextPaint.setFlags(Paint.ANTI_ALIAS_FLAG); badgeTextPaint.setTextAlign(Paint.Align.CENTER);
canvas.scale(1 / (float) factor.sampling, 1 / (float) factor.sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG); PorterDuffColorFilter filter = new PorterDuffColorFilter(factor.color, PorterDuff.Mode.SRC_ATOP);
eraser.setColor(0xFFFFFFFF); eraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); eraser.setFlags(Paint.ANTI_ALIAS_FLAG);
@Test public void testCtorWithPaint() { Paint paint = new Paint(); paint.setColor(Color.RED); paint.setAlpha(72); paint.setFlags(2345); Paint other = new Paint(paint); assertThat(other.getColor()).isEqualTo(Color.RED); assertThat(other.getAlpha()).isEqualTo(72); assertThat(other.getFlags()).isEqualTo(2345); }
paint.setFlags(Paint.FILTER_BITMAP_FLAG | Paint.ANTI_ALIAS_FLAG); PorterDuffColorFilter filter = new PorterDuffColorFilter(mColor, PorterDuff.Mode.SRC_ATOP);
void initCropView(Context context, AttributeSet attrs) { config = CropViewConfig.from(context, attrs); touchManager = new TouchManager(this, config); bitmapPaint.setFilterBitmap(true); setViewportOverlayColor(config.getViewportOverlayColor()); shape = config.shape(); // We need anti-aliased Paint to smooth the curved edges viewportPaint.setFlags(viewportPaint.getFlags() | Paint.ANTI_ALIAS_FLAG); }
@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR1) @Override protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) { int width = toTransform.getWidth(); int height = toTransform.getHeight(); int scaledWidth = width / sampling; int scaledHeight = height / sampling; Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); canvas.scale(1 / (float) sampling, 1 / (float) sampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(toTransform, 0, 0, paint); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { bitmap = BlurUtils.rsBlur(context, bitmap, radius); } else { bitmap = BlurUtils.blur(bitmap, radius); } return bitmap; }
private void init(Context context) { setWillNotDraw(false); setVisibility(INVISIBLE); lineStroke = Utils.dpToPx(4); isReady = false; isRevealAnimationEnabled = true; dismissOnTouch = false; isPerformClick = false; enableDismissAfterShown = false; dismissOnBackPress = false; handler = new Handler(); preferencesManager = new PreferencesManager(context); eraser = new Paint(); eraser.setColor(0xFFFFFFFF); eraser.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); eraser.setFlags(Paint.ANTI_ALIAS_FLAG); }
@Override public Resource<Bitmap> transform(Resource<Bitmap> resource, int outWidth, int outHeight) { Bitmap source = resource.get(); int width = source.getWidth(); int height = source.getHeight(); int scaledWidth = width / mSampling; int scaledHeight = height / mSampling; Bitmap bitmap = mBitmapPool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); if (bitmap == null) { bitmap = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888); } Canvas canvas = new Canvas(bitmap); canvas.scale(1 / (float) mSampling, 1 / (float) mSampling); Paint paint = new Paint(); paint.setFlags(Paint.FILTER_BITMAP_FLAG); canvas.drawBitmap(source, 0, 0, paint); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { try { bitmap = RSBlur.blur(mContext, bitmap, mRadius); } catch (RSRuntimeException e) { bitmap = FastBlur.blur(bitmap, mRadius, true); } } else { bitmap = FastBlur.blur(bitmap, mRadius, true); } return BitmapResource.obtain(bitmap, mBitmapPool); }
public Handle(Context c, int m) { super(c); mode = m; p.setFlags(Paint.ANTI_ALIAS_FLAG); }
public AmPmSwitch(Context c) { super(c); Typeface t = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf"); mPaint = new Paint(); mPaint.setFlags(Paint.ANTI_ALIAS_FLAG); mPaint.setTextAlign(Paint.Align.LEFT); mPaint.setStrokeWidth(4); mPaint.setTypeface(t); setBackgroundDrawable(null); }
private void initialize() { setDrawing(false); setDrawData(0, 0, 0); this.paint = new Paint(); paint.setFlags(Paint.ANTI_ALIAS_FLAG); paint.setStyle(Paint.Style.FILL); paint.setColor(Color.TRANSPARENT); }