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"

这样整个适配就完毕了,记录工作中的小成长。谢谢。

原文地址:https://www.cnblogs.com/zhchoutai/p/8453167.html

时间: 2024-08-23 08:17:02

Android学习之GridView图片布局适配经验的相关文章

Android学习笔记之图片轮播...

PS:一个bug又折腾了一个下午....哎... 学习内容: 1.Android利用ViewPager和PagerAdapter实现图片轮播... 2.使用反射机制获取Android的资源信息...     图片轮播是非常常见的一种动画效果,在app中也是很常用的一个效果,这里就简单的来实现一下这个功能,Android中想要实现图片轮播,需要使用到ViewPager这个控件来实现,这个控件的主要功能是实现图片的滑动效果...那么有了滑动,在滑动的基础上附上图片也就实现了图片轮播的效果...这个控

Android学习之——GridView

背景知识 GridView(九宫格)在Android开发中和ListView一样经常被使用.如我们经常使用的快图浏览,里面就有将图片的布局改为网格(即GridView)的选项.                  定义 GridView is a ViewGroup that displays items in a two-dimensional, scrollable grid. The grid items are automatically inserted to the layout us

Android学习笔记-Activity的布局

线性布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"

Android学习笔记:App屏幕适配相关

一谈到Android开发,就少不了拉扯到屏幕适配问题,为什么要屏幕适配?原因很简单,因为Android手机相关设备款式型号太多太多(据统计,2012年支持Android的设备共有3997种,2013年达到11868种,到2014年时高达18796种,现在会更多),不同的设置屏幕大小不同,如果我们用单一的方式去就对待所有的手机,那结果可想而知!所以我们需要针对不同设备做屏幕适配. 谈到尺寸,我们就要涉及到相关的概念: 1,屏幕尺寸:指设备屏幕对角线的长度,一般以英寸(inch)为单位, 2,屏幕分

Android学习笔记:FrameLayout布局基础

FrameLayout布局的特点是:所有放在布局里的视图组件,都按照层次堆叠在屏幕的左上角,后面的视图组件覆盖前面的. 当然,组件本身是可以控制自己的内部布局的. 一种常见的场景是可以在FrameLayout上放多个图片视图,来实现动画. 我们来看一个简单例子: 1.创建一个app 2.创建主Activity,该Activity采用的是 FrameLayout布局,其布局文件的内容如下: <?xml version="1.0" encoding="utf-8"

Android学习之压缩图片到指定大小

关于图片压缩,是为了上传服务器时有些地方有大小限制,因此,这里我总结了两种方法,个人感觉方法一比较准确一点. 方法一: * 图片压缩方法一 * * 计算 bitmap大小,如果超过64kb,则进行压缩 * * @param bitmap * @return */ private Bitmap ImageCompressL(Bitmap bitmap) { double targetwidth = Math.sqrt(64.00 * 1000); if (bitmap.getWidth() > t

Android学习系列(23)--App主界面实现

在上篇文章<Android学习系列(22)--App主界面比较>中我们浅略的分析了几个主界面布局,选了一个最大众化的经典布局.今天我们就这个经典布局,用代码具体的实现它. 1.预览图先看下最终的界面设计图:    上面顶部是一个9patch背景图片+标题文字:下面底部是5个tab标签,表示应用的5大模块.中间内容部分则是各个模块的具体内容,可以再分类,或者直接显示内容. 2.准备素材按照上篇文章的界面,我们需要事先提供两大方面的素材:顶部+底部.顶部的素材非常简单,最重要的是背景(9patch

android学习之--网格视图(GridView)和图像切换器(ImageSwitcher)

         GridView用于在界面上按行.列分布显示多个组件.GridView和ListView有共同父类:AbsListView.GridView与ListView的区别在于:ListView只在一个方向上分布,GridView在两个方向上分布.所以使用GridView时一般都指定numColumns大于1,否则该属性默认值为1,就意味着改GridView只有一列,那就变成了ListView GridView的xml属性 android:strtchMode 的值为:      Im

Android布局文件经验

1.父控件中含有多个子控件时,往往遵循长子优先的原则,即长子如果很大可能占满父空间,使次子们出局: 2.假设TableLayout有2行,其中一行未设定列间长度比例,而另一行设定了,则未设定行可能也会遵循设定行的列间长度比例: 3.在某个区域(如TableLayout中某个单元格)显示某张超大的图片,希望图片总是自适应单元格而不是把单元格撑爆.解决方案:将单元格放在LinearLayout中,给LinearLayout设置android:layout_width="wrap_content&qu