2012-04-02 119 views
0

我正在制作一个android应用程序来测试自己。我正在尝试使用画布绘制位图图像,但为什么它不起作用?它只是在启动后一秒钟关闭,没有任何例外。在android中绘制位图

这是我使用至今代码:

package com.mysoftwaremobileapps.BitmapExample; 

import java.util.ArrayList; 

import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.os.Bundle; 
import android.view.MotionEvent; 

public class BitmapExampleActivity extends Activity { 
/** Called when the activity is first created. */ 
private ArrayList<CustomImageViewActivity> CustomImages; 
Bitmap ImageView1; 
float x; 
float y; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Canvas c = new Canvas(); 
    drawImage(c); 
} 
public void doDraw(Canvas canvas) 
{ 
    for (CustomImageViewActivity p: CustomImages) { 
     canvas.drawBitmap(ImageView1, p.getX(), p.getY(), null); 
} 

} 
public void drawImage(Canvas canvas) 
{ 
    ImageView1 = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); 
    Paint black; 
    black = new Paint(); 
    black.setStyle(Paint.Style.FILL); 
    black.setColor(Color.GRAY); 
    canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), black); 
    canvas.drawBitmap(ImageView1, null, null); 

    //Parachuter nr.1 
    x = 14; 
    y = 28; 

    CustomImageViewActivity p = new CustomImageViewActivity(x, y); 
    CustomImages.add(p); 
    Canvas c1 = new Canvas(); 
    doDraw(c1); 
} 

public boolean onTouchEvent(MotionEvent event) 
{ 
    if (event.getAction() == MotionEvent.ACTION_DOWN) { 
     for (CustomImageViewActivity p: CustomImages) { 
      p.posX = event.getX(); 
      p.posY = event.getY(); 
    } 
    } 
    return false; 
} 
} 
+0

'帆布C = NULL; doDraw(C);'你逝去的空 – 2012-04-02 16:17:56

+0

所有这些工作,谢谢! – user1183066 2012-04-02 19:19:46

回答

0
Canvas c = null; 

PLZ初始化

Canvas c = new Canvas(); 
0

的第一个问题是,当你调用doDraw你传递一个空引用到画布上。

要实现您的目标,您可以扩展视图并覆盖View类的onDraw方法。这将允许您在屏幕上绘图。

0

根据你的日志,错误在第28行。不再进一步检查:你初始化你的Canvas变量为null,因此显然当你试图访问它的一个方法时发生NullPointerException。

我建议你以另一种方式将东西绘制到Activity的子类中,并使用为您提供Canvas的onDraw()方法。