三种方法对应三种情况:
1. 传送本地 res 中的图片
如果是本地 res 中的资源文件可以用 intent.putExtra(""id"", R.id.xxx); 传递一个对应的 id 过去. 在新 activity 中通过 id 取出图片. getResources().getDrawable(R.id.xxx);
传送图片的 Activity:
- private ListView lstmenu;
- private int[] imageid={R.drawable.pic1,R.drawable.pic2};
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_itemdetail);
- lstmenu=(ListView) findViewById(R.id.lstmenu);
- lstmenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position,long id) {
- // 点击的 Item 的内容通过参数带入 itemActivity, 并打开
- Intent intent = new Intent(itemdetailActivity.this,itemActivity.class); // 创建 Intent
- intent.putExtra("detail_img",imageid[position]); // 将要传递的信息放入 Intent
- intent.putExtra("detail_text1",title[position]); // 将要传递的信息放入 Intent
- intent.putExtra("detail_text2",detail[position]); // 将要传递的信息放入 Intent
- startActivity(intent);
- }
- });
- }
接收图片的 Activity:
- int img_id = getIntent().getIntExtra("detail_img",0); // 接收图片的 id
- img.setImageResource(img_id);
2. 不是本地资源文件或者 adapter 中没有存储 id
如果不是本地资源文件或者 adapter 中没有存储 id, 可以把 drawable 转为 bitmap, 用 intent.putExtra(""bitmap"", bitmap); 传递过去. 因为 intent 只能传递实现序列化的类, 即继承 java 的 Serializable 接口或者 Android 的 Parcelable 接口. drawable 没有实现该接口所以不能传递.
3. 拉取的图片
如果是通过线程什么的从网上拉取的图片, 可以定义一个下载的工具类, 并定义一个 static 的静态 Map 集合, 每拉取成功一张图片就把该图片存入 Map 中作为缓存. key 是该图片的拉取地址. 然后通过 intent 把地址传递过去. 在新 activity 中通过该工具类取得静态 map, 并通过传递过来的地址中 map 中取出该图片."
来源: http://www.bubuko.com/infodetail-3356081.html