天天看點

android 傳遞圖檔,Android程式設計使用Intent傳遞圖檔的方法詳解

本文執行個體講述了Android程式設計使用Intent傳遞圖檔的方法。分享給大家供大家參考,具體如下:

基本思路是先把bitmap轉化為byte數組,用Intent傳遞數組,在将數組轉化為bitmap

bitmap轉化為byte數組的方法:

private byte[] Bitmap2Bytes(Bitmap bm){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

byte數組轉化為bitmap方法:

byte buff[]=mIntent.getByteArrayExtra("image");

bitmap = BitmapFactory.decodeByteArray(buff, 0, buff.length);

程式執行個體:

第一個activity:

import java.io.ByteArrayOutputStream;

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.ImageView;

public class SendImageActivity extends Activity implements OnClickListener {

private Bitmap bitmap;

byte buff[] = new byte[125*250];

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

ImageView mImageView = (ImageView) findViewById(R.id.image);

Button bt1 = (Button) findViewById(R.id.bt1);

bitmap =BitmapFactory.decodeResource(getResources(), R.drawable.option24);

buff = Bitmap2Bytes(bitmap);

BitmapDrawable mBitmapDrawable = new BitmapDrawable(bitmap);

mImageView.setBackgroundDrawable(mBitmapDrawable);

bt1.setOnClickListener(this);

}

@Override

public void onClick(View arg0) {

// TODO Auto-generated method stub

Intent mIntent = new Intent();

mIntent.putExtra("image", buff);

mIntent.setClass(this, activity2.class);

startActivity(mIntent);

}

private byte[] Bitmap2Bytes(Bitmap bm){

ByteArrayOutputStream baos = new ByteArrayOutputStream();

bm.compress(Bitmap.CompressFormat.PNG, 100, baos);

return baos.toByteArray();

}

}

第二個activity:

import android.app.Activity;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.widget.Button;

import android.widget.ImageView;

public class activity2 extends Activity {

private Bitmap bitmap;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.layout2);

ImageView mImageView = (ImageView) findViewById(R.id.image2);

Intent mIntent = getIntent();

byte buff[]=mIntent.getByteArrayExtra("image");

bitmap = BitmapFactory.decodeByteArray(buff, 0, buff.length);

BitmapDrawable mBitmapDrawable = new BitmapDrawable(bitmap);

mImageView.setBackgroundDrawable(mBitmapDrawable);

}

}

發送圖檔:

Intent intent = new Intent(ChangePortraitActivity.this , UserProfileActivity.class);

mImageView.setDrawingCacheEnabled(Boolean.TRUE);

intent.putExtra("BITMAP", mImageView.getDrawingCache()); //這裡可以放一個bitmap

startActivity(intent);

接收圖檔:

//接收的activity

Intent intent = getIntent();

if (intent != null && intent.getParcelableExtra("BITMAP") != null) {

Bitmap bitmap = (Bitmap)getIntent().getParcelableExtra("BITMAP");

mImageViewPortrait.setImageBitmap(bitmap);

}

希望本文所述對大家Android程式設計有所幫助。