How to changes the brush width

18 Views Asked by At

I'm trying to change the width of my brush by using the setStrokeWidth command. But when I use this command it's changing all the drawings I have done before I used it to the width I choose in another screen. Can any one help me?

the screen of the main page:

package com.example.drawapp;

import static com.example.drawapp.display.colorList;
import static com.example.drawapp.display.current_brush;
import static com.example.drawapp.display.pathList;


import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

import java.util.ArrayList;

public class Draw_Page extends AppCompatActivity {

    public static Path path = new Path();
    public static Paint paint_brush = new Paint();



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_draw_page2);


    }

    public void ClearButton(View view) {
        pathList.clear();
        colorList.clear();
        path.reset();

    }

    public void currentColor(int c){
        current_brush =c;
        path = new Path();
    }

    public void SetPaintBrush(int size){


        paint_brush.setStrokeWidth(size);
    }

    public void SettingsButton(View view) {
        Log.d("btnSettings", "1");//SettingsButton Clickd
        Intent myintent = new Intent(this,Settings.class);

        startActivity(myintent);
    }

    public void ShareButton(View view) {
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("text/plain");
        String shareBody = "Here is the share content body";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        startActivity(Intent.createChooser(sharingIntent, "Share via"));
    }
}

the screen with the canvas:

package com.example.drawapp;

import static com.example.drawapp.Draw_Page.paint_brush;
import static com.example.drawapp.Draw_Page.path;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import java.util.ArrayList;

public class display extends View {

    public static ArrayList<Path> pathList = new ArrayList<>();
    public static ArrayList<Integer> colorList = new ArrayList<>();
    public ViewGroup.LayoutParams params;
    public static int current_brush = Color.BLACK;

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

    public display(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public display(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context){
        Log.d("resetSize","resetsize");
        paint_brush.setAntiAlias(true);
        paint_brush.setColor(Color.BLACK);
        paint_brush.setStyle(Paint.Style.STROKE);
        paint_brush.setStrokeCap(Paint.Cap.ROUND);
        paint_brush.setStrokeJoin(Paint.Join.ROUND);
        //paint_brush.setStrokeWidth(30f);

        params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        float x = event.getX();
        float y = event.getY();

        switch (event.getAction()){
            case MotionEvent.ACTION_DOWN:
                path.moveTo(x,y);
                invalidate();
                return true;
            case MotionEvent.ACTION_MOVE:
                path.lineTo(x,y);
                pathList.add(path);
                colorList.add(current_brush);
                invalidate();
                return true;
            default:
                return false;
        }
    }

    @Override
    protected void onDraw(Canvas canvas) {
        for (int i=0; i<pathList.size();i++){
            paint_brush.setColor(colorList.get(i));
            canvas.drawPath(pathList.get(i),paint_brush);
            invalidate();
        }
    }
}

and the screen where I am choosing the width:

package com.example.drawapp;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.text.style.BackgroundColorSpan;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;

public class Settings extends AppCompatActivity {

    public Draw_Page dp;
    public Spinner spinnerSizes;
    public Color bg;
    public int text;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);



        spinnerSizes = findViewById(R.id.spinnerSizeBrush);

        String[] brushSizes = getResources().getStringArray(R.array.brush_Size);
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, brushSizes);

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);


        spinnerSizes.setAdapter(adapter);




    }


    public void btnSave(View view) {

        Log.d("number","Save button");
        Intent intent = new Intent(this,Draw_Page.class);
        dp = new Draw_Page();
        dp.SetPaintBrush(Integer.parseInt(spinnerSizes.getSelectedItem().toString()));
        startActivity(intent);
    }

    public void btnCancel(View view) {
        Log.d("number","Cancel button");
        Intent intent = new Intent(this,Draw_Page.class);
        startActivity(intent);

    }
}
0

There are 0 best solutions below