Как отобразить объект класса Bitmap в Android без использования XML - PullRequest
1 голос
/ 06 июля 2010

Я пытаюсь отобразить растровое изображение, созданное мной в программе android, но все учебники, которые я нахожу, включают Drawables или XML для их отображения. Может кто-нибудь показать мне шаги, необходимые для отображения растрового изображения в коде?

Это не весь код, это просто большинство, остальное связано с работой камеры.

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 );

}

Ответы [ 2 ]

2 голосов
/ 06 июля 2010

Вам необходимо использовать BitmapFactory для создания Bitmap и загрузить его в ImageView. Как это:

Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.my_image);
ImageView view = (ImageView)findViewById(R.id.my_image_view);
view.setImageBitmap(image);
1 голос
/ 06 июля 2010
Bitmap bm; // some bitmap you have loaded.
ImageView iv; // the image view you want to display the bitmap in

iv.setImageBitmap(bm);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...