当前位置: 首页 > 编程笔记 >

Android GridView仿微信朋友圈显示图片

阳勇
2023-03-14
本文向大家介绍Android GridView仿微信朋友圈显示图片,包括了Android GridView仿微信朋友圈显示图片的使用技巧和注意事项,需要的朋友参考一下

最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样。
利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路:

  • 1.获取网络图片
  • 2.初始化gridview,自定义适配器
  • 3.根据图片数量设置gridview的列数
  • 4.更新适配器

下面贴上部分源码并给大家解析一下
一、首先是GridView的item

<com.view.SquareLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:orientation="vertical" > 
 <ImageView 
  android:id="@+id/item_grida_image" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" 
  android:scaleType="fitXY" 
  android:layout_margin="@dimen/tinyest_space"> 
 </ImageView> 
</com.view.SquareLayout> 

这里的SquareLayout布局是自定义的下面会给大家详细讲解
子项中是一个正方形布局里面嵌套着图片

二、接下来自定义适配器
因为项目需求不同,自己定义的适配器和平时用的不太一样,这里就不贴源码了。大体上也是将图片下载到本地,用Imageloader加载,不过我这里有上传失败的和新建的,所以不太一样。

三、最后在用到的Activity中设置

noScrollgridview = (GridView) findViewById(R.id.noScrollgridview); 
  noScrollgridview.setNumColumns(3); //默认设置在3列图片 
  //上传成功传值给adapter 
  picAdapter = new PictureAdapter(this, 1, appItem_file); 
  noScrollgridview.setAdapter(picAdapter); 



//根据图片数量设置图片的列 
  int size = appItemFile.getFiles().split(",").length; 
  if (size==1){ 
   noScrollgridview.setNumColumns(1); 
  } 
  else if (size==2){ 
   noScrollgridview.setNumColumns(2); 
  } 
  else if (size>2){ 
   noScrollgridview.setNumColumns(3); 
  } 
  picAdapter.notifyDataSetChanged(); 

默认设置GridView的列数为3,根据图片的数量动态设置列数。

最后贴上SquareLayout的源码解析一下

/** 
 * 方形布局 
 */ 
public class SquareLayout extends RelativeLayout { 
 public SquareLayout(Context context, AttributeSet attrs, int defStyle) { 
  super(context, attrs, defStyle); 
 } 
 
 public SquareLayout(Context context, AttributeSet attrs) { 
  super(context, attrs); 
 } 
 
 public SquareLayout(Context context) { 
  super(context); 
 } 
 
 @SuppressWarnings("unused") 
 @Override 
 protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
  // For simple implementation, or internal size is always 0. 
  // We depend on the container to specify the layout size of 
  // our view. We can't really know what it is since we will be 
  // adding and removing different arbitrary views and do not 
  // want the layout to change as this happens. 
  setMeasuredDimension(getDefaultSize(0, widthMeasureSpec), 
    getDefaultSize(0, heightMeasureSpec)); 
 
  // Children are just made to fill our space. 
  int childWidthSize = getMeasuredWidth(); 
  int childHeightSize = getMeasuredHeight(); 
  // 高度和宽度一样 
  heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec( 
    childWidthSize, MeasureSpec.EXACTLY); 
  super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
 } 
} 

这里主要重写了onMeasure()方法,设置了高宽,需要注意的是在用SquareLayout的时候要设置它的高宽都是match_parent。这样就可以填满GridView的每一项了。
接下来贴图给大家看:

ImgeView的scaleType的属性如果设置FitXY就会充满方形布局,如果center就会居中显示
详细说一下吧:
1)center:保持原图的大小,显示在ImageView的中心。当原图的size大于ImageView的size,超过部分裁剪处理。
2)centerCrop:以填满整个ImageView为目的,将原图的中心对准ImageView的中心,等比例放大原图,直到填满ImageView为止(指的是ImageView的宽和高都要填满),原图超过ImageView的部分作裁剪处理。
3)centerInside:以原图完全显示为目的,将图片的内容完整居中显示,通过按比例缩小原图的size宽(高)等于或小于ImageView的宽(高)。如果原图的size本身就小于ImageView的size,则原图的size不作任何处理,居中显示在ImageView。
4)matrix:不改变原图的大小,从ImageView的左上角开始绘制原图,原图超过ImageView的部分作裁剪处理
5)fitCenter:把原图按比例扩大或缩小到ImageView的ImageView的高度,居中显示
6)fitEnd:把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的下部分位置
7)fitStart:把原图按比例扩大(缩小)到ImageView的高度,显示在ImageView的上部分位置
8)fitXY:把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView.

本文已被整理到了《Android微信开发教程汇总》,欢迎大家学习阅读。

以上就是本文的全部内容,希望对大家的学习有所帮助。

 类似资料:
  • 本文向大家介绍Android仿微信朋友圈图片查看器,包括了Android仿微信朋友圈图片查看器的使用技巧和注意事项,需要的朋友参考一下 再看文章之前,希望大家先打开自己的微信点到朋友圈中去,仔细观察是不是发现朋友圈里的有个“九宫格”的图片区域,点击图片又会跳到图片的详细查看页面,并且支持图片的滑动和缩放?这个功能是不是很常用呢?!那么我今天正好做了这个Demo,下面为大家讲解一下。首先按照惯例先看

  • 本文向大家介绍Android仿微信朋友圈点击加号添加图片功能,包括了Android仿微信朋友圈点击加号添加图片功能的使用技巧和注意事项,需要的朋友参考一下 本文为大家分享了类似微信朋友圈,点击+号图片,可以加图片功能,供大家参考,具体内容如下 xml: NinePhotoView.java Measure   我们的子View三个一排,而且都是正方形,所以我们上面通过循环很好去得到所有子View的

  • 本文向大家介绍手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果,包括了手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果的使用技巧和注意事项,需要的朋友参考一下 先来几张效果图: 点击其中一张照片可放大,可支持图片文字描述: 同时支持分享功能: 支持手势放大缩小 使用js框架是PhotoSwipe。  PhotoSwipe是一个图片放大插件,兼容pc和

  • 本文向大家介绍Javascript 实现微信分享(QQ、朋友圈、分享给朋友),包括了Javascript 实现微信分享(QQ、朋友圈、分享给朋友)的使用技巧和注意事项,需要的朋友参考一下         最近做微信开发,对微信公众号的开发,现在好的都是分享到朋友圈,QQ,分享给好友等分享功能,这里记录下,有需要的朋友也可以看下。 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 本文向大家介绍我也有微信朋友圈了 Android实现,包括了我也有微信朋友圈了 Android实现的使用技巧和注意事项,需要的朋友参考一下 本文实例分享了一个简单的朋友圈程序,包含了朋友圈的列表实现,视频的录制、预览与上传,图片可选择拍照,供大家参考,具体内容如下 FriendsListActivity  代码如下 布局文件 friends_list.xml 适配器 InteractionAdap

  • 本文向大家介绍Vue.js实现模拟微信朋友圈开发demo,包括了Vue.js实现模拟微信朋友圈开发demo的使用技巧和注意事项,需要的朋友参考一下 我用Vue.js实现微信朋友圈的一些功能,实现展示朋友圈,评论,点赞。 先构造一个vue的实例,对会更改的数据进行双向绑定, 我用JSON伪造模版数据,先实现显示朋友圈的效果,使用v-for方法去循环ALLFeeds中的每一项item生成包括name、