ImageView在android中不起作用

问题描述 投票:0回答:2

我在ImageView中使用drawwing有问题。当在onCreate()中绘制线条时都可以,但是在绘制时,qwe()则不会绘制。因为?

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);

}

}

android imageview
2个回答
0
投票

myImageView.draw(myCanvas)将画像视图绘制在画布上的任何内容上,包括您之前绘制的线条。

总的来说,目前还不清楚你想要达到什么目标。在config()之后,imageview已经显示在画布上的任何内容,因此将imageview绘制到自身似乎是可疑的。最后的findViewById()也没有用处。


0
投票

使用myImageView.invalidate()而不是myImageView.draw(myCanvas)。

© www.soinside.com 2019 - 2024. All rights reserved.