2014-01-21 2 views
0

У меня проблема с drawwing в ImageView. Когда строка врисована в onCreate() все ОК, но когда в розыгрыше qwe() она не нарисована. Потому как?ImageView не работает в android

public class MainActivity extends Activity { 
Bitmap myBitmap; 
Canvas myCanvas; 
ImageView myImageView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
config(); 
} 

public void config() 
{ 
    myBitmap=Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888); 
myCanvas=new Canvas(myBitmap); 
     myImageView =(ImageView)findViewById(R.id.imageView1); 
    for(int i=0;i<200;i++) 
     for(int j=0;j<200;j++) 
      myBitmap.setPixel(i, j, 0xffffff00); 
    myImageView.setImageBitmap(myBitmap); 

    Paint myPaint=new Paint(); 
    myPaint.setColor(0xff000000); 
    myCanvas.drawLine(10, 10, 190, 190, myPaint); 

} 

public void qwe(View v) 
{ 
    myImageView =(ImageView)findViewById(R.id.imageView1); 
    Paint myPaint=new Paint(); 
    myPaint.setColor(0xff000000); 
    myCanvas.drawLine(30, 100, 100, 30, myPaint); 
    myImageView.draw(myCanvas); 
    myImageView =(ImageView)findViewById(R.id.imageView1); 

} 

}

+0

Вы получаете какую-либо ошибку? отправить сообщение logcat –

+0

что такое qwe? У вас есть кнопка с свойством onClick внутри вашего макета? – Blackbelt

+0

Lolz! Почему мне это смешно? myImageView.draw (myCanvas); myImageView = (ImageView) findViewById (R.id.imageView1); Сначала вы вызвали метод .draw(), а затем вы вызвали «findViewById (..)» после этого? Почему? –

ответ

0

myImageView.draw(myCanvas) рисует ImageView над любой есть на холсте, в том числе линии, которую вы нарисовали ранее.

В целом неясно, чего вы хотите достичь. После config() изображение уже отображает все, что есть на холсте, поэтому рисование изображения для себя кажется подозрительным. Последние findViewById() не служат цели.

0

Используйте myImageView.invalidate() вместо myImageView.draw (myCanvas).

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