灵魂腐蚀 发表于 2015-1-18 11:30:22

IOS设计怎样在Android中完成折纸动画仓酷云

所以你可以用很多方法存储数据比如最长用的sqlite当然如果另类也可以用plist文件或者其他NSManagedObjectContextNSManagedObjectContext遭到iOS版FacebookPaper的启示,在比来的项目中,我们决意在翻开列表元素时完成一个相似作风的动画效果。后来,我们试图利用一个现有的完成——android-flip,经由过程OpenGL衬着动画——在最新的Android版本中,它只做到了在屏幕上显现对照分明的工件(图片闪灼)。别的,必要对这个类库举行修改,由于它是为了滑动列表的元素计划的,但我们的工程必要在翻开列表元素的时分有动画效果。鄙人面的演示视频中能够看出区分:android-flip完成的是折叠列表,而我们实践必要的是睁开概况。
思索到这类场景,我们决意本人完成这类效果。由于使用程序撑持的最小Android版本为4.0,以是没利用OpenGL,而是用了尺度AndroidSDK中的办法:View.setRotationX(),View.setScaleX()等。当硬件减速启用时(假如方针API级别>=14,默许启用硬件减速),这些办法能够十分高效天时用GPU。
了局看起来很完善,以是决意分享我们的做法。因为本文只是先容了基础的完成要点,您能够从GitHub高低载一切的实践代码:FoldableLayout。

<br>
结构的完成

计划的第一个元素是能够半数的结构。我们的做法相称勇敢:主结构(FoldableItemLayout)只包括一个特定的结构(在baselayout)。在动画中,BaseLayout将它的内容写进到缓存中,这是一个依据原始结构的尺寸专门创立的Bitmap对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
classFoldableItemLayoutextendsFrameLayout{
@Override
protectedvoidonSizeChanged(intw,inth,intoldw,intoldh){
BitmapcacheBitmap=Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
mBaseLayout.setCacheCanvas(newCanvas(cacheBitmap));
}
}
classBaseLayoutextendsFrameLayout{
privateCanvasmCacheCanvas;
privatevoidsetCacheCanvas(CanvascacheCanvas){
mCacheCanvas=cacheCanvas;
}
@Override
publicvoiddraw(Canvascanvas){
mCacheCanvas.drawColor(0,PorterDuff.Mode.CLEAR);
super.draw(mCacheCanvas);
}
}

别的,还必要两个分外的视图(PartView)——用于图象的上、下两半部分。它们将在缓存中显现对应的数据,这些数据代表了该图象(Bitmap)的上半部和下半部。两个视图添补了主结构的全部地区,但只显现所需的部分。为了到达这类效果,我们盘算了位图的界线——在onDraw()办法中,我们让画布经由过程(http://developer.android.com/reference/android/graphics/Canvas.html#drawBitmap(android.graphics.Bitmap,android.graphics.Rect,android.graphics.RectF,android.graphics.Paint))办法来绘制所需的部分。
然后经由过程setRotationX()办法设置响应的角度,想法扭转这些分外的视图,从而完成图象上半部和下半部的自力扭转。为了完成这个功效,我们为FoldableItemLayout增加了一个名为FoldRotation的新参数。
FoldRotation参数局限是(-180,180]:


[*]FoldRotation=0:两个部分都不扭转。在这类情形下,我们能够跳过位图缓存,及时的显现原始的结构。
[*]0<FoldRotation<90:上层的部分扭转到FoldRotation角度;下层部分不扭转。
[*]-90<FoldRotation<0:只要下层部分扭转。
[*]90&le;FoldRotation<180:上层部分不再显现。在这类情形下,包括下一结构的FoldableItemLayout应当掩盖以后的FoldableItemLayout。
[*]-180<FoldRotation&le;-90:下层部分不再显现。在这类情形下,包括先前的结构FoldableItemLayout应当掩盖以后的FoldableItemLayout。
[*]FoldRotation=180:两个部分都埋没。
如今有了一个二层结构,可以“折叠”它包括的元素,如许就能够做出一个FoldableListLayout——一个相似列表视图的结构,它创立列表元素,并经由过程利用BaseAdapter将其封装成FoldableItemLayout。在这类情形下,我们还利用了FoldRotation参数用来断定元素在列表中的地位。
比方,FoldRotation=30,列表第一个元素(FoldableItemLayout)的FoldRotation值为30,而第二个元素——FoldRotation=150,最多能够同时显现不凌驾2个元素。FoldRotation参数值的局限依附于元素的数目:假如列表包括一个元素,那末取值局限就会是,2——,3——等。
翻开动画

在学会了在几个元素之间利用折叠动画转动以后,我们办理了这个严重的应战:从恣意的出发点天生元素的翻开动画。使用已完成的FoldableListLayout,并使其在两个元素之间举行切换:封面结构和概况结构。这两种元素都应当显现在屏幕上,但概况元素应当是埋没的。当用户点击一个封面元素时,使用程序会记着事先的地位,并利用不异巨细的空占位符视图代替它(以避免损坏屏幕上的其他元素),并挪动盖元素的下半专门创立的结构。今后这类结构将被用作FoldableListLayout的第一个元素。第二个元素将被交换为空占位视图,与封面元素的体例不异。
对齐

目击封面元素已从屏幕上的最后地位睁开,因而在动画过程当中我们的FoldableListLayout必要在封面元素和概况元素的地位之间挪动。这就是为何要记着在动画初始化过程当中每一个元素的初始地位和巨细的缘故原由。因为封面和概况的巨细有大概分歧,我们必要在动画时代同时扩大它们,以便使它们的宽度分歧。
我们基础已竣工,只差一件事:缩放后,封面的高度大概看起来比下半部分的概况小。这意味着你必要埋没图象的残剩部分。

语法弄明白@interface@property这些工具总要知道是干嘛的怎么用基础库

谁可相欹 发表于 2015-1-21 06:07:55

有办法利用自己手头的电脑立刻开始这个美妙旅程的。

分手快乐 发表于 2015-1-22 18:45:33

down下code4app网站的每个分类的代码挨着看

深爱那片海 发表于 2015-1-28 10:31:14

iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

若相依 发表于 2015-2-5 14:08:46

iPhone文件系统:创建、重命名以及删除文件,NSFileManager中包含了用来查询单词库目录、创建、重命名、删除目录以及获取/设置文件属性的方法(可读性,可编写性等等)。

兰色精灵 发表于 2015-2-12 02:45:14

特别是在校的学生,都存在一个小小的尴尬——虽然学习iOS开发的热情高涨,但由于没有多余的银子购买昂贵的Mac电脑而踟蹰不前。其实,针对初学者,如果想进入iOS开发的天地

老尸 发表于 2015-3-1 09:34:08

看《iPhone 4与iPad开发基础教程》,跟着一步步来

仓酷云 发表于 2015-3-10 08:34:41

自从苹果公司开放iOS SDK以来,大量的国内外的软件开发者将关注的目光聚集在苹果的iOS平台上。由于iPhone和iPad自一出现就给人带来了颠覆性的感觉

飘飘悠悠 发表于 2015-3-20 01:38:14

到大三时,学院与我去培训的机构成立了实习基地,并让我们寒假去实习了一段时间,感觉还不错,于是在大四的时候去培训了

精灵巫婆 发表于 2015-3-26 23:18:32

以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。

愤怒的大鸟 发表于 2015-4-1 07:10:34

每个行业都一样,想要一天学有所成是不可能的,一定要做好努力的准备,做ios不是简单的学会oc语言。不怕多走弯路,就怕不肯动手。

乐观 发表于 2015-4-5 10:30:15

在百度搜索你想要了解的类名(苹果的cocoa和cocoatouch框架的类名很有特点很容易搜到,前缀都是NS or UI),看别人写的博客详解

第二个灵魂 发表于 2015-4-5 20:09:44

以上可以同时进行,学习过程中尽量不要纠结细节和底层,要知道ios是封闭的、OC是高级语言,我们不可能过多地去了解它的原理,至少在新手阶段没有必要。用迭代的方式更新你的知识,而不是死抠一个知识点。

小女巫 发表于 2015-4-10 20:56:08

中国如今已然发展成为一个软件大国,软件人才的数量跃居全球之首。当然,在苹果平台的开发领域,也保持了相当强劲的发展势头。然而,很多初入iOS开发门槛的开发者,

因胸联盟 发表于 2015-4-16 05:30:49

培训的时候很痛苦,每天要待12个小时,上午讲课,下午和晚自习解决作业,看文档,学习的时候感觉就是资料太少,而且看着资料也不明所以,非常痛苦,

透明 发表于 2015-4-21 12:52:58

看《iPhone 4与iPad开发基础教程》,跟着一步步来

变相怪杰 发表于 2015-4-25 23:52:07

要学会通过各种方法将面前的事情变成自己感兴趣的,那专研起来就不会是无聊和折磨了。

莫相离 发表于 2015-7-10 10:36:30

iPhone文件系统NSFileManager讲解是本文要介绍的内容,主要是通过iphone文件系统来学习NSFileManager的使用方法,具体内容来看本文详解。

再见西城 发表于 2015-7-11 08:52:08

其次学习方法和学习心态很重要,在学习当中应该保持一颗良好的心态。应该借鉴别人好的学习方法,大家互相帮助,取长补短。

爱飞 发表于 2015-7-12 19:57:01

在此,某不才愿将安装成功的Mac OS X系统的vmware虚拟机向有志学习iOS开发的各位学友们免费开放出来,经测试,可以在WindowsXP/Win7系统上完美运行,即便你的机器只有2GB内存。
页: [1]
查看完整版本: IOS设计怎样在Android中完成折纸动画仓酷云