Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

NeumorphismView in Android

NeumorphismView in Android


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class NeumorphismView extends View {

    private Paint mPaint;
    private RectF mRectF;
    private int mRadius = 60;
    private int mShadowSize = 20;
    private int mBackgroundColor = 0xffe0e0e0;
    private int mShadowColor = 0xffa0a0a0;
    private int mHighlightColor = 0xffffffff;

    public NeumorphismView(Context context) {
        super(context);
        init();
    }

    public NeumorphismView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public NeumorphismView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }

    private void init() {
        mPaint = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setStyle(Paint.Style.FILL);
        mRectF = new RectF();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int centerX = getWidth() / 2;
        int centerY = getHeight() / 2;

        // Draw background
        mPaint.setColor(mBackgroundColor);
        mRectF.set(centerX - mRadius, centerY - mRadius, centerX + mRadius, centerY + mRadius);
        canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint);

        // Draw shadow
        mPaint.setColor(mShadowColor);
        mRectF.set(centerX - mRadius + mShadowSize, centerY - mRadius + mShadowSize,
                centerX + mRadius + mShadowSize, centerY + mRadius + mShadowSize);
        canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint);

        // Draw highlight
        mPaint.setColor(mHighlightColor);
        mRectF.set(centerX - mRadius - mShadowSize, centerY - mRadius - mShadowSize,
                centerX + mRadius - mShadowSize, centerY + mRadius - mShadowSize);
        canvas.drawRoundRect(mRectF, mRadius, mRadius, mPaint);
    }

    public void setBackgroundColor(int color) {
        mBackgroundColor = color;
        invalidate();
    }

    public void setShadowColor(int color) {
        mShadowColor = color;
        invalidate();
    }

    public void setHighlightColor(int color) {
        mHighlightColor = color;
        invalidate();
    }

}

        

Post a Comment