分析

因项目需求需要实现仿微信朋友圈单张图片展示效果,经分析微信单张图片的显示效果分两种情况:

1.当需要展示的图片实际宽度占满全屏时,发现高度大于指定高度,此时固定ImageView控件高度为最大高度,宽度则按图片比例进行缩放;

2.当需要展示的图片实际宽度占满全屏时,发现高度小于或等于指定高度,此时ImageView控件的高宽度都按图片比例进行缩放;

两种情况示例图如下:(第一条item表示第一种情况,第二条item表示第二种情况)

实现

通过ImageView的按比例缩放功能及限定最大高度配合实现

示例代码

<ImageViewandroid:id="@+id/iv_picture"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginBottom="10dp"android:adjustViewBounds="true"android:maxHeight="240dp"android:scaleType="fitStart" />

说明:

1.通过设置 android:layout_height="wrap_content" 与 android:adjustViewBounds="true"  实现填充图片后控件高度按比例缩放

2.通过 android:maxHeight="240dp" 限定填充图片后的最大高度,防止图片过长影响浏览

3.通过 android:scaleType="fitStart" 调整图片填充初始位置

Demo地址:https://github.com/ziwenL/WechatMomentsOnlyPictureDemo

Android 仿朋友圈单张图片限定宽高超出时按比例缩放效果实现相关推荐

  1. android 动态修改控件的宽高

    今天,简单讲讲android如何动态设置控件的宽高. 这个其实也比较简单,但是之前做的时候出现了问题,代码里设置的宽高是dx,需要先转成dp.下面以RelativeLayout作为例子,简单记录一下. ...

  2. 小程序图片自适应宽高,保持图片比例不变

    小程序图片自适应宽高,保持图片比例不变 小程序中,可根据需求给image设置 mode属性来控制图片的裁剪.缩放模式 如果要保持图片在容器内不变形可设置mode属性为aspectFit 代码如下: / ...

  3. Android RecyclerView 列表加载图片宽高适配

    图片的宽度为手机屏幕宽度,高度自适应 adapter item布局 <ImageViewandroid:layout_width="match_parent"android: ...

  4. Android仿朋友圈照片定点放大和滑动查看(未完待续)

    最近公司的项目中有一个图片加载和查看功能实现,具体是说通过列表项加载小图片,点击放大图片并且可以左右翻页,放缩等等,类似于微信朋友圈的照片墙功能.拿到这个需求后我想了想,图片列表首选当然是Recycl ...

  5. 【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件

    博客地址 : http://blog.csdn.net/shulianghan/article/details/41520569 代码下载 : -- GitHub : https://github.c ...

  6. Android 仿微信多张图片选择器,适配android10系统,open failed: EACCES (Permission denied)

    实现效果 只需引入模块,比起依赖,更方便自定义 implementation project(':imagepicker') //图片加载 implementation 'com.github.bum ...

  7. Android获取UI控件的宽高

    一.概述 我们如果开发一些依赖于UI控件宽高的功能,那么自然会想到调用View的getHeigth()和getWidth()方法,对于新手来说,这里有一个坑,你在Activity中的onCreate( ...

  8. [Android][设置最小(大)宽高]

    #1.简介 TextView里定义的方法,据说是设置文本区域的宽高 android:maxWidth 关联方法: setMaxWidth(int) 属性说明: 设置文本区域的最大宽度 android: ...

  9. android linearlayout 方法,Android基础之获取LinearLayout的宽高

    前言 看到题目获取LinearLayout宽高,或许大家想到的解决方法如下: public void onCreate(Bundle savedInstanceState) { super.onCre ...

最新文章

  1. openresty编译添加stream-lua-nginx-module模块
  2. 【编程】堆(heap)和栈(stack)的区别
  3. 多线程编程之一——问题提出
  4. OpenGL 3D 选择
  5. Spring 钩子之BeanFactoryPostProcessor和BeanPostProcessor
  6. 通过java类的反射机制获取类的属性类型
  7. VS2019社区版(Community)试用30天过期的有效解决办法
  8. POSIX条件变量API函数
  9. 车脸检测 Adaboost 检测过程
  10. 物联网 终端设备_您拥有多少个物联网设备?
  11. pip安装mysql-python模块报错:cannot find -lmysqlclient_r
  12. 在Linux SSH全称,linux – 按名称获取打开的ssh连接列表
  13. Java怎么按照字母对单词排序_将一段字符串文本中的每个单词提取出来后按照字母顺序排序...
  14. 学习笔记15-L298N
  15. 服务器文件mdf,升级 .mdf 文件 - Visual Studio (Windows) | Microsoft Docs
  16. 【git】git强制覆盖单个文件
  17. 设计模式(二)—— 策略模式(其实就是面向接口编程的应用场景!)
  18. 因为现在的手机大部分都不能换电池,是不是手机使用1至2年就需要更换了?...
  19. CASAIM全自动3d测量仪自动检测差速器差壳全尺寸测量装配检测
  20. XM外汇官网 xm-cnfx.com 外汇新手交易者必备!选择交易商一定要看的7个方面

热门文章

  1. 【设计模式】一、是什么,为什么,怎么学
  2. QEMU(3) 参数解析
  3. C++人工智能相关书籍
  4. 扶贫?教育?地铁?这里有跨界也能实现的企业数字化新操作!
  5. 世界杯中隐藏的IoT物联网黑科技
  6. Spring Cloud Alibaba 2021.0.1.0 版本发布啦
  7. UR机器人双臂开发实例
  8. 用python计算100以内所有奇数的和_用python脚本来计算100以内奇数或者偶数之和
  9. 思科wlc产品文档_思科认证EI CCIE和SP CCIE 怎么选?零基础入门或是网工深造都建议收藏...
  10. 安卓开发之视频播放器