2012-04-02 9 views
0

私は自分のためにテストするためにアンドロイドアプリを作っています。私はキャンバスを使用してビットマップイメージを描画しようとしていますが、なぜそれは動作していないのですか?それは、スタートアップの後に何も例外なくそれ自身を1秒で閉じるだけです。アンドロイドでビットマップを描く

これは私がこれまで使用していますコードです:

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);'あなたはそれらのすべてが機能ヌル –

+0

を渡している、ありがとう! – user1183066

答えて

0
Canvas c = null; 

Plzを

Canvas c = new Canvas(); 
0

最初の問題は、あなたがdoDrawを呼び出すときにキャンバスにnull参照を渡していることです。

目的を達成するために、Viewを拡張し、ViewクラスのonDrawメソッドをオーバーライドすることができます。それはあなたが画面に描画することができます。

0

ログによれば、エラーは28行目です。Canvas変数をnullに初期化したため、メソッドの1つにアクセスしようとするとNullPointerExceptionが発生することは明らかです。

アクティビティに要素を描画する別の方法をお勧めします。ビューをサブクラス化し、Canvasを提供するonDraw()メソッドを使用します。

関連する問題