2016-03-01 3 views
0

Я создаю экземпляр переменной canvas в функции onCreate, и если я нарисую строку в функции onCreate, она отображается в порядке. Однако, если я рисую строку в функции onClick кнопки, она не работает. Что может быть причиной.Android: невозможно рисовать линию на холсте с помощью функции щелчка

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     imageView = (ImageView) this.findViewById(R.id.imageView); 
     BitmapDrawable drawable = (BitmapDrawable) imageView.getDrawable(); 
     Bitmap bitmap = drawable.getBitmap(); 
     Bitmap mutableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true); 
     canvas = new Canvas(mutableBitmap); 
     imageView.setImageBitmap(mutableBitmap); 
     paint = new Paint(); 
     paint.setColor(Color.rgb(255, 153, 51)); 
     paint.setStrokeWidth(10); 
    } 

    public void displayLine(View view) { 
     canvas.drawLine(10, 20, 400, 500, paint); 
    } 
+0

Здесь отсутствует код. Где ваш обработчик onClick? Где хранится ваш объект холста? Где называется displayLine? –

+0

На каком языке это? –

+0

Кнопка назначается функцией onClick displayLine. Я не понимал, что вам мешает хранение холста. Можете ли вы уточнить. Странная вещь, если я нарисую строку (выражение выше в функции) в самом методе onCreate, она рисует линию отлично. Но когда я перемещаю этот оператор в функцию onclick кнопки, он больше не работает – srkmish

ответ

0

Не то, чтобы я обязательно сделал это таким образом ... но вы попробовали добавить недействительный звонок? то есть:

public void displayLine(View view) { 
     canvas.drawLine(10, 20, 400, 500, paint); 
     view.invalidate(); 
    } 
Смежные вопросы