Android实战简易教程-第七十四枪(Intent之间传递图片)
原创
©著作权归作者所有:来自51CTO博客作者徐的张的原创作品,请联系作者获取转载授权,否则将追究法律责任
主布局文件(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对象显示出来。
运行实例:
点击“传递一张图片”按钮,跳转到AnotherActivity界面,显示一张图片。
PS:Intent跳转比较生硬,我们可以加入一些动画,让它的跳转更活泼一点,只要在startActivity后面加入一句代码:
overridePendingTransition(android.R.anim.slide_in_left,android.R.anim.slide_out_right);
这里我们调用了系统内置的动画文件,左面滑入,右面滑出的效果,运行一下,是不是切换过程更友好了?