안드로이드 그림판 구현중 선 굵기를 크게하면 끊겨져 보이는데
이유는 무엇이고 해결방법은 무엇일까여?
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.support.constraint.ConstraintLayout;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import com.flask.colorpicker.ColorPickerView;
import com.flask.colorpicker.OnColorSelectedListener;
import com.flask.colorpicker.builder.ColorPickerClickListener;
import com.flask.colorpicker.builder.ColorPickerDialogBuilder;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
int a=0;
class Point{
float x;
float y;
boolean check;
int color;
public Point(float x, float y, boolean check,int color)
{
this.x = x;
this.y = y;
this.check = check;
this.color = color;
}
}
class MyView extends View
{
public MyView(Context context) { super(context); }
@Override
protected void onDraw(Canvas canvas) {
Paint p = new Paint();
p.setStyle(Paint.Style.FILL_AND_STROKE);
p.setStrokeWidth(30);
p.setAntiAlias(true);
for(int i=1 ; i<points.size() ; i++)
{
p.setColor(points.get(i).color);
if(!points.get(i).check)
continue;
canvas.drawLine(points.get(i-1).x,points.get(i-1).y,points.get(i).x,points.get(i).y,p);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX();
float y = event.getY();
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN:
Log.d(String.valueOf(x)+String.valueOf(y), "x,y의 좌표의값 ");
points.add(new Point(x+1,y+1,false , color));
case MotionEvent.ACTION_MOVE :
Log.d(String.valueOf(x)+String.valueOf(y), "x,y의 좌표의값 ");
points.add(new Point(x,y,true , color));
break;
case MotionEvent.ACTION_UP :
break;
}
invalidate();
return true;
}
}
ArrayList<Point> points = new ArrayList<Point>();
Button draw_red_btn,draw_blue_btn,draw_black_btn,clearbtn;
LinearLayout drawlinear;
int color = Color.BLACK;
ConstraintLayout draw_linearo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final MyView m = new MyView(this);
/* ----- 색 변경 ------ */
findViewById(R.id.draw_red_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
color = Color.RED ;
for (int i = 0; i < points.size(); i++) {
Log.d(String.valueOf(points.get(i).x), "포인트의 값");
}
}
});
// findViewById(R.id.draw_blue_btn).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// color = Color.BLUE ;
// }
// });
// findViewById(R.id.draw_black_btn).setOnClickListener(new View.OnClickListener() {
// @Override
// public void onClick(View v) {
// color = Color.BLACK ;
// }
// });
//
// clearbtn = findViewById(R.id.clear_btn);
draw_linearo = findViewById(R.id.draw_linearo);
drawlinear = findViewById(R.id.draw_linear);
// clearbtn.setOnClickListener(new View.OnClickListener() { //지우기 버튼 눌렸을때
// @Override
// public void onClick(View v){
// points.clear();
// m.invalidate();
// }
// });
draw_linearo.addView(m);
}
}