• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android 交错 GridView,androidgridview

Android 交错 GridView,androidgridview

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android gridview,android gridview用法,android 横向gridview,android gridview属性,android中gridview等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android 交错 GridView,androidgridview


下载 Demo

交错 GridView


交错 GridView 只是具有不等大小行、多个列的 GridView。你可能已经使用过 Pinterest,Expedia 或 Etsy Android app。

目前,已经有 2、3 个很不错的开源库。

交错 GridView 库

  • Staggered GridView by Etsy
  • Staggered GridView by Maurycy Wojtowicz

下面说明最流行使用最广泛的 Etsy 的交错 gridview。

Etsy 交错 GridView


自定义的交错 GridView 是根据 AbsListView 类扩展的,它当然也就支持 AbsListView.OnScrollListener。

功能

  • 可以配置横向和纵向的列数量。
  • 跨方向变化的异步行位置。
  • 可配置项的边距(margin)
  • 支持页眉(header)和页脚(footer)。
  • 内部填充(Internal padding ),不影响页眉和页脚。

Etsy 的交错 gridview 不支持项的长按事件和选择器 drawables,而 Maurycy 的交错 gridview 则支持长按事件。

环境

  • Windows 2008 R2 64 位
  • Eclipse ADT V22.6.2,Android 4.4.2(API 19)
  • SAMSUNG GT-8618,Android OS 4.1.2

项目结构

2014-09-05_111749_副本

图 1 项目结构

  • StaggeredGrid 项目是 com.etsy.android.grid 库。
  • StaggeredGridDemo 项目是示例。

示例:Etsy 交错 GridView

1_副本

图 2 演示交错 GridView

  • 下载/包含库 com.etsy.android.grid

com.etsy.android.grid 库目前配置为只能通过 Gradle 生成,因此,如果您使用 Android Studio,那么你可以直接的方式包括这个库,作为 gradle 依赖来生成。如果你使用 Eclipse/ Ant,那么你必须执行额外的步骤。

对 Android Studio 环境:

repositories {
    mavenCentral()
}
 
dependencies {
    compile 'com.etsy.android.grid:library:x.x.x' // read below comment
}

对 Eclipse/Ant build:

下载 com.etsy.android.grid,并导入到项目。

  • 把 StaggeredGridView 放到你的布局——activity_sgv.xml
<com.etsy.android.grid.StaggeredGridView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/grid_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:column_count="@integer/grid_column_count"
    app:item_margin="8dp" />
  • 为 StaggeredGridView 定义行布局——row_grid_item.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/panel_content"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:descendantFocusability="blocksDescendants"
    android:orientation="horizontal" >
 
    <com.etsy.android.grid.util.DynamicHeightImageView
        android:id="@+id/imgView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop" />
 
</FrameLayout>

自定义行应该包含 DynamicHeightImageView 或 DynamicHeightTextView。

  • 自定义 adapter
public class SampleAdapter extends ArrayAdapter<String> {
 
    private static final String TAG = "SampleAdapter";
 
    private final LayoutInflater mLayoutInflater;
    private final Random mRandom;
    private static final SparseArray<Double> sPositionHeightRatios = new SparseArray<Double>();
 
    public SampleAdapter(Context context, int textViewResourceId,
            ArrayList<String> objects) {
        super(context, textViewResourceId, objects);
        this.mLayoutInflater = LayoutInflater.from(context);
        this.mRandom = new Random();
    }
 
    @Override
    public View getView(final int position, View convertView,
            final ViewGroup parent) {
 
        ViewHolder vh;
        if (convertView == null) {
            convertView = mLayoutInflater.inflate(R.layout.row_grid_item,
                    parent, false);
            vh = new ViewHolder();
            vh.imgView = (DynamicHeightImageView) convertView
                    .findViewById(R.id.imgView);
 
            convertView.setTag(vh);
        } else {
            vh = (ViewHolder) convertView.getTag();
        }
 
        double positionHeight = getPositionRatio(position);
 
        vh.imgView.setHeightRatio(positionHeight);
 
        ImageLoader.getInstance().displayImage(getItem(position), vh.imgView);
        return convertView;
    }
 



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android 交错 GridView,androidgridview
  • Android新手入门2016(10)--GridView
  • 去除GridView选中时的蓝色背景,gridview选中蓝色
  • android gridview画分割线

相关文章

  • 2017-05-2614条Android Studio常用的的配置
  • 2017-05-26Android View的绘制流程,androidview绘制
  • 2017-05-26kvm性能优化
  • 2017-05-26Android常用英文词汇,不为命名纠结,android英文
  • 2017-05-26Your project path contains non-ASCII characters,containsnon-ascii
  • 2017-05-26Android自定义控件
  • 2017-05-26Android Studio之代码提示快捷键冲突设置,androidstudio
  • 2017-05-26组件RecyclerView的应用(一),组件recyclerview
  • 2017-05-26硅谷新闻3--使用Android系统自带的API解析json数据,androidjson
  • 2017-05-26linux2.4.18----25.文件系统的构建

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android Studio:Failed to resolve ***,androidresolve
    • Android进阶--Acticivity的启动模式,acticvity启动模式
    • Android之SystemUI加载流程和NavigationBar的分析
    • pull解析器: 反序列化与序列化,pull序列化
    • Android Doze模式源码分析,androiddoze
    • linux命令之tcpdump
    • 常用的adb命令,常用adb命令
    • Android中使用findViewByMe提升组件查找效率,光伏组件转换效率
    • Android N(API level 24.)废弃了Html.fromHtml(String),ios添加api废弃警告
    • Webview内存泄漏解决办法1,webview泄漏

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有