2013-03-21 2 views
0

На картинке вы увидите, что слева находится нормальная линия, а справа - пунктирная линия. После того как я выбрал пунктирную линию, нормальная линия была преобразована в пунктирную линию. Если я попытаюсь нарисовать обычную линию, она преобразует пунктирную линию в обычную линию.Нормальная линия против линии линии

The two lines

Вот View я использовал для создания каждой строки:

public void setDashLine(){ 

    dashedLine = true; 
    paint = new Paint(); 
    paint.setPathEffect(dashEffect); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setAntiAlias(true); 
      paint.setStrokeJoin(Paint.Join.ROUND); 
      paint.setStrokeWidth(STROKE_WIDTH); 
} 

public void setNormalLine(){ 
    //paint.setColor(Color.BLACK); 
    dashedLine = false; 

    paint.setPathEffect(null); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setPathEffect(null); 
    paint.setAntiAlias(true); 
      paint.setStrokeJoin(Paint.Join.ROUND); 
      paint.setStrokeWidth(STROKE_WIDTH); 
} 


protected void onDraw(Canvas canvas) { 

    if(dashedLine){ 
     paint.setPathEffect(dashEffect); 
    } 
    else { 
     paint.setPathEffect(null); 
    } 


final OnTouchListener drawLineListener = new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 

     FirstActivity.ll.setVisibility(LinearLayout.GONE); 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
       myLine = new MyLine(); 
       myLine.xStart = event.getX(); 
       myLine.yStart = event.getY(); 

      return true; 

      case MotionEvent.ACTION_MOVE: 
      case MotionEvent.ACTION_UP: 
      myLine.xEnd = event.getX(); 
      myLine.yEnd = event.getY(); 
      invalidate(); 
      lineList.add(myLine); 
      break; 

      default: 
      Log.d("mock it up", "Unknown touch event " + event.toString()); 
      return false; 
     } 
     return true; 

    } 
}; 

final OnTouchListener drawDashedLineListener = new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 

     FirstActivity.ll.setVisibility(LinearLayout.GONE); 

     switch (event.getAction()) { 
      case MotionEvent.ACTION_DOWN: 
      return true; 

      case MotionEvent.ACTION_MOVE: 
      case MotionEvent.ACTION_UP: 

      break; 

      default: 
      Log.d("mock it up", "Unknown touch event " + event.toString()); 
      return false; 
     } 
     return true; 

    } 
}; 
+0

Вы должны обрезать этот класс только для наиболее подходящего кода. – adneal

ответ

0

Если вы звоните по телефону: краска = новый Paint(); в public void setNormalLine()?

Смежные вопросы