在ImageView上绘图 - createBitmap崩溃

时间:2016-01-17 16:17:36

标签: java android bitmap

我想在ImageView上绘图,当我尝试创建Bitmap时,程序崩溃了。 首先我创建了变量

private ImageView backgroudn;

在onCreate方法中,我将背景指向我的xml文件中的对象。

this.backgroudn = (ImageView) findViewById(R.id.ivbackground);
drawGrid ();

但是现在当我想在函数drawGrid()中绘制这个ImageView时,它首先返回ImageView的大小为width = 0和height = 0.为什么我做错了?

private void drawGrid () {

    int height = this.backgroudn.getHeight();
    int width = this.backgroudn.getWidth();

    // return's height = width = 0
    System.out.println("height: " + height + " width: " + width);

    // where program crashes.
    Bitmap bm = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);


    Canvas c = new Canvas(bm);
    Paint p = new Paint();
    p.setColor(Color.BLACK);

    int sizeW = width/7;
    int sizeH = height/7;

    for (int i = 0; i < 8; i++) {
        c.drawLine(i*sizeW, 0, i*sizeW, height, p);
        c.drawLine(0, i*sizeH, width, i*sizeH, p);
    }

    backgroudn.setImageBitmap(bm);
}

1 个答案:

答案 0 :(得分:0)

我发现错误只是因为身高和宽度都是0.但我仍然需要这些值,我该怎么办?

这是我的xml代码:

 <ImageView
    android:id="@+id/ivbackground"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_column="0"
    android:layout_gravity="left|center_vertical"
    android:layout_alignParentTop="true"
    android:layout_marginTop="44dp"
    android:layout_row="0" />