Android学习之GridView图片布局适配经验
開始解说这篇博客之前,我想问一下,当布局相似GridView这样的多列布局时,我们该怎么布局,才干更好的去适配呢?
扣张图来展示一下
比如这样的需求,三张图片均分屏幕
实现方法:
1.切图固定,比如是1080x1920。
在固定分辨率上非常好计算,也非常好适配。但有个问题。换了不同的分辨率,就须要做不同的适配。针对不同的分辨率即可计算。这样也能实现。可是太麻烦了,由于各种分辨率的手机层出不穷,适配不止啊。
2.就是本篇博客记叙的重点实现方式。
不用通过固定的大小来设置图片大小。那么怎么做呢?上面已经说过。这样的需求是将屏幕三分。那么获取屏幕宽度。在动态设置图片宽度为0.3屏幕宽度就能非常好的解决这个适配的问题。那么宽度攻克了,高度怎么解决呢?
一般来说。是依据宽高比来确定的,要么是1:1,要么是16:9等。宽高比能够让设计来确定,这样就能够依据获得的宽度来确定高度,哈哈,这样不就是全然解决适配问题了么。
说了这么多,也该上代码了
 //获取屏幕宽度
        int width = ((Activity) ivImage2.getContext()).getWindowManager().getDefaultDisplay().getWidth();
        ViewGroup.LayoutParams params = ivImage2.getLayoutParams();
        //设置图片的相对于屏幕的宽高比
        params.width = width/2;
        params.height = width/3 ;
        ivImage2.setLayoutParams(params);
非常easy吧。在adapter中,实例化ImageView后,调用这几句代码,当然宽高比依据详细需求来说。
另外。xml中ImageView设置宽高都应该为
android:layout_width="wrap_content"
android:layout_height="wrap_content"
这样整个适配就完毕了,记录工作中的小成长。谢谢。
Android学习之GridView图片布局适配经验的更多相关文章
- Android学习之——GridView
		
背景知识 GridView在Android开发中和ListView一样经常被使用.如我们经常使用的快图浏览,里面就有将图片的布局改为网格(即GridView)的选项.还有约X神器——陌陌的搜索界也是用 ...
 - Android学习笔记之图片轮播...
		
PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息... ...
 - Android学习笔记④——页面的布局方式
		
FrameLayout(帧布局) 这个布局的特点是简单的默认把每一个视图组件都放在边框内且放在左上角,即使添加多个视图组件,他们也都是重叠在左上角,新的视图会遮挡住旧的视图.可以根据gravity来改 ...
 - Android学习笔记(11):线性布局LinearLayout
		
线性布局LinearLayout是指在横向或是竖向一个接一个地排列.当排列的组件超出屏幕后,超出的组件将不会再显示出来. LinearLayout支持的XML属性和相应方法如表所看到的: Attrib ...
 - android学习笔记三--Activity 布局
		
1.线性布局 标签 :<LinearLayout></LinearLayout> 方向:android:orientation, 垂直:vertical 水平:Horizont ...
 - Android学习:简易图片浏览
		
这个例子学习混合使用XML布局和代码来控制UI,习惯上把变化小.行为固定的组件放在XML布局文件中管理,而那些变化较多.行为控制复杂的组件则交给Java代码来管理. 先在布局文件中定义一个线性布局容器 ...
 - Android学习系列(5)--App布局初探之简单模型
		
人类科技的进步源自探索,探索来自于发现本原,当然App布局没这么先进,本文也只是一个归类总结.这篇文章是Android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. Androi ...
 - Android学习笔记:FrameLayout布局基础
		
FrameLayout布局的特点是:所有放在布局里的视图组件,都按照层次堆叠在屏幕的左上角,后面的视图组件覆盖前面的. 当然,组件本身是可以控制自己的内部布局的. 一种常见的场景是可以在FrameLa ...
 - Android学习笔记_38_图片的拖动、缩放功能和多点触摸
		
一.基础知识: 引用 理论上 Android可以处理 多达256 个手指的触摸,大概只有章鱼哥能享受这种技术带来的便利.就编程人员来说,编写多点触摸和单点触摸的方式几乎一模一样.其奥秘在于Motion ...
 
随机推荐
- HTML乱码问题
			
第一:定义网页显示编码.如果不定义网页编码,那么我们浏览网页的时候,IE会自动识别网页编码,这就有可能会导致中文显示乱码了.所以我们做网页的时候,都会用“<meta http-equiv=”Co ...
 - 构建基于Javascript的移动CMS——生成博客(二).路由
			
在有了上部分的基础之后.我们就能够生成一个博客的内容--BlogPosts Detail.这样就完毕了我们这个移动CMS的差点儿基本的功能了,有了上节想必对于我们来说要获取一个文章已经不是一件难的事情 ...
 - iOS 常见面试图总结2
			
1.请简述storyboard和xib的差别? 一个project中.能够有多个xib文件,一个xib文件相应着一个视图类控制器,和多个视图. 然而.使用 storyboard时,一个project仅 ...
 - EntityFramework 找不到方法:“Void System.Data.Entity.DbModelBuilder.RegisterEntityType
			
问题原因,EF当前版本没有该方法,将EF版本升级即可. 1.packages.config <package id="EntityFramework" version=&qu ...
 - UVA 11000- Bee   递推
			
In Africa there is a very special species of bee. Every year, the female bees of such species give b ...
 - Laravel异常处理
			
Laravel异常处理 标签(空格分隔): php 自定义异常类 <?php namespace App\Exceptions; use Throwable; use Exception; cl ...
 - 关于getchar()的使用
			
'\n'表示换行.如果用键盘敲一下回车键的话,getchar会返回一个换行符.!='\n'意思是不等于换行符.ch应该是前边定义的一个char型变量, getchar()是一个从缓冲区获取字符的函数, ...
 - Centos7 minimal 系列之桥接模式联网(二)
			
一.桥接模式联网 之前用NAT模式连接网络,Centos是可以上网,而且Centos可以ping通主机,但是主机ping不通虚拟机.后来发现Nat模式只能由内而外. 1.1设置虚拟机的网络适配器 1. ...
 - AlertDialog的使用
			
1.Alertdialog的几种形式: 2.第一种:简单对话框 AlertDialog.Builder localBuilder = new AlertDialog.Builder(this); lo ...
 - SQL Server死锁排查
			
1. 死锁原理 根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态. 死锁的四个必要条件:互斥条件(Mutua ...