Android学习小Demo(10)ToDoList的改进版之ViewPager显示多个图片

  次阅读 来源:互联网(转载协议) 2015-10-02 17:22 我要评论(0)

在TodoList增强版的增加界面上,为了显示图片,我是挖了两块地方,放了两个ImageButton,来显示图片,而且限制了最多只能放两张图片。当两个View都放置图片之后,我就会把“Gallery”和"Camera"的两个按钮给隐藏掉,如下图红框显示中,已经没了:

但是这样,一方面不好看,也不人性呀(=_=!! 一切需求都是从人自身出发的。),在上一章的末尾,我当时建议说可以放一个3D画廊,来展示图片,这样的话,就可以放多张图片了,还好看一点,也不用说去隐藏那两个按钮了,对吧。

所以昨天晚上呢,回来之后就改了一下,利用ViewPager来实现多张图片展现的效果,如下:

从上面的gif图片中, 我们可以看到,但添加多张图片的时候,能够在下方形成一个画廊的效果,我们左右拉动图片来看我们添加进去的图片,效果是不是好了很多呢?

下面我们就从代码里面来讲讲是怎么做的吧。

首先,我们来看布局:

我们在这个位置放一个Layout(什么样的Layout都可以,我原来是用一个FrameLayout的,但代码中有点问题,我以为是它的问题,就改成LinearLayout,然后就忘了改回去了。)

Layout里面会放一个ViewPager(这是v4 支持包里面提供的,在2.x的机器上是没有这个控件的)。

1)在这里,其实我们是利用到了view的clipChildren属性,我们在这里要把它设置为false,如下,为什么呢?

android:clipChildren="false"

因为如果clipChildren属性设置为true,就表明我们要将children给clip掉,就是说对于子元素来说,超出当前view的部分都会被切掉,那我们在这里把它设置成false,就表明超出view的部分,不要切掉,依然显示。

那为什么我们要设置这个属性呢?那是因为对于ViewPager控件来说,它只显示当前页(page)的View,轮到下一个view,就是下一页了,所以对于ViewPager本身这个控件来说,它永远只显示一个View,也就是一张图片。

2)另外,看如下代码:

android:layerType="software"这个是设置层的属性为软件层,因为从4.0之后,android是默认启动硬件加速的,而硬件加速对clip等操作是有影响的,会出一些bug,所以如果我们在自定义View样式中,用到clip等操作,对于4.0以上的android,我们需要将它的硬件加速关掉,不然是会出问题的,具体问题我忘了,不过这跑题了,sorry。

3)最后在这布局上还有一点要注意,我们要把ViewPager的宽度设置比父控件的小,这样两边才有空间去让view跑出viewpager,从而显示多个图片。

好了,下面我们来看看java的代码:

vpGallery = (ViewPager)findViewById(R.id.vpGallery);

galleryPagerAdapter = new GalleryPagerAdapter(imageViews);

vpGallery.setAdapter(galleryPagerAdapter);

vpGallery.setOnPageChangeListener(this);

vpGallery.setOffscreenPageLimit(3);

vpGallery.setPageMargin(5);

if(imageViews.size() > 1){

vpGallery.setCurrentItem(1);

}

flGalleryContainer = (LinearLayout)findViewById(R.id.flGalleryContainer);

flGalleryContainer.setOnTouchListener(new OnTouchListener() {

@Override

public boolean onTouch(View v, MotionEvent event) {

return vpGallery.dispatchTouchEvent(event);

}

});

4)其实ViewPager跟ListView和GridView这样的东西是同一个道理的,只是ListView和GridView是一次显示多个item,而ViewPager是像页一样,一次展现一页而已。相似的,也要定义一个Adapter来作为跟数据的接口,其中imageViews存放的就是这个任务所相关的图片了。

关于Adapter的代码,大家等一下在源代码里面看吧,这里就不放了,占地方。

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...