2015-03-13 3 views
0

Я довольно новичок в android. У меня есть этот код для рисования в моем приложении, но я хочу активировать его с помощью кнопки. Если я нажму на кнопку панели действий, я буду рисовать, иначе я не буду этого делать. Как мне это сделать?Как активировать метод рисования с помощью кнопки?

//DRAW 
public class CustomView extends View { 
    Bitmap mBitmap; 
     Paint paint; 
     Path path; 
     public CustomView(Context context) { 
      super(context); 
     mBitmap = Bitmap.createBitmap(640, 1024, Bitmap.Config.ARGB_8888); 
      paint = new Paint(); 
        path= new Path(); 
      paint.setColor(Color.YELLOW); 
      //paint.setStyle(Style.FILL); //if I want to fill but I don't 
      paint.setStyle(Style.STROKE); 
      paint.setStrokeWidth(3); 
     } 

protected void onDraw(Canvas canvas) { 

    super.onDraw(canvas); 
    canvas.drawPath(path,paint); 
     canvas.drawCircle(x, y, 25, paint); 
    } 

public boolean onTouchEvent(MotionEvent event) { 
     int action = event.getAction(); 
     switch (action){ 
case MotionEvent.ACTION_DOWN: 
    path.moveTo(event.getX(), event.getY()); 
    path.lineTo(event.getX(), event.getY()); 
    break; 
    case MotionEvent.ACTION_MOVE: 
     x = event.getX(); 
     y = event.getY(); 
     path.lineTo(x, y); 
     invalidate(); 
    break; 
    case MotionEvent.ACTION_UP: 
     path.lineTo(event.getX(), event.getY()); 
    break; 
    case MotionEvent.ACTION_CANCEL: 
    break; 
    default: 
    break;} 
     return true; 
    }} 


@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case R.id.menu_edit: 
       Log.i("ActionBar", "Edit"); 

// FROM HERE I WANT TO ACTIVATE 

      return true; 
     case R.id.menu_save: 
      Log.i("ActionBar", "Guardar!");; 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 

Edit: мое приложение состоит из текста. И я хочу, чтобы пользователь подчеркивал этот текст, и для этого вы должны сначала включить касание кнопки панели действий. И если вы не хотите подчеркивать больше, вы снова нажимаете кнопку.

ответ

1

Вы называете Invalidate() на окне вы хотите, чтобы перерисовать

+0

Я использовал этот код в swich для активации: layout = (FrameLayout) findViewById (R.id.layout); \t layout.addView (новый CustomView (Objeto.this)); \t layout.invalidate() ;. Теперь я должен посмотреть, как отключить его. Спасибо, Гейб. –

+0

Знаете ли вы, как деактивировать или остановить onDraw, когда я снова нажимаю кнопку? Я не знаю, как это сделать. –

+0

Если вы хотите, чтобы он возвращался в предыдущее состояние, вам нужно заставить его взглянуть на некоторый логический флаг, чтобы определить, рисовать эти вещи или нет, и заставить вашу кнопку переключать этот флаг, а затем вызвать недействительным. –

0

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

Прежде всего метод OnDraw() вызывается самостоятельно, поэтому вы не можете выполнить действие вручную, если это действие в методе onDraw(). Я бы предложил создать метод, который обрабатывает эти действия. Так попробуйте удалить эти 2 строки:

canvas.drawPath(path,paint); canvas.drawCircle(x, y, 25, paint);

Во-вторых, вы должны добавить onClickListener прикрепленные к кнопке вы хотите, чтобы нести ответственность за эти действия. Если вы не знаете, как это сделать, напишите мне вопрос, и я создам учебник здесь. Id они не работают, я был бы признателен, чтобы помочь вам с другими решениями.

+0

onDraw может быть принудительно отменено. И если он хочет, чтобы его ondraw рисовал круг и путь, это то место, где ему нужны эти линии.Я не думаю, что вы поняли его вопрос - он хочет заставить пункт меню перерисовать его мнение. –

+0

Я пробовал это, но не работал: я создал метод с canvas.drawPath (путь, краска); canvas.drawCircle (x, y, 25, paint); , и я создал логическое значение, которое в методе onOptionsItemSelected истинно, тогда я должен рисовать, но я не могу. Это то, что ты мне скажешь? Извините, если мой английский не очень хорошо –

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