GridView 加载网络图片 | 点击 Item 传递图片到另一个 Avtivity
2017-04-08 11:40
429 查看
1.声明 GridView
private PullToRefreshGridView ptrgv;
2.为 GridView 添加图片
@Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder vh; if (view == null) { view = LayoutInflater.from(ctx).inflate(R.layout.list_item_for_gridview, null); vh = new ViewHolder(); vh.iv = (ImageView) view.findViewById(R.id.imageView_cen); view.setTag(vh); } vh = (ViewHolder) view.getTag(); Picture pic = pictures.get(i); //用OkhttpUtils compile 'com.zhy:okhttputils:2.6.2' final ViewHolder finalVh = vh; OkHttpUtils .get() .url("https://www.baidu.com/img/bd_logo1.png") .build() .execute(new BitmapCallback() { @Override public void onError(okhttp3.Call call, Exception e, int id) { } @Override public void onResponse(Bitmap response, int id) { finalVh.iv.setImageBitmap(response); } }); return view; } static class ViewHolder { ImageView iv; public ImageView getIv() { return iv; } }
3.为 GridView 设置点击事件
ptrgv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { imageView = (ImageView) findViewById(R.id.imageView_cen); Toast.makeText(MainActivity.this,"jaja",Toast.LENGTH_SHORT).show(); Intent intent = new Intent(MainActivity.this,ItemLayout.class); byte[] mypic = null; imageView.setDrawingCacheEnabled(true); Bitmap bitmap = imageView.getDrawingCache(); mypic = Bitmap2Bytes(bitmap); intent.putExtra("picture",mypic); startActivity(intent); } });
4.将 Bitmap 转换为 Bytes
private byte[] Bitmap2Bytes(Bitmap bitmap){ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,100,byteArrayOutputStream); return byteArrayOutputStream.toByteArray(); }
5.设置另一个 Activity
public class ItemLayout extends AppCompatActivity { private ImageView imageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_item_layout); imageView = (ImageView) findViewById(R.id.imageview33); Intent intent = getIntent(); if(intent != null){ byte [] mypics = intent.getByteArrayExtra("picture"); Bitmap bitmap = BitmapFactory.decodeByteArray(mypics,0,mypics.length); imageView.setImageBitmap(bitmap); } } private byte[] Bitmap2Bytes(Bitmap bitmap){ ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG,100,byteArrayOutputStream); return byteArrayOutputStream.toByteArray(); } }
6.另一个 Avtivity 的 Layout
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView_cen"/> </LinearLayout>
我的博客、简书
相关文章推荐
- Android使用GridView异步加载(弱引用)网络图片(支持点击查看)
- android官方开源的高性能异步加载网络图片的Gridview例子
- 广告banner:手动滑动切换,自动切换,点击跳转,异步加载网络图片
- Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
- 【转】Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
- 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)
- LongListSelector的Item里使用Image加载网络图片必须注意的问题
- 用Volley让GridView加载网络图片
- GridView中网络图片延迟加载导致高度计算失败的问题
- Android循环滚动广告条的完美实现,封装方便,平滑过渡,从网络加载图片,点击广告进入对应网址
- Android GridView 实现9宫格菜单,并实现item点击按压效果更改图片
- 利用LruCache为GridView异步加载大量网络图片完整示例
- GridView初始时加载一张图片,点击后加载另外一张大图
- listview 加载网络图片 item中上下有留白现象
- Android中GridView中Item点击背景图片的显示改变
- ListView GridView ViewPager 异步 加载网络图片 缓存到本地
- 由于gridview或者listview position==0时重复加载第一个item的图片加载失败的解决方案
- Android 网络加载图片点击大图后 浏览 可 缩放
- android加载网络图片并缓存,对图片进行点击打开相应链接
- LruCache为GridView异步加载大量网络图片