如何实现这样效果的gridview实现分页功能

&&&&GridView实现选择多张图片效果
&GridView实现选择多张图片效果
GridView实现选择多张图片效果
若举报审核通过,可奖励20下载分
被举报人:
macro_xiao
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
VIP下载&&免积分60元/年(1200次)
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
关注并绑定CSDNID,送10个下载分
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
移动开发下载排行
您当前C币:0&&&可兑换 0 下载积分
兑换下载分:&
消耗C币:0&
立即兑换&&
兑换成功你当前的下载分为 。前去下载资源
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
GridView实现选择多张图片效果
所需积分:2
剩余积分:0
扫描微信二维码精彩活动、课程更新抢先知
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
GridView实现选择多张图片效果
剩余次数:&&&&有效期截止到:
你还不是VIP会员VIP会员享免积分 . 专属通道极速下载
VIP下载次数已满VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员
你的VIP会员已过期VIP会员享免积分 . 专属通道极速下载,请继续开通VIP会员Android基础控件(154)
本帖最后由 likeyou 于
21:01 编辑
在中做了实现Gallery的尝试,但是效果不好。使用的是TableLayout,出现了横向拖动图片的时候,因为有倾斜(轻微的竖向拖动),会整个列表竖向滚动。其实这个问题可以将TableRow中条目设置为clickable来解决。但是效果依然不好。
这次尝试通过GridView来解决问题,效果很好,见截图:
基本思路是:
每个可选的图,包括文字部分,是GridView中的一个条目;
一个GridView条目是相对布局(RelativeLayout),里面包含一个图片(ImageView)和一个文字(TextView);
关键点是GridView如何保持横向,默认的情况下会折行的,首先要用一个HorizontalScrollView提供横向滚动容器,然后内部放置一个FrameLayout,如果不放置FrameLayout布局,直接放入下面的布局或者视图,GridView将会变成单列纵向滚动,在FrameLayout布局中加入横向的LinearLayout布局,要设置它的layout_width,要足够大,这样在其中加入GridView就能横向排列了。
首先看一下GridView中条目的布局:
&?xml version=&1.0& encoding=&utf-8&?&&
&RelativeLayout xmlns:android=&/apk/res/android&
& & android:paddingBottom=&10.0dip& android:layout_width=&90.0dip&&
& & android:layout_height=&140.0dip&&&
& & &ImageView android:id=&@+id/ItemImage& android:layout_width=&80.0dip&&
& && &&&android:layout_height=&108.0dip& android:layout_marginLeft=&10.0dip&&
& && &&&android:layout_centerHorizontal=&true&&&
& & &/ImageView&&
& & &TextView android:layout_below=&@+id/ItemImage& android:id=&@+id/ItemText&&
& && &&&android:ellipsize=&end& android:layout_width=&80.0dip&&
& && &&&android:layout_height=&26.0dip& android:layout_marginTop=&5.0dip&&
& && &&&android:singleLine=&true& android:layout_centerHorizontal=&true&&&
& & &/TextView&&
&/RelativeLayout&
这里使用了相对布局的特性,android:layout_below,表示TextView在ImageView下面。这里的图都是用的res/drawable目录下的静态图形文件,正式情况下,应该是从网络获取,可参见的原型实现,二者结合可用于正式生产环境。
ListView的Header使用了自定义视图,更简单的示例可参见。表头(ListView
Header)的布局文件:
&?xml version=&1.0& encoding=&utf-8&?&&
&LinearLayout xmlns:android=&/apk/res/android&
& & android:orientation=&vertical& android:layout_width=&fill_parent&&
& & android:layout_height=&200dp&&&
& & &TextView android:layout_width=&fill_parent&&
& && &&&android:layout_height=&wrap_content& android:text=&最近访问人物& /&&
& & &HorizontalScrollView android:layout_width=&fill_parent&&
& && &&&android:layout_height=&160dp&&&
& && &&&&FrameLayout android:layout_width=&fill_parent&&
& && && && &android:layout_height=&match_parent&&&
& && && && &&LinearLayout android:layout_width=&1100dp&&
& && && && && & android:layout_height=&match_parent& android:orientation=&horizontal&&&
& && && && && & &GridView android:id=&@+id/grid& android:layout_width=&fill_parent&&
& && && && && && &&&android:gravity=&center& android:layout_height=&fill_parent&&
& && && && && && &&&android:horizontalSpacing=&1.0dip& android:verticalSpacing=&1.0dip&&
& && && && && && &&&android:stretchMode=&spacingWidthUniform& android:numColumns=&auto_fit&&
& && && && && && &&&android:columnWidth=&80dip&&&
& && && && && & &/GridView&&
& && && && &&/LinearLayout&&
& && &&&&/FrameLayout&&
& & &/HorizontalScrollView&&
&/LinearLayout&
这是比较关键的布局文件,GridView能实现横向滚动主要靠它了。其中:
&LinearLayout android:layout_width=&1100dp&
我是写死了1100dp,正式使用的时候,因为图片都可能是动态从服务器上获取的,可以根据数量以及图片的宽度,空白边动态计算这个长度。
GridView和ListView类似,都需要ViewAdapter来适配数据和视图。
见Activity的源代码:
package com.easymorse.grid.
import java.util.ArrayL&
import java.util.HashM
import android.app.ListA&
import android.os.B&
import android.view.LayoutI&
import android.view.V&
import android.widget.ArrayA&
import android.widget.GridV&
import android.widget.ListV&
import android.widget.SimpleA
public class GridDemoActivity extends ListActivity {&
& & /** Called when the activity is first created. */&
& & @Override&
& & public void onCreate(Bundle savedInstanceState) {&
& && &&&super.onCreate(savedInstanceState);&
& && &&&setContentView(R.layout.main);
& && &&&LayoutInflater layoutInflater = (LayoutInflater) this&
& && && && && & .getSystemService(&layout_inflater&);&
& && &&&View headerView=layoutInflater.inflate(R.layout.list_header, null);&
& && &&&setGridView(headerView);&
& && &&&ListView listView=(ListView) this.findViewById(android.R.id.list);&
& && &&&listView.addHeaderView(headerView);&
& && &&&listView.setAdapter(new ArrayAdapter&String&(this, android.R.layout.simple_list_item_1,new String[]{&隋&,&唐&,&宋&,&元&,&明&,&清&}));&
& & private void setGridView(View view) {&
& && &&&GridView gridView = (GridView) view.findViewById(R.id.grid);&
& && &&&gridView.setNumColumns(10);
& && &&&ArrayList&HashMap&String, Object&& items = new ArrayList&HashMap&String, Object&&();
& && &&&for (int i = 0; i & 10; i++) {&
& && && && &HashMap&String, Object& map = new HashMap&String, Object&();&
& && && && &map.put(&ItemImage&, R.drawable.k);&
& && && && &map.put(&ItemText&, &清.康熙& + &(& + i + &)&);&
& && && && &items.add(map);&
& && &&&SimpleAdapter adapter = new SimpleAdapter(this, items, R.layout.item,&
& && && && && & new String[] { &ItemImage&, &ItemText& }, new int[] {&
& && && && && && && && &R.id.ItemImage, R.id.ItemText });&
& && &&&gridView.setAdapter(adapter);&
全部源代码:
项目需求在制定大小区域写一个横向菜单栏,菜单栏整体不能移动,GalleryFlow画廊不能满足需求,就自己重写写了一个)划到当图片时换个图片且动画效果渐渐放大,划到下一张时候前一张用动画渐渐还原原来大小----先上个效果图,没有找到一样大小 的图就用喷笔喷了点,希望大伙原谅,咱看效果
(很多童鞋说没效果,这里提下,压缩包里是用的setOnItemSelectedListener事件,我这里是给机顶盒用的:也就是键盘加遥控器,要想有点击事件在代码添加个setOnClickListener事件代码跟setOnItemSelectedListener代码一样)
KB, 下载次数: 3)
KB, 下载次数: 0)
491.45 KB, 下载次数: 164, 下载积分: 下载豆 -2
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:334373次
积分:5943
积分:5943
排名:第3324名
原创:199篇
转载:462篇
评论:37条
(2)(2)(1)(1)(10)(1)(1)(2)(5)(1)(10)(5)(3)(22)(8)(14)(22)(5)(1)(9)(8)(7)(16)(10)(26)(7)(8)(21)(15)(1)(1)(52)(80)(15)(44)(135)(24)(58)(8)&nbsp&#8250&nbsp&nbsp&#8250&nbsp
Android自定义控件StaggeredGridView-瀑布流效果的GridView
我们知道谷歌keep在显示记事的时候可以多列显示,但是跟国内很多应用不同,它的记事之间高度是随机的,效果如下:因为之前没有用过GridView,但是知道GridView大概是怎么回事,只不过是listview的另一种形式而已,直觉告诉我谷歌这个界面是GridView做的。于是我就尝试着用GridView来模仿keep的界面。结果发现GridView根本做不出来,怎么弄每行都只能是一个固定高度。看来谷歌要么是没有用GridView,要么是修改了GridView。想看代码,但是keep人家不开源啊。国内的网站上貌似没找到一个靠谱的解决方案,于是就在git上漫无目的的搜,结果发现了这样一个开源控件,根据其描述来看,和我的需求一致,分享给大家。
源码地址:描述:StaggeredGridView 允许你创建一个不规则的多列GridView ,类似于Pinterest的效果,包含了自己的OnItemClickListener和OnItemLongClickListener。如何设置将此工程放到你的workspace中,然后在你自己的项目中通过引入library的形式将此控件添加进去,就可以像一般的gridview一样使用了。使用方法StaggeredGridView 可以作为一个自定义view添加进任何layout中。支持的属性(和 GridView相同):numColumns : 显示几列。drawSelectorOnTop : 点击某一条记录,颜色显示在最上面还是作为背景显示。&LinearLayout xmlns:android="/apk/res/android"
xmlns:tools="/tools"
xmlns:staggered="/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/mainLayout"&
&com.origamilabs.library.views.StaggeredGridView
android:id="@+id/staggeredGridView1"
staggered:numColumns="2"
staggered:drawSelectorOnTop="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" /&
&/LinearLayout&
上一篇: 在默认情况下当发生横竖屏切换时,当前Activity中的fragment都会通过Fragment.instantiate重新生成,该方法将使用默认的构造函数来生成相应的Fragment,所以如果没有默认构造函数的话将会报错,例如: class MyFragment {public MyFragment(int title, Strin
下一篇: Android中ListView是使用平率最高的控件之一(GridView跟ListView是兄弟,都是继承AbsListView),ListView优化最有效的无非就是采用ViewHolder来减少频繁的对view查询和更新,缓存图片加快解码,减小图片尺寸。 下面是Google的建议 Your code might call fi}

我要回帖

更多关于 ios 如何实现gridview 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信