Android Gallery实现3D相册(附效果图+Demo源码)

  次阅读 作者:智能小宝 来源:互联网 2015-10-03 10:43 我要评论(0)

本文主要是说说如何实现Gallery的3D显示切换,Demo的代码很多是基于网上一些现成效果,感谢这些分享成果的开发者。文中有Demo的下载,不 清楚的可以把Demo下载下来,运行看看效果然后分析一下代码。代码不多,也不是很复杂。

今天因为要做一个设置开机画面的功能,主要是让用户可以设置自己的开机画面,应用层需要做让用户选择开机画面图片的功能。所以需要做一个简单的图片 浏览选择程序。最后选用Gallery作为基本控件。加入了一些炫一点的元素,做成3D滑动效果。下面是Demo例子截图:

这个效果网上已经很多人做出来了,只是这次需要用到,所以自己也实践了一下(这里例子我也是根据网上一些资料编写)。特意找了几张美女图片给大家养 养眼,O( _ )O哈!下面针对一些关键代码进行简要说明,需要做这方面东西的朋友可以看看。这篇文章是实用性文章,理论分析不多。

(PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434)

1、重载Gallery类

因为需要加入倒影和3D切换的效果,因此我们需要重载Gallery类,其中有两个方法我们需要重写,一个是onSizeChanged(),另外 一个是getChildStaticTransformation()。下面我们看看onSizeChanged()需要做的事情。

@Override

protected void onSizeChanged(int w, int h, int oldw, int oldh)

{//重写计算旋转的中心

mCoveflowCenter = getCenterOfCoverflow();

super.onSizeChanged(w, h, oldw, oldh);

}

上面主要做的事情就是在改变大小的时候,重新计算滑动切换时需要旋转变化的中心。下面计算图片位置时,会重新计算。

protected boolean getChildStaticTransformation(View child, Transformation trans)

{ //图像的中心点和宽度

final int childCenter = getCenterOfView(child);

final int childWidth = child.getWidth();

int rotationAngle = 0;

trans.clear();

trans.setTransformationType(Transformation.TYPE_BOTH);// alpha 和 matrix 都变换

if (childCenter == mCoveflowCenter)

{// 正中间的childView

transformImageBitmap((ImageView) child, trans, 0);

}

else

{// 两侧的childView

rotationAngle = (int) ( ( (float) (mCoveflowCenter - childCenter) / childWidth ) * mMaxRotationAngle );

if (Math.abs(rotationAngle) > mMaxRotationAngle)

{

rotationAngle = (rotationAngle < 0) ? -mMaxRotationAngle : mMaxRotationAngle;

}//根据偏移角度对图片进行处理,看上去有3D的效果。

transformImageBitmap((ImageView) child, trans, rotationAngle);

}

return true;

}

上面就是重载Gallery的时候,需要注意处理的事情,其实主要就是做图形变化,效果图里面的图片斜着显示就是这里处理的结果,目的就是让人看上 去有立体感。

2、编写Adapter适配器

我们使用很多控件都涉及适配器,就是用来绑定数据源和目标控件的一个中间件。这里我们需要重载BaseAdapter作为我们Gallery的适配 器。主要是处理源图像,加入倒影,生成新的数据源图片。

public boolean createReflectedForAdapter()

{

final int reflectionGap = 4;

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

人工智能实验室
相关文章相关文章
  • 英国研发“杀生”机器人 通过生命体获取能量

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

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

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

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

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

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

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

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

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

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

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

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