首页
学习
活动
专区
圈层
工具
发布

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

最近项目要求上传多图并且多图显示,而且要规则的显示,就像微信朋友圈的图片显示一样。 想了一下用GridView再适合不过了,GridView可以动态加载图片的数量,而且还比较规律。...(3); //默认设置在3列图片 //上传成功传值给adapter picAdapter = new PictureAdapter(this, 1, appItem_file...GridView的列数为3,根据图片的数量动态设置列数。...,需要注意的是在用SquareLayout的时候要设置它的高宽都是match_parent。...ImageView的上部分位置 8)fitXY:把原图按照指定的大小在View中显示,拉伸显示图片,不保持原比例,填满ImageView. ok就先这样了,以后我会经常更新博客和大家分享的

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android 应用开发】AndroidUI设计之 布局管理器 - 详细解析布局实现

    ()方法 是获取不到组件的宽度和高度的, 这两个方法返回的是0, Android的运行机制决定了无法在组件外部使用getHeight()和getWidth()方法获取宽度和高度; 组件内可以获取 : 在自定义的类中可以在...()方法, 传入刚才创建的LayoutParams对象, 并更新View的相应的LayoutParams属性值, 向容器中添加该组件; 代码中动态设置布局属性 :  a....组件增加行 : 如果直接向TableLayout中添加组件, 就相当于直接添加了一行; 列宽 : TableLayout中, 列的宽度由该列最宽的单元格决定, 整个表格的宽度默认充满父容器本身; 2....属性标签, 属性值是要收缩的列, 注意,列标从0开始; 拉伸按钮 : 在TableLayout标签中,设置android:shrinkable属性标签, 属性值是要拉伸的列, 注意, 列表从0开始; 代码...设置横跨四列 : 设置TextView和按钮横跨四列android:layout_columnSpan 为4, 列的合并 就是占了一行; textView的一些设置:  设置textView中的文本与边框有

    3K40

    GridLayout 使用总结「建议收藏」

    文章目录 一、简介 二、常用属性介绍 三、平分问题 四、小米计算器效果 五、动态加载 一、简介 ---- GridLayout是Android4.0引入的网格布局,使用它可以减少布局嵌套。...指定该单元格在第几列显示 android:layout_row 指定该单元格在第几行显示 android:layout_columnSpan 指定该单元格占据的列数 android:layout_rowSpan...指定该单元格占据的行数 android:layout_gravity 指定该单元格在容器中的位置 android:layout_columnWeight (API21加入)列权重 android:layout_rowWeight...,需要我们手动设置宽高,否则达不到想要的效果 三、平分问题 ---- GridLayout在API21时引入了android:layout_columnWeight和android:layout_rowWeight...单独设置app:layout_columnWeight时,这一列的所有item都设置为这个属性,才能达到预期效果,否则这一列中设置了该属性的item,都会被隐藏,显示不出来 单独设置app:layout_rowWeight

    2.4K30

    Android技能树 — 屏幕适配小结

    所以我们只需要通过勾股定理获取对角线上的像素值,再除以屏幕尺寸值就可以了。 ? 为简便起见,Android 将所有屏幕密度分组为六种通用密度: 低、中、高、超高、超超高和超超超高。...所以我们可以用一种单位来代替,但是这种单位可以在不同的屏幕环境下,值是不同的。比如我们就把这个单位当做“haha”。...: 因为要动态获取父控件的控件,同时把新的值赋值给子控件,所以该行为在onMeasure方法中执行。...然后在不同手机上动态的计算出来数值,是不是感觉和百分比布局有点相似。...---- 2.5 动态更改density 一种极低成本的Android屏幕适配方式 Android屏幕适配很麻烦吗?不!太简单了。

    94430

    AutoFlowLayout-多功能流式布局与网格布局控件

    一、AutoFlowLayout应用场景 流式布局,在很多标签类的场景中可以用的;而网格布局在分类中以及自拍九宫格等场景很常见。如下所示: ? 如此使用频繁而又实现简单的控件,怎能不自己撸一个呢?...最后一个是带间隔以及分割线的,由于录屏原因,只在跳过去的一瞬间显示了粉红色的一条线。真实如下图所示,可以定义横竖间距的大小,以及分割线的颜色,宽度。 ?...maven { url 'https://jitpack.io' } } } ②.在 module 的 build.gradle 文件中添加依赖 dependencies {...compile 'com.github.LRH1993:AutoFlowLayout:1.0.5' } 2.属性说明 下表是自定义的属性说明,可在xml中声明,同时有对应的get/set方法,可在代码中动态添加...View的宽高,padding,margin以及横竖间距,来获得最终ViewGroup的宽高。

    1.4K100

    【Android 内存优化】Android 原生 API 图片压缩代码示例 ( PNG 格式压缩 | JPEG 格式压缩 | WEBP 格式压缩 | 动态权限申请 | Android10 存储策略 )

    use cases and best practices 应用数据和文件 将图片压缩后 , 存储到 SD 卡中 , 这里 涉及到了在 Android 10 系统中动态申请权限 , 设置旧的存储访问策略...( 该策略将在 Android 11 中无效 ) ; 这里简要介绍暂时性的解决方案 ; 1....android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ② 旧存储策略 : 配置在 application 标签中 , 特别注意该策略将在...在 Activity 中动态申请权限 : 在 Activity 中调用 initPermissions(); 方法 , 即可动态申请 SD 卡访问权限 ; /** * 需要获取的权限列表...配置权限 设置旧存储策略 动态申请权限 即可在 Android 10 中访问 SD 卡 , 如果在 Android 11 访问 , 查看章节开始的文档 ; 四、 完整源码示例 ---- 图片压缩源码示例

    87720

    Android 图片裁剪

    android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 这两个权限在Android6.0及以上版本属于危险权限,需要动态申请,下面来写权限申请的代码吧...可以看到系统的剪裁并不是很彻底,gif中虽然演示的剪裁时是一个圆形,但实际上剪裁的是一个正方形的,这其实和Android系统版本及设置的参数有关系。...我在荣耀8和荣耀20i上运行都是这样的,对应的版本是8.0和10.0,效果基本一致。那么下面修改一下参数试试看,如下图我修改了宽高比例和剪裁后的宽高。 ? 再运行一下: ?...可以看到通过该参数真的就不一样了不是吗?...这个可以通过外力来解决,圆形图片很多方式能做到,比如第三方框架、自定义View等。 还记得刚才用过的Glide吗?

    3K20

    Android开发中TableLayout表格布局

    Android开发中TableLayout表格布局 一、引言         在移动端应用程序开发中,常常会使用到表格布局,iOS和Android开发框架中都提供了独立的表格视图控件供开发者使用,例如...iOS中的UITableView、UICollectionView,Android中的ListView、GridView等。...除了独立的视图控件外,Android中还提供了一个布局容器类TableLayout,使用其也可以进行方便的表格布局。        ...TableRow中可以添加其他视图,每个视图被作为一列处理,通过TableRow的内部类LayoutParams来设置TableRow内部视图的布局方式,其中主要可以通过设置宽高或者设置权重来定制每列视图元素的尺寸...默认的列宽是评分整个行宽,可以通过指定宽度或者权重来修改特定列的列宽。

    1.9K30

    Android 图片裁剪 (附源码)

    android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 这两个权限在Android6.0及以上版本属于危险权限,需要动态申请,下面来写权限申请的代码吧...运行一下: 可以看到系统的剪裁并不是很彻底,gif中虽然演示的剪裁时是一个圆形,但实际上剪裁的是一个正方形的,这其实和Android系统版本及设置的参数有关系。...我在荣耀8和荣耀20i上运行都是这样的,对应的版本是8.0和10.0,效果基本一致。那么下面修改一下参数试试看,如下图我修改了宽高比例和剪裁后的宽高。...再运行一下: 可以看到通过该参数真的就不一样了不是吗?...这个可以通过外力来解决,圆形图片很多方式能做到,比如第三方框架、自定义View等。 还记得刚才用过的Glide吗?

    2.1K30

    笔记50 | Android自定义View(一)

    为什么要测量宽高尺寸?我在刚学自定义View的时候非常无法理解!因为我当时觉得,我在xml文件中已经指定好了宽高尺寸了,我自定义View中有必要再次获取宽高并设置宽高吗?...既然我自定义的View是继承自View类,google团队直接在View类中直接把xml设置的宽高获取,并且设置进去不就好了吗?那google为啥让我们做这样的“重复工作”呢?...客官别急,马上给您上茶~ 在学习Android的时候,我们就知道,在xml布局文件中,我们的 layout_width和 layout_height参数可以不用写具体的尺寸,而是 wrap_content...这两个设置并没有指定真正的大小,可是我们绘制到屏幕上的View必须是要有具体的宽高的,正是因为这个原因,我们必须自己去处理和设置尺寸。...我们知道,我们在设置宽高时有3个选择:wrapcontent、matchparent以及指定固定尺寸,而测量模式也有3种:UNSPECIFIED,EXACTLY,AT_MOST,当然,他们并不是一一对应关系哈

    69440

    前端-video 标签沉浸式播放解决方案

    “沉浸播放式”这个概念是我从Android开发里面的沉浸式引申过来的一个概念,沉浸式其实就是隐藏页面顶部的status bar和底部的navigation bar之后呈现出来的页面,一般用户很容易把沉浸式状态栏和透明化状态栏混为一谈...iphoneX下的表现情况 有人会觉得奇怪为什么我们设置了video的宽高都是百分百上下还漏出了两个白条,这里其实是object-fit这个属性在作怪,既然默认的是contain,我们就改为fill吧,...object-fit中的cover属性,没错,这个属性可以让我们的视频等比例缩放,如果宽高不匹配会对处理对象做裁剪操作,来我们看一下现在在微信里面的效果: ?...,因为video是在最上一级的,但是两种方式例外,一个是微信把你们的域名加入白名单,这种可以在Android手机的video上随意放置dom元素,IOS本身没有这个限制,另一种更为通用的方式是用微信x5...,目的就是为了把视频长度拉大,让”全屏”按钮消失在视线内,实际这个值可以自己尝试修改,让后宽就是此时高的1/78倍,然后使用绝对布局去设置视频的左边距,就可以达到等比缩放的效果,同理可以理解处理宽屏手机的代码部分

    2.3K40

    为什么你的自定义View wrap_content不起作用?

    前言 自定义View是Android开发中非常常用的知识 可是,在使用过程中,有些开发者会发现:为什么自定义View 中设置的wrap_content属性不起作用(与match_parent相同作用...问题分析 问题出现在View的宽 / 高设置,那我们直接来看自定义View绘制中第一步对View宽 / 高设置的过程:measure过程中的onMeasure()方法 onMeasure() protected...由于在getDefaultSize()的默认实现中,当View被设置成wrap_content和match_parent时,View的大小都会被设置成子View MeasureSpec的specSize...问题总结 在onMeasure()中的getDefaultSize()的默认实现中,当View的测量模式是AT_MOST或EXACTLY时,View的大小都会被设置成子View MeasureSpec的...总结 本文对自定义View中 wrap_content属性不起作用进行了详细分析和给出了解决方案 接下来,我我将继续对自定义View的应用进行分析,有兴趣的可以继续关注Carson_Ho的安卓开发笔记

    2.8K30

    当大潮退去没有谁还能Android这行“裸泳”,10家大厂面试题,掌握这些让你轻松面试

    的原理 10.在项目中有直接使用tcp,socket来发送消息吗 11.如何在网络框架里直接避免内存泄漏,不需要在presenter中释放订阅 12.生命周期都是通过什么调用的?有用过AIDL吗?....ViewPager中嵌套ViewPager怎么处理滑动冲突 13.android源码中有哪些设计模式 14.说说binder机制的原理 点击我的GitHub,获取Android与算法面试题和答案。...15.为什么view.post可以获得宽高,有看过view.post的源码吗?...关于这一点,在我当时确立好Android方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。...另外,我自己也珍藏了好几套视频,有需要的我也可以分享给你。

    1.2K20

    Android自定义View:为什么自定义View wrap_content不生效?

    前言 自定义View是Android开发中非常常用的知识 可是,在使用过程中,有些开发者会发现:为什么自定义View 中设置的wrap_content属性不起作用(与match_parent相同作用)?...wrap_content与match_parent区别: wrap_content:视图的宽/高被设定成刚好适应视图内容的最小尺寸 match_parent:视图的宽/高被设置为充满整个父布局 (在Android...问题分析 问题出现在View的宽 / 高设置,那我们直接来看自定义View绘制中第一步对View宽 / 高设置的过程:measure过程中的onMeasure()方法 onMeasure() protected...由于在getDefaultSize()的默认实现中,当View被设置成wrap_content和match_parent时,View的大小都会被设置成子View MeasureSpec的specSize...问题总结 在onMeasure()中的getDefaultSize()的默认实现中,当View的测量模式是AT_MOST或EXACTLY时,View的大小都会被设置成子View MeasureSpec

    1.1K21

    Android布局详解

    大家好,又见面了,我是你们的朋友全栈君。...坐标 ) horizontal 水平方向(沿着 x 坐标) 线性布局中可以使用 android:layout_weight 属性设置权重,可以将 LinearLayout 中剩下的部分进行比例划分 LinearLayout...” /> 其中孩子中可以使用 android:layout_gravity 来调整自己在父容器中的位置 ( 主动权在孩子身上 ) ,跟 android:gravity 不一样的是...android:collapseColumns:设置要隐藏的列 列的索引从0开始,shrinkColumns和stretchColumns可以同时设置。...TableLayout(表格布局)其实有点大同小异; 不过新增了一些东西 1、跟LinearLayout(线性布局)一样,他可以设置容器中组件的对齐方式 2、容器中的组件可以跨多行也可以跨多列(相比TableLayout

    1.9K20

    一篇文章搞定多列布局--等宽,等高,自适应

    多列布局在一个网页设计中非常常见,不仅可以用来做外部容器的布局,在一些局部也经常出现多列布局,比如下面圈出来的都是多列布局: 定宽 + 自适应 定宽 | 自适应 我们先讲一个最简单的两列布局,左边列定宽...这时候如果左右两边要间距,是没法设置margin的,因为他们是单元格,但是我们可以在左边子级上设置padding-right....这种模式下,浏览器在接收表格第一行后就可以渲染出来,速度更快。 auto: 这是默认值,表示表格内容优先,列的宽度是由列单元格中没有折行的最宽的内容设定的。...等宽:table 用table就不用写死25%,因为在table-layout:fixed的情况下,列宽不是根据内容计算的,默认列宽是相等的,天生就是等宽。...table:布局中我们用到了表格的两个特性,一个是通过table-layout来控制是布局优先还是内容优先,如果将其设置为fixed,可以将一列宽度固定,不受内容长度影响。

    3.5K10

    1.之Andriod布局 VS WinPhone布局

    属性来控制元素的有效宽高,如果不设置这两个属性则以子元素的实际宽高来排序。...layout_alignBottom="@+id/btn1"/> 85 效果图如下(其实RealtiveLayout还允许子元素设置更多的属性来控制相对布局,我在上面列的只是几个比较常见的...,有兴趣的可以翻阅一下官方的文档(sdk/docs/reference/android/widget/RelativeLayout.LayoutParams.html)或者在IDE中实验一下其他的布局属性...、通过android:stretchColumns控制列的拉伸、通过android:shrinkColumns控制列的收缩,但是无法设置固定的行数和列数(行数和列数按行列上出现的最大子元素数量为准);子元素可以通过...WinPhone-Grid:Grid是WinPhone开发中最常用的布局容器,可以通过设置行数、列数以及行列的宽高(可以是固定值或者比例值或者自动根据子元素来确定),子元素通过附加属性Grid.Row、

    1.4K80
    领券