精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何在Android中實現折紙動畫

移動開發 Android
受到iOS版Facebook Paper的啟發,在最近的項目中,我們決定在打開列表元素時實現一個類似風格的動畫效果。

creating-paper-folding-animation-in-android

受到iOS版的啟發,在最近的項目中,我們決定在打開列表元素時實現一個類似風格的動畫效果。起初,我們試圖使用一個現有的實現——android-flip, 通過OpenGL渲染動畫——在***的Android版本中,它只做到了在屏幕上顯示比較明顯的工件(圖片閃爍)。另外,需要對這個類庫進行改動,因為它 是為了滑動列表的元素設計的,但我們的工程需要在打開列表元素的時候有動畫效果。在下面的演示視頻中可以看出區別:android-flip實現的是折疊 列表,而我們實際需要的是展開詳情。

考慮到這種場景,我們決定自己實現這種效果。因為應用程序支持的最小Android版本為4.0,所以沒使用OpenGL,而是用了標準Android SDK中的方法:View.setRotationX()View.setScaleX()等。當硬件加速啟用時(如果目標API級別>=14,默認啟用硬件加速),這些方法可以非常高效地利用GPU。

結果看起來很***,所以決定分享我們的做法。由于本文只是介紹了基本的實現要點,您可以從GitHub上下載所有的實際代碼:FoldableLayout

布局的實現

設計的***個元素是可以對折的布局。我們的做法相當大膽:主布局(FoldableItemLayout)只包含一個特定的布局(在baselayout)。在動畫中,BaseLayout將它的內容寫入到緩存中,這是一個根據原始布局的尺寸專門創建的Bitmap對象。

  1. class FoldableItemLayout extends FrameLayout { 
  2.     @Override 
  3.     protected void onSizeChanged(int w, int h, int oldw, int oldh) { 
  4.         Bitmap cacheBitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); 
  5.         mBaseLayout.setCacheCanvas(new Canvas(cacheBitmap)); 
  6.     } 
  7.   
  8. class BaseLayout extends FrameLayout { 
  9.     private Canvas mCacheCanvas; 
  10.   
  11.     private void setCacheCanvas(Canvas cacheCanvas) { 
  12.         mCacheCanvas = cacheCanvas; 
  13.     } 
  14.   
  15.     @Override 
  16.     public void draw(Canvas canvas) { 
  17.         mCacheCanvas.drawColor(0, PorterDuff.Mode.CLEAR); 
  18.         super.draw(mCacheCanvas); 
  19.     } 

此外,還需要兩個額外的視圖(PartView)——用于圖像的上、下兩半部分。它們將在緩存中顯示對應的數據,這些數據代表了該圖像(Bitmap)的上半部和下半部。兩個視圖填充了主布局的整個區域,但只顯示所需的部分。為了達到這種效果,我們計算了位圖的界限——在onDraw()方法中,我們讓畫布通過[drawBitmap (Bitmap bitmap, Rect src, RectF dst, Paint paint)](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≤FoldRotation<180:下層部分不再顯示。在這種情況下,包含下一布局的FoldableItemLayout應該覆蓋當前的FoldableItemLayout。
  • -180<FoldRotation≤-90:上層部分不再顯示。在這種情況下,包含先前的布局FoldableItemLayout應該覆蓋當前的FoldableItemLayout。
  • FoldRotation=180:兩個部分都隱藏。

現在有了一個二層布局,能夠“折疊”它包含的元素,這樣就可以做出一個FoldableListLayout——一個類似列表視圖的布局,它創建列表元素,并通過使用BaseAdapter將其封裝成FoldableItemLayout。在這種情況下,我們還使用了FoldRotation參數用來確定元素在列表中的位置。

例如,FoldRotation= 30,列表***個元素(FoldableItemLayout)的FoldRotation值為30,而第二個元素——FoldRotation= 150,最多可以同時顯示不超過2個元素。FoldRotation參數值的范圍依賴于元素的數量:如果列表包含一個元素,那么取值范圍就會是 [0,0],2——[0,180],3——[0,360]等。

打開動畫

在學會了在幾個元素之間使用折疊動畫滾動之后,我們解決了這個重大的挑戰:從任意的起點生成元素的打開動畫。利用已經實現的 FoldableListLayout, 并使其在兩個元素之間進行切換:封面布局和詳情布局。這兩種元素都應該顯示在屏幕上,但詳情元素應該是隱藏的。當用戶點擊一個封面元素時,應用程序會記住 當時的位置,并使用相同大小的空占位符視圖取代它(以免破壞屏幕上的其他元素),并移動蓋元素的下半專門創建的布局。以后這種布局將被用作 FoldableListLayout的***個元素。第二個元素將被替換為空占位視圖,與封面元素的方式相同。

對齊

眼見封面元素已經從屏幕上的最初位置展開,因此在動畫過程中我們的FoldableListLayout需要在封面元素和詳情元素的位置之間移動。這就是為什么要記住在動畫初始化過程中每個元素的初始位置和大小的原因。由于封面和詳情的大小有可能不同,我們需要在動畫期間同時擴展它們,以便使它們的寬度一致。

我們基本已經完工,只差一件事:縮放后,封面的高度可能看起來比下半部分的詳情小。這意味著你需要隱藏圖像的剩余部分。

下面的屏幕截圖顯示了在動畫的開始部分有一個灰色區域,下層的詳情部分與封面的大小不符。

creating-paper-folding-animation-in-android-error (2)

我們為FoldableItemLayoutm引入一個額外的RollingDistance參數解決了這個問題。這個參數負責從折線垂直移動圖像。使用這個參數可以在動畫的***部分中的不知不覺中轉換詳情的一部分,然后在第二部分中全尺寸展開。

動畫現在就可以運行了,余下的工作就是為逼真的效果添加一些暗化,或為平滑的樣子添加些陰影。本類庫在GitHub上可以隨意使用,在那里你還可以找到一個使用例子。一如既往的歡迎pull請求。

原文鏈接: azoft

譯文鏈接: http://blog.jobbole.com/68689/

責任編輯:閆佳明 來源: blog.jobbole
相關推薦

2016-08-11 08:24:39

AndroidIntentShareTestDe

2024-11-12 08:00:00

LSM樹GolangMemTable

2025-02-05 10:02:03

Locust測試異常處理

2025-01-27 12:31:23

PythonLocustWebSocket

2023-01-01 23:42:22

React框架暗黑模式

2023-09-01 08:19:21

Flask

2022-07-15 19:57:18

Cadence輪詢開源

2015-10-10 10:21:26

OpenStackRegion多Region

2025-05-09 08:02:30

2020-04-07 10:43:31

多云云遷移云計算

2013-12-13 09:55:44

VDI負載均衡

2022-09-13 07:14:29

云計算SaaS多租戶

2022-03-29 09:00:00

Angular框架REST API

2025-08-26 08:24:04

2023-11-30 20:51:26

多子圖布局matplotlib

2025-02-04 09:58:08

2012-12-10 10:56:16

IBMdW

2013-03-13 10:17:50

混合云混合云模式構建混合云

2018-12-25 16:30:15

SQL Server高效分頁數據庫

2010-03-18 14:16:52

Java Thread
點贊
收藏

51CTO技術棧公眾號

美国精品一区二区| 无码人妻h动漫| 丰满大乳国产精品| 国产精品婷婷| y97精品国产97久久久久久| 日批视频免费看| 日韩新的三级电影| 一区二区三区成人在线视频| 精品国产乱码久久久久久88av| 青青草视频在线观看免费| 亚洲美女视频| 精品亚洲男同gayvideo网站| 午夜剧场高清版免费观看| 国产盗摄——sm在线视频| 日本一区二区三区视频视频| 国产区二精品视| 国产一区二区视频免费观看 | 中文字幕一精品亚洲无线一区| 被黑人猛躁10次高潮视频| 日韩精品三区| 精品久久在线播放| 老司机午夜网站| 国产三级在线| 99久久久无码国产精品| 114国产精品久久免费观看| 亚洲 日本 欧美 中文幕| 国产一在线精品一区在线观看| 在线观看日韩专区| 中文精品在线观看| 国产精品白丝av嫩草影院| 欧美一区二区三区免费大片 | 成人午夜精品在线| 成人亲热视频网站| 午夜一区二区三区四区| 一区二区三区精品视频在线观看| 欧美成人亚洲成人| 日日碰狠狠添天天爽| 国产亚洲一卡2卡3卡4卡新区| 亚洲国产高潮在线观看| 国产亚洲精品成人a| 成人免费91| 欧美男同性恋视频网站| www.涩涩涩| 最新日韩一区| 欧美性欧美巨大黑白大战| 色综合av综合无码综合网站| 国产色播av在线| 亚洲动漫第一页| 欧美日韩dvd| 青草av在线| 亚洲一区二区三区四区五区中文| 99亚洲国产精品| 日本三级在线观看网站| 亚洲男女毛片无遮挡| 好吊色视频988gao在线观看| 黄色大片在线播放| 亚洲日本一区二区| 欧美激情亚洲天堂| 欧美日韩在线视频免费观看| 亚洲精品国产品国语在线app| 欧美性受xxxx黑人猛交88| 黄网站在线免费| 亚洲欧美日韩一区二区| 久久天天东北熟女毛茸茸| 亚洲丝袜精品| 亚洲h动漫在线| 男人天堂999| 性欧美hd调教| 911精品产国品一二三产区| 中文 日韩 欧美| 国产成人在线中文字幕| 日韩激情视频在线| 丰满的亚洲女人毛茸茸| 久久影视一区| 欧美大片免费看| 91视频免费网址| 日韩成人免费看| 91九色视频在线| 欧美在线精品一区二区三区| 久久尤物电影视频在线观看| 亚洲成人蜜桃| 成人av影院在线观看| 色婷婷亚洲精品| 99九九精品视频| 欧美国产不卡| 日韩在线观看免费av| 久久久国产精华液| 久久99伊人| 91天堂在线观看| 免费在线视频一区| 亚洲国产欧美一区| 亚洲午夜久久久久久久国产| 99热国内精品| 久久久久久久久久久免费精品| 欧美在线观看不卡| 精品无人码麻豆乱码1区2区 | 国产美女www爽爽爽| 国产主播一区二区三区| 国产美女在线精品免费观看| 精品久久av| 亚洲乱码日产精品bd| 久久久久久久中文| 性欧美video另类hd尤物| 精品国产乱码久久久久久牛牛| 欧美亚一区二区三区| 五月天激情综合网| 欧美一区二区.| a级片在线播放| 久久精品网站免费观看| 强开小嫩苞一区二区三区网站 | 国产精品福利在线观看| 国产精品怡红院| 久久久精品一品道一区| 青青青在线观看视频| 亚洲天堂1区| 亚洲国产女人aaa毛片在线| 韩国一级黄色录像| 久久看片网站| 国内精品视频免费| 动漫一区在线| 欧美色图免费看| 一区二区三区少妇| 欧美区国产区| 91久热免费在线视频| 国产综合在线观看| 精品久久久久久亚洲国产300| 日本精品一区在线| 日韩电影一区| 日韩免费在线看| 午夜视频1000| 亚洲午夜久久久久久久久电影网| 中文字幕线观看| 成人区精品一区二区婷婷| 欧美性受xxxx白人性爽| 韩国av免费在线观看| 亚洲视频一区二区在线观看| 91蝌蚪视频在线观看| 亚洲精品动态| 97人洗澡人人免费公开视频碰碰碰| 国产精品九九九九| 国产精品第五页| 手机视频在线观看| 日韩欧美中文| 国产在线精品一区免费香蕉| 大胆av不用播放器在线播放| 色综合天天天天做夜夜夜夜做| 日本黄色录像片| 亚洲欧洲一区| 精品视频导航| 亚洲午夜天堂| 亚洲欧美日韩直播| 精品无码一区二区三区的天堂| 久久综合九色综合97_久久久| 91九色在线观看视频| 牛牛精品成人免费视频| 91精品国产91久久久| 香蕉久久一区二区三区| 欧美小视频在线观看| 国产精品扒开腿做爽爽| 久久一区中文字幕| 亚洲国产欧洲综合997久久| 日韩欧乱色一区二区三区在线| 丝袜亚洲另类欧美重口| 在线永久看片免费的视频 | 娇小11一12╳yⅹ╳毛片| 久久国产麻豆精品| 亚洲黄色网址在线观看| 无人区乱码一区二区三区| 欧美激情精品久久久久久免费印度 | 欧美1区免费| 国产成人看片| 亚洲国产成人二区| 在线日韩中文字幕| 国产模特av私拍大尺度| 亚洲大型综合色站| 精品国产成人亚洲午夜福利| 免费在线看一区| 三级在线免费观看| 国产调教精品| 国产精品91久久| 黄色网在线播放| 精品国产一区二区三区久久影院| 国产又黄又粗又爽| 国产精品美女久久福利网站| 三上悠亚 电影| 国产亚洲精品v| 亚洲一卡二卡三卡| 国内毛片久久| 国产97人人超碰caoprom| 黄网址在线观看| 国产视频亚洲精品| 国产女同91疯狂高潮互磨| 精品国产电影一区| 亚洲视频重口味| av激情综合网| 亚洲精品国产一区二区三区| 99精品免费视频| 亚洲一区二区三区精品视频 | 久久久蜜桃一区二区人| 在线观看一区欧美| 视频小说一区二区| 91在线观看免费观看| 涩涩网在线视频| 久久视频免费在线播放| 男女av在线| 精品毛片乱码1区2区3区| 日韩黄色一级视频| 亚洲va欧美va人人爽| 免费成人深夜蜜桃视频| www.成人在线| 99热这里只有精品2| 久久只有精品| 激情伊人五月天| 亚洲精品va| 天天爽天天狠久久久| 韩国精品福利一区二区三区| 成人黄色免费看| 欧美日韩视频免费观看| 久久久久久久久国产| 欧美成人视屏| 国产亚洲欧洲在线| 四虎精品在永久在线观看 | 免费国产在线视频| 亚洲国产欧美精品| 亚洲福利在线观看视频| 欧美日韩一区二区欧美激情| 天堂а√在线中文在线新版 | 中文字幕免费视频观看| 精品久久久久久中文字幕一区奶水| 少妇被躁爽到高潮无码文| 国产日本欧美一区二区| 在线观看av中文字幕| 国产91精品精华液一区二区三区 | 裸体裸乳免费看| 日韩理论电影院| 四虎永久国产精品| 亚欧洲精品视频在线观看| 国产乱码精品一区二区三区日韩精品 | 久久精品a一级国产免视看成人| 亚洲国产97在线精品一区| 性一交一乱一透一a级| 这里只有精品视频在线观看| 中文天堂在线视频| 欧美亚洲国产一区在线观看网站| 日本高清不卡码| 色综合一个色综合亚洲| 久久久成人免费视频| 精品久久久久久久久久| 国产精品100| 色综合网站在线| 欧美一区二区三区网站| 日韩欧美亚洲范冰冰与中字| 丁香六月婷婷综合| 色婷婷精品大在线视频| 在线免费观看av网址| 在线精品视频免费观看| 日本视频www色| 欧美日韩在线播放三区四区| 在线观看av大片| 91精品国产综合久久精品麻豆| 国产美女无遮挡永久免费| 91精品国模一区二区三区| 99久久精品日本一区二区免费 | 天堂在线一区二区三区| 国产一区二区剧情av在线| 欧美高清精品一区二区| 高清国产一区二区三区| 无码任你躁久久久久久老妇| 99久久精品免费| 久久国产柳州莫菁门| 最新不卡av在线| 国产极品美女高潮无套嗷嗷叫酒店| 黄色91在线观看| 91视频在线视频| 欧美男同性恋视频网站| 东京干手机福利视频| 亚洲男子天堂网| 中文字幕在线播放| 欧美高清电影在线看| 亚洲福利影院| 国产噜噜噜噜噜久久久久久久久| 国产专区精品| 久久涩涩网站| 久久久9色精品国产一区二区三区| 久久www视频| 久久久久久色| 永久看看免费大片| 久久九九国产精品| 日本少妇高清视频| 欧美日韩亚洲天堂| 91激情在线观看| 亚洲国语精品自产拍在线观看| 国产污视频在线| 欧美大胆在线视频| 三级在线看中文字幕完整版| 国产日韩在线观看av| 国产乱人伦丫前精品视频| 水蜜桃一区二区| 99视频一区| 天天做天天干天天操| 91亚洲精华国产精华精华液| 呻吟揉丰满对白91乃国产区| 亚洲成在线观看| 国产又粗又猛又爽又黄的| 亚洲精品国产拍免费91在线| 男人天堂久久久| 日本一区二区不卡| 爱爱精品视频| 亚洲一卡二卡区| 免费看黄裸体一级大秀欧美| 国产裸体视频网站| 国产精品你懂的| jizz国产在线观看| 亚洲第一视频网| 国产激情在线| 国产精品情侣自拍| 美女少妇全过程你懂的久久| 91传媒免费视频| 狠狠网亚洲精品| 亚洲色图日韩精品| 色狠狠一区二区| 色视频精品视频在线观看| 欧美黑人一级爽快片淫片高清| 粉嫩av一区二区三区四区五区 | 日韩一区亚洲二区| 成年人黄色片视频| 91亚洲国产成人精品一区二三| 青青草国产在线观看| 在线观看欧美日本| 青青久在线视频免费观看| 久久久久国产精品免费| 美女日韩一区| 国产四区在线观看| 久久精品国产久精国产| 97超碰在线资源| 欧美午夜精品久久久久久人妖| 国精产品一品二品国精品69xx| 久久精品夜夜夜夜夜久久| 久久青草免费| 午夜欧美性电影| 麻豆精品在线视频| a资源在线观看| 在线观看欧美日本| 阿v免费在线观看| 国产福利精品在线| av在线不卡免费观看| jizz欧美激情18| 国产欧美一区二区在线| 少妇无套内谢久久久久| 在线观看欧美日韩| 国产精品无码久久久久| 亚洲一区三区电影在线观看| 麻豆91在线播放| 国产在线观看免费视频软件| 欧美精品1区2区3区| 精品国产白色丝袜高跟鞋| 成人福利视频网| 欧美1区2区视频| 美女黄色一级视频| 黑人巨大精品欧美一区免费视频| 日本在线视频1区| 国产精品18久久久久久首页狼 | 99久久久国产精品| 97久久久久久久| 在线看福利67194| 日韩欧美激情| 永久免费看av| 不卡一区二区中文字幕| av黄色在线播放| 中文字幕在线观看日韩| 精品国产一区二区三区性色av| 久久精品无码中文字幕| 91在线国产观看| 中文字幕视频在线播放| 久久国产精品免费视频| 成人精品动漫一区二区三区| 免费黄色日本网站| 国产精品久久夜| 亚洲av无码片一区二区三区 | 亚洲欧美激情一区| 国内精品伊人| 国产二区视频在线| 国产网站一区二区三区| 国产精品无码久久av| 性色av一区二区三区红粉影视| 国产精品手机在线播放| 特级西西444www| 亚洲妇熟xx妇色黄| 高清av在线| 成人免费视频观看视频| 丝袜美腿成人在线| 欧美成人精品一区二区免费看片| 日韩成人av网| 四虎在线精品| 北条麻妃69av| 亚洲视频 欧洲视频| 韩日视频在线| www.av一区视频| 蜜桃一区二区三区在线| 国产成人无码精品久在线观看|