2012-04-02 6 views
0

나는 자신을 테스트하기 위해 안드로이드 응용 프로그램을 만들고 있습니다. 캔버스를 사용하여 비트 맵 이미지를 그리려고하지만 왜 작동하지 않습니까? 아무런 예외없이 시작한 후 잠깐 닫힙니다. 안드로이드에서 비트 맵 그리기

내가 지금까지 사용하고있는 코드입니다 :

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

첫 번째 문제는 당신은 당신이 캔버스에 Null 참조를 전달하고 doDraw를 호출 할 때.

목표를 달성하려면 View를 확장하고 View 클래스의 onDraw 메서드를 재정의 할 수 있습니다. 그러면 화면에 그릴 수 있습니다.

0

로그에 따르면 28 번째 줄에 오류가 있습니다. Canvas 변수를 null로 초기화 했으므로 메소드 중 하나에 액세스하려고 시도하는 동안 NullPointerException이 발생한다는 것은 명백합니다.

활동에 내용을 그리는 또 다른 방법을 제안합니다.보기를 서브 클래스 화하고 Canvas를 제공하는 onDraw() 메서드를 사용하십시오.