2012-04-02 84 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()方法。