最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样。

利用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律,下面说一下自己的思路:

1.获取网络图片

2.初始化gridview,自定义适配器

3.根据图片数量设置gridview的列数

4.更新适配器

下面贴上部分源码并给大家解析一下

一、首先是GridView的item

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical" >

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">

这里的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 GridView仿微信朋友圈显示图片相关推荐

  1. SpringMVC实现微信链接分享到朋友圈显示图片功能微信JS-SDK调用步骤

    SpringMVC实现微信链接分享到朋友圈显示图片功能微信JS-SDK调用步骤 一.登录微信平台 login url:https://mp.weixin.qq.com/ name: your name ...

  2. 微信公众号-- 微信分享功能(分享到朋友和朋友圈显示图片和简介)

    1.效果图对比 2.之前踩过的坑 页面设置一个隐藏的图片,宽高都是300像素,微信就会抓取这张图片做为分享图片 链接:https://blog.csdn.net/aoshilang2249/artic ...

  3. android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。

    转载请声明出处(http://www.cnblogs.com/linguanh/) 先上张效果图: 1,思路简述 这个肯定是要重写 baseAdapter的了,这里我分了两个数据适配器,一个是自定义的 ...

  4. mfc让图片与按钮一起_微信朋友圈发图片还能添加语音,简单两步就能搞定!今天学到了...

    大家好,我是分享科技小达人~ 今天跟大家探讨的问题是:[微信朋友圈发图片添加语音的方法]. 日常生活中,我们都喜欢发朋友圈,今天就来教你如何在微信朋友圈,发送带语音的图片,方法非常简单,一起来学习一下 ...

  5. 【Android 控件使用及源码解析】 GridView规则显示图片仿微信朋友圈发图片

    今天闲下来想用心写一点东西,发现没什么可写的,就写一下最近项目上用到的一些东西吧.最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样. 想了一下用GridView再适合不 ...

  6. Android 仿微信朋友圈添加图片

    github地址(欢迎下载Demo) https://github.com/zhouxu88/WXCircleAddPic 老习惯,先上图,着急用的朋友,直接带走Demo,先拿来用吧,毕竟老板催的紧, ...

  7. Android 仿微信朋友圈发表图片拖拽和删除功能

    朋友圈实现原理 我们使用 Android Device Monitor 来分析朋友圈发布图片的界面实现原理.如果需要分析其他应用的界面实现也是采用这种方法哦. 打开 Android Device Mo ...

  8. android 微信高仿,Android 高仿微信发朋友圈浏览图片效果(转)

    最近一直在高仿微信.高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 这里写图片描述 下面就来说一下具体怎么实现的: 实现思路 1.首先我们要获取数据源, ...

  9. Android 高仿微信发朋友圈浏览图片效果

    最近一直在高仿微信.高仿微信,今天小编再给大家分享一个仿微信发朋友圈浏览图片的效果.... 好了,先看一下效果吧: 下面就来说一下具体怎么实现的: 实现思路 1.首先我们要获取数据源,数据源就是我们的 ...

最新文章

  1. 1002: A+B for Input-Output Practice (II)
  2. Mysql将日期转为字符串
  3. c++字符加密_linux安全Linux下RAR加密解密
  4. 分析unix系统日期析取ftp登陆和断开信息
  5. 英文名字的取法 分享
  6. 分布式模式之Broker模式
  7. hdu 2197 本原串
  8. 关于嵌套类的调用更新问题
  9. java如何对一个表达式开根号_java实现开根号的运算
  10. 利用google地图获取位置经纬度坐标
  11. XML - 可扩展标记语言 (Extensible Markup Language)
  12. 练习愤怒的小鸟(抽象类、多态、重写)
  13. 菜鸟之如何让项目跑起来(适合小白看,不是小白的不要进来看了,浪费时间)
  14. 怎么上传云班课的计算机作业,云班课作业怎么提交_作业提交方法_咖绿茵手游站...
  15. python基础练习2(学python的多多少少听说过)
  16. C51——简单的防盗报警器
  17. ubutnu18+cuda11.1+cudnn8.0.4+nvidia-driver-465
  18. core dump磁盘报警问题排查过程
  19. python用类名直接调用方法_一文读全 Python 的面向对象编程方法
  20. 个人微信api接口调用-微信群管理

热门文章

  1. TideSec远控免杀学习一(免杀基础+msfvenom隐藏的参数)
  2. 中国排行前十的服务器供应商
  3. 关于ArcGIS Map OSM不能在ArcToolbox不能显示的问题
  4. 常微分方程(Ordinary Differential Equation I)
  5. Linux如何学(新手入门必看)
  6. abaqus子程序开发学习笔记
  7. 抓住本质问题:读《戒嗔的白粥馆》 有感
  8. PO/POJO/BO/DTO/VO的区别
  9. plc实验报告流程图_plc实验报告plc实报告.doc
  10. PLC实验:天塔之光控制