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!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

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

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...