마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

그림판 전체 지우기 질문이요

0 추천

초기화면에 흰색 배경에서 그림 다 그린 후

 

전체 지우기로 흰색 채우고싶은데요.

어떻게 해야하죠?

 

 

감이 안와요 ㅠㅠ

FreeLine.java

  public void onClick11(View v){ 
  final Button mSize = (Button)findViewById(R.id.btu_color);
  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.Color_Black){
     mSize.setText("Black");
     mSize.setTextColor(Color.BLACK);
     myView.colorState=MyView.BLACK_STATE;
    }
    if(id == R.id.Color_Red){
     mSize.setText("Red");
     mSize.setTextColor(Color.RED);
     myView.colorState=MyView.RED_STATE;
    }
    if(id == R.id.Color_Blue){
     mSize.setText("Blue");
     mSize.setTextColor(Color.BLUE);
     myView.colorState=MyView.BLUE_STATE;
    }
    if(id == R.id.Color_Green){
     mSize.setText("Green");
     mSize.setTextColor(Color.GREEN);
     myView.colorState=MyView.GREEN_STATE;
    }
    if(id == R.id.Color_Yellow){
     mSize.setText("Yellow");
     mSize.setTextColor(Color.YELLOW);
     myView.colorState=MyView.YELLOW_STATE;
    }

    return false;
   }
  });
  popup.show();
 }
   
    public void onClick2(View v){
     int id = v.getId();
     if(id == R.id.btu_clear){
      myView.colorState=MyView.WHITE_STATE;
      Toast.makeText(this, "지우개", Toast.LENGTH_SHORT).show();
     }
     if(id == R.id.but_thickness){
      Toast.makeText(this, "소스 구현 중입니다.", Toast.LENGTH_SHORT).show();
     }
    }

 

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 = 10; // 시작 선 두께
 int colorState = BLACK_STATE; // 시작 선

 

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(20); //선의 굵기
  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객체
   }
  }
 }

성수소년 (550 포인트) 님이 2015년 10월 18일 질문

1개의 답변

0 추천
그린 선 정보가 리스트에 들어있으니 리스트를 초기화하세요;;
Jinthree (8,980 포인트) 님이 2015년 10월 19일 답변
...