MyView.java
public class MyView extends View{
ArrayList<Point> list;
static final int RED_STATE=0;
static final int BLUE_STATE=1;
static final int YELLOW_STATE=2;
static final int WHITE_STATE=3;
static final int BLACK_STATE=4;
static final int GREEN_STATE=5;
int mStrokeWidth = 15; // 시작 선 두께
int colorState = BLACK_STATE; // 시작 선
Paint[] paintList = new Paint[6];
public MyView(Context context) {
super(context);
init();//초기화
}
public MyView(Context context, AttributeSet attrs){
super(context, attrs);
init();//초기화
}
public void init(){
list=new ArrayList<Point>();
Paint redPaint = new Paint();
redPaint.setColor(Color.RED);
redPaint.setStrokeWidth(mStrokeWidth); //선의 굵기
redPaint.setAntiAlias(true);//경계면을 부드럽게 처리하기
Paint bluePaint = new Paint();
bluePaint.setColor(Color.BLUE);
bluePaint.setStrokeWidth(mStrokeWidth); //선의 굵기
bluePaint.setAntiAlias(true);//경계면을 부드럽게 처리하기
Paint yellowPaint = new Paint();
yellowPaint.setColor(Color.YELLOW);
yellowPaint.setStrokeWidth(mStrokeWidth); //선의 굵기
yellowPaint.setAntiAlias(true);//경계면을 부드럽게 처리하기
Paint clearPaint1 = new Paint();
clearPaint1.setColor(Color.WHITE);
clearPaint1.setStrokeWidth(50); //선의 굵기
clearPaint1.setAntiAlias(true);//경계면을 부드럽게 처리하기
Paint blackPaint = new Paint();
blackPaint.setColor(Color.BLACK);
blackPaint.setStrokeWidth(mStrokeWidth); //선의 굵기
blackPaint.setAntiAlias(true);//경계면을 부드럽게 처리하기
Paint greenPaint = new Paint();
greenPaint.setColor(Color.GREEN);
greenPaint.setStrokeWidth(mStrokeWidth); //선의 굵기
greenPaint.setAntiAlias(true);//경계면을 부드럽게 처리하기
paintList[0]=redPaint;
paintList[1]=bluePaint;
paintList[2]=yellowPaint;
paintList[3]=clearPaint1;
paintList[4]=blackPaint;
paintList[5]=greenPaint;
}
public void onDraw(Canvas canvas) {
canvas.drawColor(Color.WHITE);
for(int i=0 ;i < list.size(); i++){
Point p = list.get(i);
if(!(p.isStart)){ //해당 인텍스의 isStart 값이 true가 아니라면
canvas.drawLine(list.get(i-1).x, list.get(i-1).y,list.get(i).x, list.get(i).y, paintList[list.get(i).colorState]); //선의 속성을 가지고 있는 paint객체
}
}
}
FreeLine.java (버튼부분만 가져왔습니다.)
public void onClick3(View v){
final Button mSize = (Button)findViewById(R.id.but_thickness);
PopupMenu popup = new PopupMenu(this, v);
MenuInflater inflater = popup.getMenuInflater();
Menu menu = popup.getMenu();
inflater.inflate(R.menu.popupmenu2, menu);
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if(id == R.id.thickness_15){
myView.mStrokeWidth=15;
}
if(id == R.id.thickness_20){
myView.mStrokeWidth=20;
}
if(id == R.id.thickness_25){
myView.mStrokeWidth=25;
}
if(id == R.id.thickness_30){
myView.mStrokeWidth=30;
}
if(id == R.id.thickness_35){
myView.mStrokeWidth=35;
}
return false;
}
});
popup.show();
}
위와 같이하면 선 두께는 그대로 나와요 ㅠㅠ 두께 각각 다르게 잡아주는 방법이 업나요?