Android学习之GridView图片布局适配经验
2016-03-29 23:15
375 查看
开始讲解这篇博客之前,我想问一下,当布局类似GridView这种多列布局时,我们该怎么布局,才能更好的去适配呢?
扣张图来展示一下
![](http://img.blog.csdn.net/20130731212650156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaDNjNGxlbm92bw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
例如这种需求,三张图片均分屏幕
实现方法:
1.切图固定,例如是1080x1920。
在固定分辨率上很好计算,也很好适配,但有个问题,换了不同的分辨率,就需要做不同的适配,针对不同的分辨率就行计算,这样也能实现,但是太麻烦了,因为各种分辨率的手机层出不穷,适配不止啊。
2.就是本篇博客记叙的重点实现方式。
不用通过固定的大小来设置图片大小,那么怎么做呢?上面已经说过,这种需求是将屏幕三分,那么获取屏幕宽度,在动态设置图片宽度为0.3屏幕宽度就能很好的解决这个适配的问题,那么宽度解决了,高度怎么解决呢?
一般来说,是根据宽高比来确定的,要么是1:1,要么是16:9等,宽高比可以让设计来确定,这样就可以根据获得的宽度来确定高度,哈哈,这样不就是完全解决适配问题了么。
说了这么多,也该上代码了
很简单吧,在adapter中,实例化ImageView后,调用这几句代码,当然宽高比根据具体需求来说。
另外,xml中ImageView设置宽高都应该为
这样整个适配就完成了,记录工作中的小成长,谢谢。
扣张图来展示一下
例如这种需求,三张图片均分屏幕
实现方法:
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);
很简单吧,在adapter中,实例化ImageView后,调用这几句代码,当然宽高比根据具体需求来说。
另外,xml中ImageView设置宽高都应该为
android:layout_width="wrap_content" android:layout_height="wrap_content"
这样整个适配就完成了,记录工作中的小成长,谢谢。
相关文章推荐
- 自定义Android图片轮播控件
- Android Volley完全解析(一),初识Volley的基本用法
- Android studio 页面布局无法显示问题
- android-Ultra-Pull-To-Refresh
- Android主题更换简单实践
- java.lang.ClassCastException: android.widget.ListView 替换控件出错 如自定义mlistview继承listview
- android 上传图片到服务器
- Android:Material系列:ActionBar-->Toolbar
- 我的博客之第一篇
- Android——滚动视图(ScrollView)图片视图(ImageView)、状态开关按钮(ToggleButton)、时钟
- Android屏幕适配全攻略(最权威的官方适配指导)
- Android中ActionBar的使用
- Android——selector背景选择器
- Service完全解析
- Service、IntentService
- Android中禁止SlidingPaneLayout的侧滑功能
- Android中禁止SlidingPaneLayout的侧滑功能
- Android组件之广播(Broadcast)
- [android] 安卓进程优先级&为什么使用服务
- Android 监听软键盘搜索键