android特效
Ⅰ Android與iOS的區別
1、優先順序別不同:iOS最先響應屏幕
當我們使用iOS或者是Android手機時,第一步就是滑屏解鎖找到相應程序點擊進入。而這個時候往往是所有操控開始的第一步驟,iOS系統產品就表現出來了流暢的一面,但Android產品卻給人一種卡頓的現象,更別說後續深入玩游戲或者進行其它操控了。這是為什麼?
其實這與兩個系統的優先順序有關,iOS對屏幕反應的優先順序是最高的,它的響應順序依次為Touch--Media--Service--Core架構,換句話說當用戶只要觸摸接觸了屏幕之後,系統就會最優先去處理屏幕顯示也就是Touch這個層級,然後才是媒體(Media),服務(Service)以及Core架構。而Android系統的優先順序響應層級則是Application--Framework--Library--Kernal架構,和顯示相關的圖形圖像處理這一部分屬於Library,你可以看到到第三位才是它,當你觸摸屏幕之後Android系統首先會激活應用,框架然後才是屏幕最後是核心架構。
可以看到優先順序的不同導致了iOS產品以及Android手機在操控過程中的表現差異,當你滑動屏幕進行操控的時候,iOS系統會優先處理Touch層級,而Android系統則是第三個才響應Library層級,這是造成它們流暢度不同的因素之一。不過優先順序對系統流暢性有有影響不假,但並不是最絕對的,造成兩系統之間流暢性不一的現象還有其它因素。
2、硬體工作配置不同:iOS基於GPU加速
目前智能手機硬體裝備競賽當中,其實處理器等配置已經達到了一個瓶頸期,各大旗艦產品在硬體比拼當中基本上沒有太大的區別,而這時候GPU就成為了一個凸顯差異的重要因素。一些大型軟體像是3D游戲對GPU性能要求都會比較高,蘋果iPhone產品採用的Power VR SGX系列GPU在當下來說非常的主流,跑分測試數據證明了它並不會比一些旗艦級別的Android產品差勁。
而iOS系統對圖形的各種特效處理基本上正好都是基於GPU硬體進行加速的,它可以不用完全藉助CPU或者程序本身,而是通過GPU進行渲染以達到更流暢的操控表現。但是Android系統產品則並非如此,因為Android需要適應不同的手機硬體,需要滿足各種差異配置,所以很多圖形特效大多都要靠程序本身進行加速和渲染,並嚴重依賴CPU運算的操作自然會加大處理器的負荷,從而出現卡頓的問題。雖然Android 4.0以及4.1等更高版本中進行了改進將硬體加速設為默認開啟,但依舊無法做到所有特效全部都靠GPU進行加速。在很多Android手機裡面都自帶有;是否開啟GPU渲染;這個功能選項,不過開啟之後的改善也是微乎其微。
屏幕最先響應的優先順序關系,再加上iSO本身GPU加速程序的特性,使得大家在操控過程中感覺iOS手機擁有著不錯的流暢性。因為它本身的整個流程都是在為最大化的流暢做服務,不管是第一印象的滑動接觸屏幕,還是你進一步使用程序之後的更深層操作都是如此。而GPU加速這點特性,應該是它優於Android系統流暢性的又一個因素。
3、開發機制不同:安卓機制效率低
Android的編程語言是JAVA,而iOS的則為Objective-C,不過要是說Android系統之所以有些卡頓是因為JAVA開發語言的關系,或者是拿它和Objective-C對比肯定會有人提出質疑。Objective-C的優勢是效率高但比較;唯一;,而JAVA的優勢則是跨平台不過運行效率相對偏低,其實這兩個編程語言所帶來的機制不同,就已經造成了各自系統之間的流暢性差異化。
iOS的Objective-C,編譯器gcc,而這個gcc編譯出來的代碼又被蘋果專為iOS架構優化到了極致,運行過程中也不需要虛擬機在中間插手,執行效率自然很高--引自網路。這一段話應該是iOS系統本身運行程序的執行過程,而Android是通過JAVA虛擬機來執行,並且系統需要佔用大量內存來換取執行速度,再加上不定期的內存自動回收機制,從而直接導致了卡頓現象的出現。
Android的JAVA編程本身運行效率比Objective-C低一些,而且再加上內存自動回收的機制,所以造成了一些卡頓不流暢的現象出現。但根據技術人員講解,現代的JAVA虛擬機效率已經不再是最大的瓶頸,Android 4.0系統版本之後的卡頓現象明顯得到了改善,所以這也是有用戶並沒有發現自己新買的Android手機出現太多卡頓現象的.原因。看來編程語言和機制已經被Android進行了改善,這同樣也不是造成它與iOS流暢性偏差的唯一因素,不過影響卻是實實在在存在著。
4、系統設計不同:安卓APP無法統一
有了優先順序的關系,有了GPU加加速的影響,還有兩個系統各自編程以及機制的問題,似乎已經可以說明為什麼iOS相比Android更為流暢的原因。但最終還有一個問題是就是應用程序,很顯然用戶覺得卡頓都是在運行軟體的過程中產生,畢竟沒有安裝任何應用的初始出廠手機基本上都不存在不流暢或者延遲等現象,而且一款智能手機不安裝任何應用程序那也不符合用戶的購買初衷和使用行為。所以歸根結底,Android相比iOS的應用程序,到底出了什麼問題?
因為iOS產品的封閉性,所以所有的APP運行對象都比較單一,因為每個應用程序都是被運行在iPhone,iPad等iOS產品當中,它們有著很高的硬體利用效率。因為iOS系統的配件供應商只有那麼幾家,CPU也是一年換一次,這點不像Android終端年年變月月變,開發者很難遇見未來終端解析度會包含多少種,GPU驅動會包含哪些等等,所以相對來說Android應用開發成本較高且收益較慢。而iOS應用開發則因為軟硬體垂直整合而受益,這樣一來蘋果自然就保證了應用本身其與硬體產品之間的完美結合程度。
其實Android和iOS兩大系統APP開發情況的不同,也正是它們開發和不開放的特性所造成的。如果要是拿旗艦Android手機加上一個專為這款旗艦產品設計的游戲,來和蘋果iPhone 5運行對比的話,你真的不會遇到Android旗艦機出現卡頓延遲的問題,為什麼因為這款游戲針對這款手機設計,在軟硬等方面都達到了最大化的兼容和優化,自然就不會出現停滯的現象。
而Android系統程序要被安裝在各種符合要求的手機上面,開發者也不可能針對所有的機器型號進行開發,只能在比較主流的機器上進行測試並保證運行效果,所以他們為了兼顧整個產品線只能不得不降低游戲體驗以達到高中低產品可以共用的效果。最後那些占據了Android終端份額的大量大眾用戶們由於自己的手機不是旗艦產品而得不到流暢的使用體驗,自然而然就會產生Android產品不如iOS流暢的抱怨。
Ⅱ Android在canvas中實現高性能的煙花/粒子特效
新年到了,本文將展示通過自定義view繪制煙花效果的案例,同時介紹一種優化canvas繪制時的性能的方法.
每點擊一下屏幕會產生一枚煙花,煙花飛到最上空會炸裂成60~100個碎片,
同屏可能有上千個粒子在不停更新它的位置.
github
這時候功能基本實現了,剩下的就是將每一個煙花繪制在canvas上,通常我們會這樣寫
然而你會發現性能很糟糕,幀數隨著粒子數的增加直線下降直到個位數,優化如下
some codes were from Daniel Shiffman
Ⅲ Android視頻編輯SDK
銳動視頻編輯SDK android版集視頻拍攝和視頻剪輯功能於一體,同時包含視頻配音配樂、字幕特效、濾鏡、轉場等各種功能,全方位滿足開發者的需求,並可以快速植入到APP中。編輯預覽時支持智能硬體解碼,選擇視頻時不需要轉碼,減少用戶等待時間。
實時美顏
多段拍攝 一個視頻可以分多段次拍攝,並支持回刪
多種拍攝模式 支持長按拍攝、快速點擊持續拍攝
定時拍 支持5秒內定時拍攝
攝像頭切換 前、後攝像頭自由切換,中間無卡頓
多比例支持 支持1:1 、9:16、16:9多個比例錄制
變焦、對焦 通過相應手勢可以縮放攝像頭採集畫面及清晰度(依賴硬體支持)
濾鏡 內置主流濾鏡,與編輯濾鏡同步,支持擴展更多濾鏡
照片 當前攝像頭畫面保存到圖片
濾鏡 內置主流濾鏡,支持擴展更多濾鏡
字幕、特效 字幕特效在指定位置,指定時間段顯示; 字幕支持設置字體大小和顏色及背景圖; 實時預覽效果
配音、配樂 支持指定時間段添加配音; 支持配音、配樂與視頻原音比例調節; 支持本地添加更多配樂
截取、分割 支持毫秒級截取、分割視頻; 支持快速預覽截取、分割後視頻
調速 調整視頻的播放速度,快放或者慢放
轉場 支持多種轉場; 支持隨機轉場、指定轉場時長等擴展設置
其它編輯功能 支持多種比例裁剪; 支持90、180、270度旋轉視頻畫面; 支持左右鏡像、上下鏡像; 支持輸出比例調整; 支持橫屏編輯; 支持文字版; 支持圖片時長設置; 支持視頻調序等
您可以在安卓市場搜索「秀拍客」,我們使用本SDK整合的app。目前很多國內外軟體企業已經整合到他們的產品中,我們這里不方便進行羅列。
www.rdsdk.com 致力於專業的人做專業的事,降低客戶的開發時間和開發成本,你只需要支付很少的費用,花上幾個小時就能增加視頻編輯功能。
單擊申請試用
開發文檔: 點擊查看
JAVA介面文檔: 點擊查看
SDK交流群: 305128688
咨詢電話: 4008989105
客服電話: 15313066905 (周一至周五 9:00-18:00)
客服郵箱: [email protected]
Ⅳ android怎麼實現專場動效
實現特效的話,如果代碼實在實現不了的話,那就使用視頻播放,可以循環播放幾秒的動畫
Ⅳ android ScrollView 滑動特效 怎麼做成iphone那樣有慣性彈性!
只使用listview的特性似乎做不出來。要onTouchEvent吧。大概就是起一個100mS定時器,計算滑動速度,然後在滑動結束後,繼續計算滑動距離和速度吧。
Ⅵ 想用android做一些拖尾特效,各位大神有什麼思路嗎
用雙緩沖,我記得之前做過的.net游戲的效果就是這么做出來的
Ⅶ android卡片上下切換特效
實現了在android實現左右滑動切換界面的效果
這是實現了在android實現左右滑動切換界面的效果,該效果的源碼下載,請到源碼天堂下載吧,喜歡的朋友可以研究一下。
布局文件
< xml version="1.0" encoding="utf-8" > <LinearLayout xmlns:android="; android:id="@+id/layContain" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" android:background="@drawable/bg" > <!-- android:background="#FFC0CB"--> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="horizontal" > <LinearLayout android:id="@+id/layFirst" android:layout_width="400px" android:layout_height="fill_parent" android:orientation="vertical" android:layout_marginBottom="50dp" > </LinearLayout> <LinearLayout android:id="@+id/laySec" android:layout_width="400px" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout> <LinearLayout android:id="@+id/layThird" android:layout_width="400px" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout> <LinearLayout android:id="@+id/layFourth" android:layout_width="400px" android:layout_height="fill_parent" android:orientation="vertical" > </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|bottom" android:layout_marginBottom="40dp" > <TextView android:id="@+id/roll_dot1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." android:textSize="50dp" android:textColor="#ffffff" /> <TextView android:id="@+id/roll_dot2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." android:textSize="50dp" android:textColor="#000000" /> <TextView android:id="@+id/roll_dot3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="." android:textSize="50dp" android:textColor="#000000" /> <TextView android:id="@+id/
Ⅷ android怎樣實現多張圖片的旋轉木馬切換的3d特效
我們最近在整理一款這樣的包含各種3d效果的SDK,到時發布了給你用
Ⅸ Android音樂播放器歌詞的卡拉OK特效如何實現
普通以行為單位變換歌詞一般是用canvas(畫布)
以字為單位的變換估計是用ProgressBar(進度條)功能實現的吧
你可以試試!
Ⅹ Android自定義View——從零開始實現書籍翻頁效果(一)
前言 :本篇是系列博客的第三篇,這次我們要研究 書籍翻頁效果 。不知道大家平時有沒用過iReader、掌閱這些小說軟體,裡面的翻頁效果感覺十分的酷炫。有心想研究研究如何實現,於是網上找了找,發現這方面的教學資料非常少,所幸能找到 何明桂大大 的 Android 實現書籍翻頁效果----原理篇 這樣的入門博客(感謝大大 Orz),我們就以這篇博客為切入點從零實現我們自己的翻頁效果。由於這次坑比較深,預計會寫好幾期,感興趣的小夥伴可以點下關注以便及時收到更新提醒,謝謝大家的支持 ~
本篇只著重於思路和實現步驟,裡面用到的一些知識原理不會非常細地拿來講,如果有不清楚的api或方法可以在網上搜下相應的資料,肯定有大神講得非常清楚的,我這就不獻丑了。本著認真負責的精神我會把相關知識的博文鏈接也貼出來(其實就是懶不想寫那麼多哈哈),大家可以自行傳送。為了照顧第一次閱讀系列博客的小夥伴,本篇會出現一些在之前 系列博客 就講過的內容,看過的童鞋自行跳過該段即可
國際慣例,先上效果圖,本次主要實現了 基本的上下翻頁效果 與 右側最大翻頁距離的限制
在看這篇博客之前,希望大家能先了解一下書籍翻頁的實現原理,博客鏈接我已經貼出來了。通過原理講解我們知道,整個書籍翻頁效果界面分成了三個區域, A 為當前頁區域, B 為下一頁區域, C 為當前頁背面,如圖所示
書籍翻頁效果的實現就是要以我們 觸摸屏幕位置的坐標 為基礎繪制出這三個區域,形成模擬翻頁的特效。要繪制這三個區域,我們需要通過一組 特定的點 來完成,這些點的坐標需要通過兩個已知的點( 觸摸點 、 相對邊緣角 )計算得到,下圖我將各個特定點的位置和計算公式貼出來,大家對照著原理一起理解(渣畫工望體諒 ╮(╯▽╰)╭ ),其中 b 點是由 ae 和 cj 的交點, k 點是由 ah 和 cj 的交點
簡單總結一下, a 是觸摸點, f 是觸摸點相對的邊緣角, eh 我們設置為 af 的垂直平分線,則 g 是 af 的中點, ab 、 ak 、 dj 是 直線 ; 曲線cdb 是起點為 c ,控制點為 e ,終點為 b 的 二階貝塞爾曲線 ; 曲線kij 是起點為 k ,控制點為 h ,終點為 j 的 二階貝塞爾曲線 ,區域 A 、 B 、 C 就由這些點和線劃分開來。我們將這些點稱為標識點,下一步就是模擬設定 a 和 f 點的位置,將這組標識點繪制到屏幕上來驗證我們的計算公式是否正確,創建 BookPageView
實體類 MyPoint 用來存放我們的標識點坐標
界面布局:
在Activity中進行注冊
效果如圖
前文我們提到 ab 、 ak 、 dj 是 直線 ; 曲線cdb 是起點為 c ,控制點為 e ,終點為 b 的 二階貝塞爾曲線 ; 曲線kij 是起點為 k ,控制點為 h ,終點為 j 的 二階貝塞爾曲線 。通過觀察分析得知, 區域A 是由View 左上角 , 左下角 , 曲線cdb , 直線 ab 、 ak , 曲線kij , 右上角 連接而成的區域,修改 BookPageView ,利用 path 繪制處 區域A
效果如圖
區域C 理論上應該是由點 a , b , d , i , k 連接而成的閉合區域,但由於 d 和 i 是曲線上的點,我們沒辦法直接從 d 出發通過 path 繪制路徑連接 b 點( i , k 同理),也就不能只用 path 的情況下直接繪制出 區域C ,我們需要用 PorterDuffXfermode 方面的知識「曲線救國」。我們試著先將點 a , b , d , i , k 連接起來,觀察閉合區域與 區域A 之間的聯系。修改 BookPageView
效果如圖
我們將兩條曲線也畫出來對比觀察
觀察分析後可以得出結論, 區域C 是 由直線ab,bd,dj,ik,ak連接而成的區域 減去 與區域A交集部分 後剩餘的區域。於是我們設置 區域C 畫筆 Xfermode 模式為 DST_ATOP
效果如圖
最後是 區域B ,因為 區域B 處於最底層,我們直接將 區域B 畫筆 Xfermode 模式設為 DST_ATOP ,在 區域A、C 之後繪制即可,修改 BookPageView
效果如圖
翻頁可以從右下方翻自然也可以從右上方翻,我們將 f 點設在右上角,由於View上下兩部分是呈 鏡像 的,所以各標識點的位置也應該是鏡像對應的,因為 區域B和C 的繪制與 f 點沒有關系,所以我們只需要修改 區域A 的繪制邏輯,新增 getPathAFromTopRight() 方法
效果如圖
之前由於測試效果沒有對View的大小進行重新測量,在實現觸摸翻頁之前先把這個結了。重寫View的 onMeasure() 方法
我們的需求是,在上半部分翻頁時 f 點在右上角,在下半部分翻頁時 f 則在右下角,當手指離開屏幕時回到 初始狀態 ,根據需求,修改 BookPageView
在Activity中監聽View的 onTouch 狀態
注意,要設置 android:clickable 為 true ,否則無法監聽到 ACTION_MOVE 和 ACTION_UP 狀態
效果如圖
到這里我們已經實現了基本的翻頁效果,但要還原真實的書籍翻頁效果,我們還需要設置一些限制條件來完善我們的項目
對於一般的書本來說,最左側應該是釘起來的,也就是說如果我們從右側翻頁,翻動的距離是 有限制的 ,最下方翻頁形成的曲線起點( c 點)的x坐標不能小於0(上方同理),按照這個限定條件,修改我們的 BookPageView
效果如圖
至此本篇教程就告一段落了,當然還有許多功能需要繼續完善,例如橫向翻頁、翻頁動畫、陰影效果等等,這些都會在後面的教程中一一解決。如果大家看了感覺還不錯麻煩點個贊,你們的支持是我最大的動力~