2010-07-06 2 views
0

J'essaie d'afficher un bitmap que j'ai créé dans et programme android, mais tous les tutoriels que je trouve impliquent soit Drawables ou XML afin de les afficher. Quelqu'un peut-il me montrer les étapes nécessaires pour afficher un bitmap dans le code?Comment afficher un objet de classe Bitmap dans android sans utiliser XML

Ce n'est pas l'intégralité du code, c'est juste la majorité, le reste est lié à faire fonctionner la caméra.

class Preview extends SurfaceView implements SurfaceHolder.Callback { 
private SurfaceHolder mHolder; 
private Camera mCamera; 
private Paint mPaint; 
private Drawable bitmap; 
private Bitmap currentprev; 
private ImageView mImageView; 

private Camera.PreviewCallback mPrevCallback = new Camera.PreviewCallback() 
{ 
     public void onPreviewFrame(byte[] data, Camera Cam) { 
       Log.d("CombineTestActivity", "Preview registered"); 
       Log.d("CombineTestActivity", "Data length = " 
         + data.length); 
       // currentprev = BitmapFactory.decodeByteArray(data, 0, 
       //  data.length); 
       currentprev = BitmapFactory.decodeResource(getResources(), 
        R.drawable.creature00); 
       if(currentprev == null) 
        Log.d("CombineTestActivity", "currentprev is null"); 
       if(mImageView == null) 
        Log.d("CombineTestActivity", "mImageView is null"); 
     //Code fails here, gives null pointer exception 
       mImageView.setImageBitmap(currentprev); 
       Log.d("CombineTestActivity", "Preview Finished"); 
     } 
}; 

private OnTouchListener mCorkyListener = new OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent me) { 
       Log.d("CombineTestActivity", "touch registered"); 
       mCamera.takePicture(null, null, mPicCallback); 
       return false; 
     } 
}; 

private Camera.PictureCallback mPicCallback = new Camera.PictureCallback() { 
     public void onPictureTaken(byte[] data, Camera mCamera) { 

       Log.d("CombineTestActivity", "picture method run"); 
     } 
}; 

Preview(Context context) { 
    super(context); 

    // Install a SurfaceHolder.Callback so we get notified when the 
    // underlying surface is created and destroyed. 
    mImageView = (ImageView)findViewById(R.id.imageview); 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    mPaint = new Paint(); 
    bitmap = context.getResources().getDrawable(
     R.drawable.creature00); 
    if(mImageView == null) 
     Log.d("CombineTestActivity", "mImageView is null"); 

this.setOnTouchListener(mCorkyListener); 

} 
+0

Un bitmap de ... quoi? – CommonsWare

+0

Image d'une créature qui sera utilisée dans un jeu, et dans laquelle je devrai éditer les pixels individuels et les fusionner avec la caméra – RyoxSinfar

Répondre

1
Bitmap bm; // some bitmap you have loaded. 
ImageView iv; // the image view you want to display the bitmap in 

iv.setImageBitmap(bm); 
+0

Cela ne fonctionnera pas comme 'iv.setImageBitmap (bm);' vous donnera une valeur nulle exception de pointeur; vous devez faire quelque chose comme 'ImageView iv = (ImageView) findViewById (R.id.my_image_view);' avant de faire 'iv.setImageBitmap (bm);' –

2

Vous devez utiliser le BitmapFactory pour créer le Bitmap et le charger dans le ImageView. Comme ceci:

Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.my_image); 
ImageView view = (ImageView)findViewById(R.id.my_image_view); 
view.setImageBitmap(image); 
+0

Pouvez-vous me montrer un exemple de code de base? Je suis nouveau à android et pas sûr de ce que tout est nécessaire et comment tout va de pair – RyoxSinfar

+0

J'ai édité ma réponse pour ajouter un exemple. – CaseyB

+0

J'ai essayé de faire une vue d'image maintenant avec un constructeur passant dans le contexte, ainsi que de la façon dont vous avez écrit avec une vue définie XML mais chaque fois que l'objet ImageView sort comme NULL dès que l'instruction d'initialisation est terminée – RyoxSinfar

Questions connexes