主布局文件(activity_main.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn"
android:onClick="transPic"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="传递一张图片" />
</LinearLayout>

AnotherActivity布局文件(activity_another.xml):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>

设置了一个ImageView控件用于接收显示传递过来的图片。

MainActivity代码(MainActivity.java):

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void transPic(View view){
//将图片转换为Bitmap对象
Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);
Intent intent=new Intent(MainActivity.this,AnotherActivity.class);
intent.putExtra("pic",bitmap);//传递
startActivity(intent);
}
}

调用BitmapFactory的decodeResource方法将一张图片转换成Bitmap对象,需要传入两个参数,第一个是Resources对象,第二个是图片的id。然后调用Intent的putExtra方法进行图片的传递。

AnotherActivity代码(AnotherActivity.java):

public class AnotherActivity extends AppCompatActivity {
private ImageView imageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_another);
imageView=(ImageView)findViewById(R.id.iv);
imageView.setImageBitmap((Bitmap)getIntent().getParcelableExtra("pic"));
}
}

调用Intent的getParcelableExtra方法,传入对应的key可以获得Bitmap对象,然后进行类型强转,调用ImageView的setImageBitmap,可以将一个Bitmap对象显示出来。

运行实例:

Android实战简易教程-第七十四枪(Intent之间传递图片)_ide

Android实战简易教程-第七十四枪(Intent之间传递图片)_intent_02

点击“传递一张图片”按钮,跳转到AnotherActivity界面,显示一张图片。

PS:Intent跳转比较生硬,我们可以加入一些动画,让它的跳转更活泼一点,只要在startActivity后面加入一句代码:

overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);

这里我们调用了系统内置的动画文件,左面滑入,右面滑出的效果,运行一下,是不是切换过程更友好了?