文档章节

GridView横向显示 实现图片预览

北ing
 北ing
发布于 2015/10/20 19:22
字数 408
阅读 48
收藏 0
点赞 0
评论 0

先附效果图:
这里写图片描述

实现原理:布局文件中在GridView外套一层HorizontalScrollView

1) 定义主界面布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="${relativePackage}.${activityClass}" >

    <HorizontalScrollView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:scrollbars="none" >
        <LinearLayout  android:layout_width="wrap_content" android:layout_height="wrap_content" >
            <GridView  android:id="@+id/gridView" android:layout_width="match_parent" android:layout_height="match_parent" />
        </LinearLayout>
    </HorizontalScrollView>
</LinearLayout>

2) 定义一个item:只显示一张图片

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" android:gravity="center">
    <ImageView  android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/mm3" />
</LinearLayout>

3)注意在布局文件中gridview标签中没有定义其他的属性,需要在程序中动态获取才行。

public class MainActivity extends Activity {
    GridView gridView;
    int[] data = { R.drawable.mm1, R.drawable.mm2, R.drawable.mm3,
            R.drawable.mm4, R.drawable.mm5, R.drawable.mm6, };
    int count = data.length;// 总项数
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        gridView = (GridView) findViewById(R.id.gridView);

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int columnWidth = dm.widthPixels;//由一屏幕显示的项数决定
        LayoutParams params1 = new LayoutParams(
                count * columnWidth + count, LayoutParams.WRAP_CONTENT);//
        gridView.setLayoutParams(params1);//设置高和宽
        gridView.setColumnWidth(columnWidth/1);//根据你一屏显示的项数决定
        gridView.setHorizontalSpacing(1);
        gridView.setStretchMode(GridView.NO_STRETCH);
        gridView.setNumColumns(count);//设置一行显示的总列数

        ImageAdapter adapter = new ImageAdapter();
        gridView.setAdapter(adapter);       
    }


    class ImageAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return data.length;
        }

        @Override
        public Object getItem(int position) {
            return data[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item, parent, false);
            ImageView imageView = (ImageView) convertView.findViewById(R.id.imageView);
            imageView.setImageResource(data[position]);
            return convertView;
        }
    }
}

LayoutParams params1 = new LayoutParams(
count * columnWidth + count, LayoutParams.WRAP_CONTENT);
关键就是这里,这里让gridView的宽度直接是一行显示时所有列宽的和。

源码实例

版权声明:本文为博主原创文章,未经博主允许不得转载。

© 著作权归作者所有

共有 人打赏支持
北ing
粉丝 0
博文 12
码字总数 17332
作品 0
海淀
图片处理工具

Android7.0 完美适配——FileProvider 拍照裁剪全解析 适配 android7.0 中的拍照相册裁剪功能 使用 photoView 实现可点击放大到全屏显示的控件,效果类似于微信朋友圈点开看大图 使用 photoV...

掘金官方 ⋅ 2017/12/11 ⋅ 0

Android 滑动效果基础篇(四)—— Gallery + GridView

Android系统自带一个GridView和Gallery两个控件,GridView网格显示,Gallery单个浏览,两者结合起来可以真正实现Gallery浏览图片效果。 本示例通过GridView和Gallery两个控件,模仿实现一个完...

长平狐 ⋅ 2013/01/06 ⋅ 0

Android RecyclerView 使用完全解析 体验艺术般的控件

转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/45059587; 本文出自:【张鸿洋的博客】 概述 RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过...

丁佳辉 ⋅ 2016/03/07 ⋅ 0

相机预览画面的时候,发现画面方向不对,可以通过程序判断来修改吗?

大多数的相机程序都使用横向拍照,这也是摄像头传感器的自然方向。 但是这并不影响您在竖屏的时候拍照,设备的方向信息会存储到图片的EXIF信息中。 可以通过函数 setCameraDisplayOrientatio...

天王盖地虎626 ⋅ 2015/08/11 ⋅ 6

一个完整的壁纸应用——[仿爱壁纸],从设计到实现的过程

一个完整的壁纸应用——[仿爱壁纸],从设计到实现的过程 正如我的GitHub上的README上说的,偶然之间发现了一个接口,觉得挺有意思的,于是乎,就开始着手的写一个壁纸类应用了,其实之前就一...

刘桂林 ⋅ 2017/01/21 ⋅ 0

Android .9.png图片的处理

android平台有多种不同的分辨率,很多控件的切图文件在被放大拉伸后,边角会模糊失真,在android平台下使用点九PNG技术,可以将图片横向和纵向同时进行拉伸,以实现在多分辨率下的完美显示效...

恰同学少年 ⋅ 2015/07/28 ⋅ 0

launcher修改--launcher架构解析

要想做好launcher,对其基本的架构了解是必须的,在这篇文章里,简单的介绍下launcher中类的构成和架构,首先,这篇文章中很多资源均从互联网中获得,感谢网友们的无私奉献,大家都共享,进步...

迷途d书童 ⋅ 2012/03/30 ⋅ 4

手机商城第四天,利用GridView和viewpager实现频道按钮和热门活动图片的展示

代码已经上传码云,有兴趣的小伙伴可以下载看看: https://git.oschina.net/joy_yuan/ShoppingMall 下面是这次的效果图: 其中哪些服饰、游戏、动漫等栏目以及下方的那个活动都是这次的内容。...

老婆的宝宝 ⋅ 2017/08/22 ⋅ 0

GridView & ListView (Android盒子开发)

一.GridView在Android4.4下关于焦点的bug的解决方式 Android4.4下,关于GridView有一个关于焦点的bug。这个bug并不容易被发现,但是在电视盒子的开发过程中就很明显。具体表现是,Gridview会...

SuShine ⋅ 2015/09/14 ⋅ 0

GridView实现分页功能

当GridView中显示的记录很多的时候,可以通过GridView的分页功能来分页显示这些记录。如果GridView是直接绑定数据库,则很简单:只要点击GridView空间左上角的小三角形,再弹出的选项中,将"...

leet123 ⋅ 2016/04/06 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部