Bitmap with tile mode repeat and round corners

后端 未结 2 654
無奈伤痛
無奈伤痛 2021-01-24 04:51

I have a bitmap with rounded corners method:

Code:

 public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, int pixels) {
        Bitmap output = Bitm         


        
2条回答
  •  日久生厌
    2021-01-24 05:41

    Finally i have solved it !!!

    class CurvedAndTiled extends Drawable {
    
        private final float mCornerRadius;
        private final RectF mRect = new RectF();
        private final BitmapShader mBitmapShader;
        private final Paint mTilePaint;        
    
        CurvedAndTiled(
                Bitmap bitmap, 
                float cornerRadius) {
            mCornerRadius = cornerRadius;
    
            mBitmapShader = new BitmapShader(bitmap,
                    Shader.TileMode.REPEAT, Shader.TileMode.REPEAT);
    
            mTilePaint = new Paint();
            mTilePaint.setAntiAlias(true);
            mTilePaint.setShader(mBitmapShader);             
        }
    
        @Override
        protected void onBoundsChange(Rect bounds) {
            super.onBoundsChange(bounds);
            mRect.set(0, 0, bounds.width(), bounds.height());
        }
    
        @Override
        public void draw(Canvas canvas) {
            canvas.drawRoundRect(mRect, mCornerRadius, mCornerRadius, mTilePaint);           
        }
    
        @Override
        public int getOpacity() {
            return PixelFormat.TRANSLUCENT;
        }
    
        @Override
        public void setAlpha(int alpha) {
            mTilePaint.setAlpha(alpha);
        }
    
        @Override
        public void setColorFilter(ColorFilter cf) {
            mTilePaint.setColorFilter(cf);
        }       
    }
    

    apply this too your image view.

    backgroundImage.setBackgroundDrawable(new CurvedAndTiled(((BitmapDrawable) drawable).getBitmap(), 45));
    

    Hope it will help someone in future.

    Happy Coding :)

提交回复
热议问题