精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产美女久久久久久| 六月丁香婷婷激情| 97人妻精品一区二区三区视频| 国产一卡不卡| 欧美性感一区二区三区| 亚洲一区二区三区在线观看视频| 在线观看毛片网站| 欧美日韩国产色综合一二三四| 日韩精品一区二区在线| 精品人妻少妇一区二区| 免费福利在线观看| 久久精品国产一区二区| 欧美国产第一页| 素人fc2av清纯18岁| 欧洲成人一区| 一区二区欧美国产| 久热国产精品视频一区二区三区| 久久这里只有精品9| 欧美激情第二页| 亚洲精品一区二区久| 漂亮人妻被中出中文字幕| 国产理论电影在线观看| 日韩成人av影视| 欧美成人免费大片| 法国伦理少妇愉情| 国产在线视频欧美一区| 午夜伦欧美伦电影理论片| 天堂一区二区三区| 理论片中文字幕| 日本女人一区二区三区| 欧美高清电影在线看| 欧美图片第一页| 久久久久九九精品影院| 色8久久精品久久久久久蜜| 伊人久久av导航| 性高潮久久久久久久久久| 久久精品国产成人一区二区三区| 韩国一区二区电影| 永久免费看片视频教学| 亚洲视频三区| 欧美亚洲动漫制服丝袜| 成年人午夜免费视频| 免费理论片在线观看播放老| 国产福利一区二区三区| 国产精品露脸自拍| 你懂的国产视频| 欧美不卡视频| 色妞欧美日韩在线| 黄色正能量网站| 免费精品一区二区三区在线观看| 色综合久久中文字幕综合网| 国产乱人伦精品一区二区三区| 91女主播在线观看| 久久亚洲免费视频| 国产一区自拍视频| 国产精品无码AV| 日本最新不卡在线| 日本久久91av| av大片免费观看| 最新成人av网站| 久久亚洲春色中文字幕| 欧美老熟妇乱大交xxxxx| 都市激情久久| 亚洲高清久久久久久| 国产精品果冻传媒| 6080亚洲理论片在线观看| 日韩亚洲电影在线| 伊人精品视频在线观看| 日韩欧国产精品一区综合无码| 一本大道久久a久久综合| 成人在线视频观看| 久久99国产精品久久99果冻传媒| 久久久亚洲天堂| 一区二区三区四区五区| 国产精品久久久久久久久久10秀 | 亚洲美女久久久| 亚洲综合20p| 高清一区二区| 日韩欧美国产高清| 成年人看片网站| 91蝌蚪精品视频| 日韩一级大片在线| 色91精品久久久久久久久| 九九久久国产| 91麻豆精品国产91久久久久久久久| 男女啪啪网站视频| 精品176极品一区| 91麻豆精品国产| 久久久久中文字幕亚洲精品| jizz久久精品永久免费| 亚洲精品成人久久电影| 中文字幕一区二区人妻在线不卡| 国产精品片aa在线观看| 一本大道亚洲视频| 性欧美疯狂猛交69hd| 午夜精品国产| 97在线视频精品| 樱花视频在线免费观看| 久99久精品视频免费观看| 亚洲一区制服诱惑| 粉嫩小泬无遮挡久久久久久| 91蝌蚪porny成人天涯| 日韩高清国产精品| 日韩三级电影视频| 欧美日韩一区二区精品| 欧美婷婷精品激情| 久久久久久久久成人| 亚洲国产精品人久久电影| 亚洲av片不卡无码久久| 久久高清免费| 欧美日韩不卡合集视频| 男人日女人网站| 久久精品国产一区二区| 国产一区二区自拍| 日本不卡在线| 天天综合天天做天天综合| 天天天干夜夜夜操| 91精品日本| 亚洲国产一区二区三区在线观看| 国产精品成人无码免费| 久久精品久久久| 26uuu久久噜噜噜噜| 91午夜交换视频| 久久综合成人精品亚洲另类欧美 | 日本高清中文字幕二区在线| 国产精品无人区| 免费在线看黄色片| 成人在线免费电影网站| 日韩精品高清视频| 99久久99久久精品国产| 另类激情亚洲| 91精品入口蜜桃| 18免费在线视频| 亚洲一区二区三区在线播放| 中文字幕第80页| 国产伦精品一区二区三区在线播放 | 999精品视频一区二区三区| 美丽的姑娘在线观看免费动漫| 亚洲国产一区二区三区青草影视| 亚洲 国产 图片| 国产成人av毛片| 日韩有码在线视频| 日本va欧美va国产激情| 国产精品69毛片高清亚洲| 视频一区视频二区视频| 亚洲欧洲日本韩国| 亚洲韩国欧洲国产日产av| 黑鬼狂亚洲人videos| 男女性色大片免费观看一区二区| 国产视频一区二区不卡| а√天堂8资源中文在线| 日韩精品一区二区三区四区视频| 九九热久久免费视频| 久久精品动漫| 美日韩精品免费| 国产精品蜜芽在线观看| 337p日本欧洲亚洲大胆精品| 天天干中文字幕| 久久99国内精品| 一区国产精品| av成人免费看| 中文字幕精品在线视频| 国产又粗又黄又爽的视频| 中文子幕无线码一区tr| 午夜免费高清视频| 欧洲杯什么时候开赛| 日韩**中文字幕毛片| 五月婷婷六月色| 天天综合网 天天综合色| 小毛片在线观看| 亚洲精品九九| 久久精品美女| 蜜臀国产一区| 国产性猛交xxxx免费看久久| www.久久久久久久| 国产午夜亚洲精品午夜鲁丝片| 99999精品视频| 亚洲日产av中文字幕| 国产99视频在线观看| 国产永久免费高清在线观看 | www.com亚洲| 久久久久久久综合日本| av黄色在线网站| 综合干狼人综合首页| 欧美壮男野外gaytube| 国产大片在线免费观看| 欧美人狂配大交3d怪物一区| 99久久婷婷国产综合| 国产99久久久国产精品免费看| 91黄色在线看| 竹菊久久久久久久| 国产精品夜色7777狼人| 影音先锋男人在线资源| 亚洲精品在线三区| 精品人妻无码一区二区性色| 亚洲国产精品激情在线观看| 极品粉嫩美女露脸啪啪| 91久久中文| 亚洲黄色成人久久久| 精品国产一区二区三区2021| 操91在线视频| 亚洲AV无码一区二区三区少妇| 精品国产鲁一鲁一区二区张丽| 日本性生活一级片| 久久国产99| 伊人av成人| 欧美jizz19性欧美| 热久久免费国产视频| 男人影院在线观看| 日韩免费一区二区三区在线播放| 日本道在线观看| 最新国产精品久久精品| 好男人香蕉影院| 毛片一区二区三区| 激情伊人五月天| 日韩精品dvd| 国产三级精品在线不卡| 久久不卡日韩美女| 97香蕉超级碰碰久久免费的优势| 亚洲搞黄视频| 亚洲国产三级网| 国产精品久久久久久久久毛片 | 亚洲在线观看免费| 国产手机在线观看| 国产成人av自拍| 无码内射中文字幕岛国片| 在线成人激情| 日韩国产精品一区二区三区| 蜜桃精品视频| 国产精品亚洲激情| 极品美女一区| 欧美激情国内偷拍| 免费大片在线观看www| 亚洲欧美激情视频| 精品人妻一区二区三区麻豆91 | 久久99最新地址| 日韩国产欧美亚洲| 欧美三级午夜理伦三级中文幕| 日韩欧美精品一区二区三区经典| 综合成人在线| 91免费在线视频网站| 成人看片网站| 91av视频在线| 波多野结衣中文字幕久久| 日韩有码在线视频| 午夜在线小视频| 亚洲欧美一区二区三区四区 | 97最新国自产拍视频在线完整在线看| 亚洲韩国欧洲国产日产av | 久久精品国产亚洲高清剧情介绍 | 夜夜嗨av一区二区三区| 国产白丝一区二区三区 | 欧美三级韩国三级日本一级| 国产成人精品网| 亚洲国产精品一区二区久久恐怖片| 亚洲色图第四色| 久久久久久麻豆| 中文字幕在线1| 久久精品亚洲一区二区三区浴池| 国产又黄又粗又猛又爽的视频| 成人午夜激情影院| 性猛交╳xxx乱大交| 国产精品自在欧美一区| 欧美一级特黄aaa| 免费观看30秒视频久久| 亚洲天堂网一区| 青青草一区二区三区| 青青草精品视频在线观看| 日韩不卡在线观看日韩不卡视频| 丁香啪啪综合成人亚洲| 国产精品最新自拍| 国产1区2区在线| 免费一级欧美片在线播放| www..com日韩| 黄色欧美日韩| 国产淫片免费看| 老司机午夜精品视频| 中文字幕乱码人妻综合二区三区 | 精品午夜一区二区三区在线观看| 邪恶网站在线观看| 久久超碰97中文字幕| 97人人爽人人| 乱一区二区av| av在线网站免费观看| 高清shemale亚洲人妖| 丝袜熟女一区二区三区| 91美女视频网站| 呻吟揉丰满对白91乃国产区| 综合久久国产九一剧情麻豆| 国产极品国产极品| 亚洲成a天堂v人片| 日韩精品成人一区| 色综合久久综合网97色综合| 91 中文字幕| 精品久久免费看| 精品亚洲综合| www国产精品com| www.综合| 国产精品国产三级国产专播精品人 | 日韩欧美激情一区| 免费观看成年人视频| 亚洲第一男人av| 国产天堂在线| 欧美日韩高清在线观看| 午夜欧美激情| 国产精自产拍久久久久久| 日韩精品成人在线观看| 你懂的网址一区二区三区| 日韩理论电影院| 国产欧美精品aaaaaa片| 久久亚洲精品伦理| 杨幂一区二区国产精品| 久久久精品免费网站| 亚洲av无码一区二区三区在线| 香蕉加勒比综合久久| 亚洲一级黄色大片| 亚洲精品久久久久久久久久久久久 | 怡红院男人天堂| 日韩精品一区二区三区在线播放 | 日韩一区二区电影在线| 日本护士...精品国| 美女久久久久久久久久久| 亚洲第一av| 2022国产精品| 国产欧美日韩视频在线| 美女扒开大腿让男人桶| 麻豆专区一区二区三区四区五区| 能看毛片的网站| 欧美国产激情一区二区三区蜜月| 国产中文字字幕乱码无限| 欧美日韩在线一区二区| 欧美在线观看在线观看| 欧美乱大交做爰xxxⅹ性3| 欧美电影在线观看网站| 日韩福利在线| 日本特黄久久久高潮| 丰腴饱满的极品熟妇| 精品久久久久久| 日本高清视频www| 欧美交受高潮1| 一区二区三区视频播放| 日韩精品免费一区| 国产jizzjizz一区二区| 好吊色视频在线观看| 91精品国产综合久久精品性色| 九色porny丨首页在线| 国产伦精品一区二区三区精品视频 | 91麻豆精品国产自产在线| 2019中文字幕在线视频| 国产在线精品自拍| 一区二区三区国产精华| 亚洲综合中文网| 一二三四社区欧美黄| 亚洲精品97久久中文字幕| 欧美日本高清视频| 国产精品传媒| 国产精品50p| 久久久久久久一区| 在线观看黄色国产| 欧美成人免费观看| 国偷自产av一区二区三区| 欧美日韩精品在线一区二区 | 日韩精品123区| 欧美一级一区二区| 牛牛精品在线视频| 久久综合久久久| 热久久一区二区| 男人与禽猛交狂配| 日韩精品福利网站| 日韩另类视频| 国产免费xxx| 97久久超碰国产精品| 欧美一区二区三区久久久| 日韩中文字幕亚洲| 国产精品欧美大片| 国产精品wwwww| 17c精品麻豆一区二区免费| 精品黑人一区二区三区在线观看| 午夜精品免费视频| 一本久久青青| 樱花草www在线| 午夜成人在线视频| wwwxxx在线观看| 懂色中文一区二区三区在线视频| 性高湖久久久久久久久| 2014亚洲天堂| 亚洲国产美女精品久久久久∴| 欧美free嫩15| 国产黄色激情视频| 欧美激情中文字幕| www.成人免费视频| 日韩免费av一区二区| 欧美在线免费| 精品无码国产污污污免费网站| 91精品麻豆日日躁夜夜躁| 中文字幕在线视频网站| 一本一道久久久a久久久精品91| av在线不卡观看免费观看| 中文字幕自拍偷拍| 午夜精品久久久久久久99热浪潮|