導航:首頁 > 操作系統 > android開源動畫庫

android開源動畫庫

發布時間:2023-02-15 14:26:51

1. 谷歌推薦android開源庫有哪些

  1. ActionBarSherlock : Action Bar是Android 3.0後才開始支持的,ActionBarSherlock是讓Action Bar功能支持2.X後的所有平台,而且他會自動的判斷是調用原生Action Bar還是使用擴展ActionBar。

  2. Android-ViewPagerIndicator : 這是與ViewPager兼容的一個分頁指示器庫。分頁指示器(Friends 和 Suggested就是分頁,而下面藍色的小條就是指示器,ViewPagerIndicator支持多種樣式的指示器。)

  3. NineOldAndroids : NineOldAndroids 將 Honeycomb (Android 3.0) 的動畫 API 擴展到了Android 1.0以上。這個庫的作者即是 ActionBarSherlock 的作者,也是Android-ViewPagerIndicator 的作者


2. 平常收藏的酷炫的Android開源特效庫

       現在github上面越來越多大神,開源了各種特效庫出來,真的很炫很贊呀,經常看到一些,收藏了不少,項目中總用得著的,統一記錄一下,嘖嘖嘖~作為我在上的第一篇文章,哇咔咔咔~很喜歡的UI,小清新,給人一種干凈舒服的感覺,哈哈。

1. AndroidViewAnimations   動畫效果,提供了各種類型的動畫效果

2. material-ripple   點擊波紋效果,讓指定View顯示Material Ripple 效果的控制項,適用於所有的view

3. MaterialEditText ​   Material Design風格的輸入框控制項,可以設置圖標,支持懸浮文字提示

4. MaterialViewPager    Material 風格的ViewPager庫

5. Android圓形進度按鈕,有時候項目中經常有一些圓形的按鈕啊,還要自己在drawable中寫個xml文件來給自己的按鈕設置背景,有了這個真的是方便很多耶

6. MaterialDateTimePicker    日期選擇器,Material風格,很漂亮,包括日歷選擇器和時間選擇器,很強大 

7. SCViewPager    引導頁,每個應用都有引導頁吧,很方便,很好用

8. AndroidImageSlider   Android的圖像滑塊 ​ ,一個多姿勢的輪播組件 

9. MaterialSearchView   非常漂亮的Material搜索視圖

10. material-dialogs

11. material-calendarview    日歷視圖

12. NiftyDialogEffects    高顏值的動畫效果的Dialog

13. Android-PickerView    仿iOS的PickerView控制項,有時間選擇和選項選擇並支持一二三級聯動效果

14. BottomNavigation    底部導航欄,很酷炫喲~

15. InfiniteCycleViewPager    一個有趣的ViewPager,超級酷炫

16. RecyclerViewCardGallery    RecyclerView實現Card Gallery效果,替代ViewPager方案。能夠快速滑動並最終定位到居中位置

17. WaveSideBar     一個效果非常酷炫的索引側邊欄

18. 3dTagCloudAndroid    一個完全基於Android ViewGroup編寫的控制項,支持將一組View展示為一個3D球形集合,並支持全方向滾動

19. AndroidTagView

20. VideoListPlayer 實現了在列表控制項(ListView, RecyclerView)中載入並播放視頻,並支持滑動時自動播放/暫停的功能, 利用該項目,可以輕松實現類似Instagram的視頻播放功能

21. EditTextFirework-Demo 一個絢麗易用的輸入框煙花效果,模仿網頁360搜索框

22. Android-SpinKit Android 載入動畫庫

3. 安卓開源的android-FlipView,了解的請幫忙

1.ActionBarSherlock

ActionBarSherlock應該算得上是GitHub上最火的Android開源項目了,它是一個獨立的庫,通過一個API和主題,開發者就可以很方便地使用所有版本的Android動作欄的設計模式。

對於Android
4.0及更高版本,ActionBarSherlock可以自動使用本地ActionBar實現,而對於之前沒有ActionBar功能的版本,基於Ice
Cream
Sandwich的自定義動作欄實現將自動圍繞布局。能夠讓開發者輕松開發一款帶動作欄(Action
bar)的應用,並且適用於Android 2.x及其以上所有版本。

2.facebook-android-sdk

Facebook SDK for Android是一個開源庫,允許開發者將Facebook集成到所開發的Android應用中。

3.SlidingMenu(SlidingMenu
Demos)

SlidingMenu是一個開源的Android庫,能夠讓開發者輕松開發一款應用,實現類似於Google+、Youtube和Facebook應用中非常流行的滑動式菜單。

使用SlidingMenu的Android應用:

Foursquare
Rdio
Plume
VLC for Android
ESPN ScoreCenter
MLS MatchDay
9GAG
Wunderlist 2
The Verge
MTG Familiar
Mantano Reader
Falcon Pro (BETA)
MW3 Barracks
4. cocos2d-x

在移動開發領域,將Cocos2D-X用於主流iOS/Android游戲開發的公司、開發團隊多不勝數。cocos2d-x是一個開源的支持多平台的2D游戲框架,使用C++開發,基於cocos2d-iphone,在MIT許可證下發布。主分支在GitHub上使用OpenGL
ES 2.0渲染,而舊版gles11分支則使用OpenGL ES 1.1渲染。

支持iOS、Android、Windows Phone
8、Bada、BlackBerry、Marmalade、Windows、Linux等多個平台。支持C++、Lua、javaScript編程語言。

5. android
GitHub Android App是GitHub開源的Android客戶端,支持Issues、Gists,並集成了新聞Feed,能夠讓你及時跟進組織及關注的開發者、庫等。同時,該應用還提供了一個用戶快速訪問你所創建、監控及發布issue的面板,可查看並將問題加入到收藏夾,可對標簽、里程碑和任務進行過濾配置。

android資源庫包含了GitHub Android App的所有源代碼。

6.Android-ViewPagerIndicator

ViewPager指針項目,在使用ViewPager的時候能夠指示ViewPager所在的位置,就像Google
Play中切換的效果一樣,還能使用在應用初始化的介紹頁面。

兼容Android支持庫的ViewPager及ActionBarSherlock,最初是基於Patrik
Åkerfeldt的ViewFlow。

7. MonoGame

MonoGame是一個Microsoft XNA 4.x
Framework的開源跨平台實現。用於讓XNA開發者將他們在Xbox 360、Windows &
Windows Phone上開發的游戲移植到iOS、Android、Mac OS X、Linux及Windows 8
Metro上,目前,PlayStation Mobile & Raspberry PI的開發正在進行中。

8.Android-PullToRefresh

該項目用於為Android提供一個可重用的下拉刷新部件。它最初來源於Johan
Nilsson的庫(主要是圖形、字元串和動畫),但這些後來都已被取代。

9. android-async-http

android-async-http是Android上的一個非同步、基於回調的HTTP客戶端開發包,建立在Apache的HttpClient庫上。

10.Android-Universal-Image-Loader

Android上最讓人頭疼的莫過於從網路獲取圖片、顯示、回收,任何一個環節有問題都可能直接OOM,這個項目或許能幫到你。

Universal Image Loader for
Android的目的是為了實現非同步的網路圖片載入、緩存及顯示,支持多線程非同步載入。它最初來源於Fedor
Vlasov的項目,且自此之後,經過大規模的重構和改進。

11. GreenDroid

GreenDroid最初是由Cyril
Mottier發起,是一個Android的UI開發類庫,能夠讓UI開發更加簡便,並且在應用中始終保持一致。

12. Anki-Android

AnkiDroid是一個免費、開源的Android的快閃記憶體應用,可直接從Google
Play進行下載。

13.android-actionbar

Action
bar是一個標識應用程序和用戶位置的窗口功能,並且給用戶提供操作和導航模式。在大多數的情況下,當開發者需要突出展現用戶行為或在全局導航的activity中使用action
bar,因為action
bar能夠使應用程序給用戶提供一致的界面,且系統能夠很好地根據不同的屏幕配置來適應操作欄的外觀。

Action bar的主要目的:

提供一個用於識別應用程序的標示和用戶的位置的專用空間。
在不同的應用程序之間提供一致的導航和視覺體驗。
突出Activity的關鍵操作,並且在可預見的方法內給用戶提供快捷的訪問。
14.android-viewflow

android-viewflow是Android平台上的一個視圖切換的效果庫,ViewFlow相當於Android
UI部件提供水平滾動的ViewGroup,使用Adapter進行條目綁定。

15.android-mapviewballoons

當使用Android地圖外部庫(com.google.android.maps)時,android-mapviewballoons會提供一個簡單的方式來對地圖覆蓋進行標注,就是一個簡單的信息氣泡。

它由BalloonOverlayView組成,是一個代表顯示你的MapView及BalloonIt www.hbbz08.com emizedOverlay的氣泡的視圖,BalloonItemizedOverlay是ItemizedOverlay的一個抽象擴展。

16.PushSharp

一個向iOS(iPhone/iPad APNS)、Android(C2DM和GCM)、Windows
Phone和Windows 8設備發送推送通知的伺服器端庫。

17.androidannotations

Android Annotations是一個開源的框架,用於加速
Android應用的開發,可以讓你把重點放在功能的實現上,簡化了代碼,提升了可維護性。

18.HockeyKit

Hockey是一個iOS Ad-Hoc自動更新框架。蘋果App
Store中的所有App都可以使用它,它能夠顯著地提高Beta測試的整個過程,分為兩部分:伺服器和客戶端框架。伺服器組件需要所有腳本,但在沒有客戶端庫的情況下,也可以單獨工作。它提供一個Web介面,Beta測試者可以使用它來安裝最新的AdHoc配置文件,也可以直接在設備上通過Safari安裝最新的Beta版本。

只需在伺服器上安裝一次服務端,就可以處理包標識符不同的多個應用程序(有開發者強烈建議對Debug、AdHoc Beta和AppStore發布版使用不同的包標識符)。
默認當App啟動或喚醒時,客戶端會從伺服器檢測更新,用戶可以在設置對話框中進行修改:一天一次或手動檢查更新。
除了支持iOS,HokeyKit也支持Android平台, 不過Android版還處在Alpha階段,支持OTA及應用內更新。
為HockeyKit用戶提供伺服器託管服務。
19.android-menudrawer

Android上的菜單展示風格各異,其中用得最多且體驗最好的莫過於左右滑動來顯示隱藏的菜單,android-menudrawer是一個滑動式菜單實現,允許用戶在應用當中實現無縫導航。該項目具有多種菜單展示效果,其中最常見的就是通過屏幕邊緣拖動或點擊動作欄的「向上」按鈕顯示。

4. android開發框架有哪些

1、Rajawali
介紹:
安卓的OpenGL ES 2.0/3.0 引擎。可以用於製作普通應用或者動態壁紙,當然也可以用於製作游戲。
項目地址: https://github.com/Rajawali/Rajawali

2、RxAndroid
介紹:
RxAndroid是RxJava的一個針對Android平台的擴展。它包含了一些能夠簡化Android開發的工具。
項目地址: https://github.com/ReactiveX/RxAndroid
3、Paginize
介紹:
Paginize 是一個輕量級的UI框架,使用註解來注入布局和view,除了使用註解之外,該框架還有兩個特色:1.用Page的概念來取代Fragment,2.切換page時自帶ios風格的動畫效果。
項目地址: https://github.com/neevek/Paginize

4、otto
介紹:
Otto 是square公司出的一個事件庫(pub/sub模式),用來簡化應用程序組件之間的通訊。 Otto 修改自Google的Guava庫,專門為Android平台進行了優化。
項目地址: https://github.com/square/otto

5 、rebound
介紹:
rebound是facebook的開源動畫庫。可以認為這個動畫庫是獨立於android Framework之外的一種動畫實現。
項目地址: https://github.com/facebook/rebound

6、KJFrameForAndroid
介紹:
KJFrameForAndroid 又叫KJLibrary,是一個幫助快速開發的框架。使用KJFrameForAndroid,你可以只用一行代碼就完成http請求、網路圖片載入、資料庫數據保存或讀取。
項目地址: https://github.com/kymjs/KJFrameForAndroid

7、xUtils
介紹:
xUtils
包含了很多實用的android工具。 xUtils
支持大文件上傳,更全面的http請求協議支持(10種謂詞),擁有更加靈活的ORM,更多的事件註解支持且不受混淆影響... xUitls
最低兼容android 2.2 (api level 8)
項目地址: https://github.com/wyouflf/xUtils

目前xUtils主要有四大模塊:
DbUtils模塊:
android中的orm框架,一行代碼就可以進行增刪改查;
支持事務,默認關閉;
可通過註解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請註解表名和列名);
支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
自動載入外鍵關聯實體,支持延時載入;
支持鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。
ViewUtils模塊:
android中的ioc框架,完全註解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆後仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。
HttpUtils模塊:
支持同步,非同步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
返迴文本內容的請求(默認只啟用了GET請求)支持緩存,可設置默認過期時間和針對當前請求的過期時間。
BitmapUtils模塊:
載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
支持載入網路圖片和本地圖片;
內存管理使用lru演算法,更好的管理bitmap內存;
可配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等...

8、butterknife-view
注入工具
介紹:
為了減少頻繁的調用findViewById(R.id...),可以採用一些注入框架,可以簡化自己的代碼,讓你更專注於實際的功能開發,butterknife就是這樣的一個框架,他是jakewharton大神的作品,值得一試。
class ExampleActivity extends Activity {
@InjectView(R.id.title) TextView title;
@InjectView(R.id.subtitle) TextView subtitle;
@InjectView(R.id.footer) TextView footer;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_activity);
ButterKnife.inject(this);
// TODO Use "injected" views...
}
}

這是博客地址:
http://jakewharton.github.io/butterknife/
項目地址: https://github.com/JakeWharton/butterknife

9、cube-sdk
一淘推出的開發框架
介紹:
cube一個Android開發包, 可極大提高你的開發效率。主要提供了圖片載入以及網路請求方面的api功能。
項目地址: https://github.com/etao-open-source/cube-sdk
他們的網站:http://cube-sdk.liaohuqiu.net/cn/

10、ASimpleCache
一個簡單的緩存框架
介紹:
ASimpleCache
是一個為android制定的 輕量級的 開源緩存框架。輕量到只有一個java文件(由十幾個類精簡而來)。
它可以緩存什麼東西?普通的字元串、JsonObject、JsonArray、Bitmap、Drawable、序列化的java對象,和
byte數據。
項目地址: https://github.com/yangfuhai/ASimpleCache

11、androidannotations
介紹:
AndroidAnnotations是一個能夠讓你快速進行Android開發的開源框架,它能讓你專注於真正重要的地方。
使代碼更加精簡,使項目更加容易維護,它的目標就是「Fast Android Development.Easy maintainance」。
通過一段時間的使用發現,相比原生的Android開發,確實能夠讓你少些很多代碼
項目地址: https://github.com/excilys/androidannotations

12、Event Bus
解耦android模塊
介紹:
當一個Android應用功能越來越多的時候,保證應用的各個部分之間高效的通信將變得越來越困難。如何優雅地解決這個問題?這時候,就需要使用到EventBus。
EventBus是GreenRobot出品的Android系統的一個Event
Bus類庫,使用起來和之前我們所介紹的Square的Otto差不多,都是用來簡化應用組件之間的通信。
項目地址: https://github.com/greenrobot/EventBus

13、BeeFramework_Android
介紹:
BeeFramework
Android版主要為Android初級開發人員提供一個基於MVC開發模式的APP DEMO,並提供一套APP內調試工具,包括
查看網路數據請求歷史 Crash Log列表 真機WIFI環境下模擬2G\3G網路 查看APP性能(內存佔用,CPU佔用等)
項目地址: https://github.com/BeeFramework/BeeFramework_Android

14、afinal
介紹:
Afinal是一個android的ioc,orm框架,內置了四大模塊功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通過finalActivity,我們可以通過註解的方式進行綁定ui和事件。通過finalBitmap,我們可以方便的載入bitmap圖片,而無需考慮oom等問題。通過finalDB模塊,我們一行代碼就可以對android的sqlite資料庫進行增刪改查。通過FinalHttp模塊,我們可以以ajax形式請求http數據。
Afinal裡面目前包含了四大組件:
FinalHttp:用於請求http數據,直接ajax方式請求,文件上傳, 斷點續傳下載文件等
FinalBitmap:用於顯示bitmap圖片,而無需考慮線程並發和oom等問題。
FinalActivity:完全可以通過註解方式綁定控制項和事件,無需編寫代碼。
FinalDb:android中sqlite的orm框架,一行代碼搞定增刪改查。

Afinal是一個android的ioc,orm框架,內置了四大模塊功能:FinalAcitivity,FinalBitmap,FinalDb,FinalHttp。通過finalActivity,我們可以通過註解的方式進行綁定ui和事件。通過finalBitmap,我們可以方便的載入bitmap圖片,而無需考慮oom等問題。通過finalDB模塊,我們一行代碼就可以對android的sqlite資料庫進行增刪改查。通過FinalHttp模塊,我們可以以ajax形式請求http數據。詳情請通過以下網址查看。
項目地址: https://github.com/yangfuhai/afinal

15、Volley
介紹:
在這之前,我們在程序中需要和網路通信的時候,大體使用的東西莫過於AsyncTaskLoader,HttpURLConnection,AsyncTask,HTTPClient(Apache)等,今年的Google
I/O 2013上,Volley發布了。Volley是Android平台上的網路通信庫,能使網路通信更快,更簡單,更健壯。
項目地址: https://github.com/mcxiaoke/android-volley

5. 安卓setscalex有沒有改變view的屬性

ViewPagerTransforms
是一個自定義了各種翻轉效果的開源庫,其中的各種PageTransformer使用了view的很多屬性設置方法如DepthPageTransformer中:


package com.ToxicBakery.viewpager.transforms;
import android.view.View;
public class DepthPageTransformer extends ABaseTransformer {
private static final float MIN_SCALE = 0.75f;
@Override
protected void onTransform(View view, float position) {
if (position <= 0f) {
view.setTranslationX(0f);
view.setScaleX(1f);
view.setScaleY(1f);
} else if (position <= 1f) {
final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
view.setAlpha(1 - position);
view.setPivotY(0.5f * view.getHeight());
view.setTranslationX(view.getWidth() * -position);
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
}
}
@Override
protected boolean isPagingEnabled() {
return true;
}
}


類似於view.setAlpha(1 - position);這樣的一些方法是在api
11屬性動畫出來之後才有的,因此在2.3的手機中無法調用,但是如果我們需要設置一個view的屬性,比如透明度,不調用view.setAlpha的話很難完美的用其他方法實現,有文章說用
convertView.getBackground().setAlpha(80);可以實現改變透明度,但是其實那不是改變view的透明度。

如何解決這個問題呢,改變view的透明度怎麼這么難?

所幸的是nineoldandroids的工具類ViewHelper幫我們解決了這個問題。

nineoldandroids是一個幫助在2.x的版本中實現屬性動畫的開源庫,現在它的應用已經很廣泛了
是一個非常成熟的庫,如果沒有它android中非常實用的屬性動畫很難普及開來。

雖然nineoldandroids是為動畫而生的,但是為了解2.x版本不能使用屬性設置方法的問題nineoldandroids提供了一種通過包裝(wrap)view的方式來兼容setScaleY,setAlpha這些方法,要在2.x版本中使用view.setAlpha()方法,可以這樣做:

1.引入nineoldandroids的庫文件或者jar包,建議引入jar包因為nineoldandroids已經很穩定不需要你去修改。

2.import
com.nineoldandroids.view.ViewHelper同時將上面的代碼改為:


public class DepthPageTransformer extends BaseTransformer {
private static final float MIN_SCALE = 0.75f;
@Override
protected void onTransform(View view, float position) {
if (position <= 0f) {
ViewHelper.setTranslationX(view,0f);
ViewHelper.setScaleX(view,1f);
ViewHelper.setScaleY(view,1f);
} else if (position <= 1f) {
final float scaleFactor = MIN_SCALE + (1 - MIN_SCALE) * (1 - Math.abs(position));
ViewHelper.setAlpha(view,1-position);
ViewHelper.setPivotY(view,0.5f * view.getHeight());
ViewHelper.setTranslationX(view,view.getWidth() * - position);
ViewHelper.setScaleX(view,scaleFactor);
ViewHelper.setScaleY(view,scaleFactor);
}
}
@Override
protected boolean isPagingEnabled() {
return true;
}
}

6. android中的動畫有哪幾類

在Android3.0(即API Level11)以前,Android僅支持2種動畫:分別是Frame Animation(逐幀動畫)和Tween Animation(補間動畫),在3.0之後Android支持了一種新的動畫系統,稱為:Property Animation(屬性動畫)。

一、Frame Animation:(逐幀動畫)

這個很好理解,一幀幀的播放圖片,利用人眼視覺殘留原理,給我們帶來動畫的感覺。它的原理的GIF圖片、電影播放原理一樣。

1.定義逐幀動畫比較簡單,只要在中使用子元素定義所有播放幀即可。

(1) android:oneshot 設置是否僅播放一次

(2) android:drawable 設置每一幀圖片

(3) android:ration 設置圖片間切換間隔

2.習慣上把AnimationDrawable設置為ImageView的背景

android:background=@anim/frame_anim

然後我們就可以在java代碼中獲取AnimationDrawable對象了

AnimationDrawable anim = (AnimationDrawable)imageView.getBackground();

(需要注意的是,AnimationDrawable默認是不播放的,調用其start()方法開始播放,stop停止播放)

3.上面的動畫文件是通過xml文件來配置的,如果你喜歡,也可以通過在java代碼中創建AnimationDrawable對象,然後通過addFrame(Drawable frame, int ration)方法向動畫添加幀,然後start()。。。

二、Tween Animation:(補間動畫)

補間動畫就是我們只需指定開始、結束的「關鍵幀「,而變化中的其他幀由系統來計算,不必自己一幀幀的去定義。

1. Android使用Animation代表抽象動畫,包括四種子類:AlphaAnimation(透明度動畫)、ScaleAnimation(縮放動畫)、TranslateAnimation(位移動畫)、RotateAnimation(透明度動畫)。Android裡面允許在java中創建Animation類對象,但是一般都會採用動畫資源文件來定義動畫,把界面與邏輯分離

<set android:interpolator="@android:anim/linear_interpolator" xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 定義透明度的變換 -->

<!-- 定義旋轉變換 -->
<rotate android:ration="3000/" android:fromdegrees="0" android:pivotx="50%" android:pivoty="50%" android:todegrees="1800">
</rotate></alpha></set>

(一個set可以同時定義多個動畫,一起執行。)

2. android:interpolator=@android:anim/linear_interpolator控制動畫期間需要補入多少幀,簡單來說就是控制動畫速度,有些地方翻譯為「插值「。Interpolator有幾種實現類:LinearInterpolator、AccelerateInterpolator、、CycleInterpolator、DecelerateInterpolator,具體使用可以參考官方API Demo。

3. 定義好anim文件後,我們可以通過AnimationUtils工具類來載入它們,載入成功後返回一個Animation。然後就可以通過View的startAnimation(anim)開始執行動畫了。

Animation anim = AnimationUtils.loadAnimation(this, R.anim.anim);
//設置動畫結束後保留結束狀態
anim.setFillAfter(true);
//設置插值效果
anim.setInterpolator(interpolator);
//對view執行動畫
view. startAnimation(anim);

三、Property Animation:(屬性動畫)

屬性動畫,這個是在Android 3.0中才引進的,它可以直接更改我們對象的屬性。在上面提到的Tween Animation中,只是更改View的繪畫效果而View的真實屬性是不改變的。假設你用Tween動畫將一個Button從左邊移到右邊,無論你怎麼點擊移動後的Button,他都沒有反應。而當你點擊移動前Button的位置時才有反應,因為Button的位置屬性木有改變。而Property Animation則可以直接改變View對象的屬性值,這樣可以讓我們少做一些處理工作,提高效率與代碼的可讀性。

(1)ValueAnimator:包含Property Animation動畫的所有核心功能,如動畫時間,開始、結束屬性值,相應時間屬性值計算方法等。應用ValueAnimator有兩個步驟

1計算屬性值。

2根據屬性值執行相應的動作,如改變對象的某一屬性。

我們的主是第二步,需要實現ValueAnimator.onUpdateListener介面,這個介面只有一個函數onAnimationUpdate(),將要改變View對象屬性的事情在該介面中do。

animation.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
//do your work
}
});

(2)ObjectAnimator:繼承自ValueAnimator,要指定一個對象及該對象的一個屬性,當屬性值計算完成時自動設置為該對象的相應屬性,即完成了Property Animation的全部兩步操作。實際應用中一般都會用ObjectAnimator來改變某一對象的某一屬性,但用ObjectAnimator有一定的限制,要想使用ObjectAnimator,應該滿足以下條件:

1.對象應該有一個setter函數:set(駝峰命名法)

2如下面的例子,像ofFloat之類的工場方法,第一個參數為對象名,第二個為屬性名,後面的參數為可變參數,如果values…參數只設置了一個值的話,那麼會假定為目的值,屬性值的變化范圍為當前值到目的值,為了獲得當前值,該對象要有相應屬性的getter方法:get

3如果有getter方法,其應返回值類型應與相應的setter方法的參數類型一致。

ObjectAnimator oa=ObjectAnimator.ofFloat(tv, alpha, 0f, 1f);
oa.setDuration(3000);
oa.start();

如果不滿足上面的條件,我們只能乖乖的使用ValueAnimator來創建動畫。

(3)Animator.AnimatorListener:可以為Animator設置動畫監聽,需要重寫下面四個方法。

onAnimationStart()
onAnimationEnd()
onAnimationRepeat()
onAnimationCancel()

這里我們也可以實現AnimatorListenerAdapter,他的好處是可以只用定義想監聽的事件而不用實現每個函數卻只定義一空函數體。如下:

anim.addListener(new AnimatorListenerAdapter() {
public void on AnimationEnd(Animator animation){
//do your work
}
});

(4)AnimationSet:可以組合多個動畫共同工作

AnimatorSet bouncer = new AnimatorSet();
bouncer.play(anim1).before(anim2);
bouncer.play(anim2).with(anim3);
bouncer.play(anim2).with(anim4)
bouncer.play(anim5).after(amin2);
animatorSet.start();

上面的代碼意思是: 首先播放anim1;同時播放anim2,anim3,anim4;最後播放anim5。

(5)TimeInterplator:與Tween中的interpolator類似。有以下幾種

AccelerateInterpolator 加速,開始時慢中間加速

DecelerateInterpolator 減速,開始時快然後減速

先加速後減速,開始結束時慢,中間加速

AnticipateInterpolator 反向 ,先向相反方向改變一段再加速播放

反向加回彈,先向相反方向改變,再加速播放,會超出目的值然後緩慢移動至目的值

BounceInterpolator 跳躍,快到目的值時值會跳躍,如目的值100,後面的值可能依次為85,77,70,80,90,100

CycleIinterpolator 循環,動畫循環一定次數,值的改變為一正弦函數:Math.sin(2 * mCycles * Math.PI * input)

LinearInterpolator 線性,線性均勻改變

OvershottInterpolator 回彈,最後超出目的值然後緩慢改變到目的值

TimeInterpolator 一個介面,允許你自定義interpolator,以上幾個都是實現了這個介面

(6)Keyframes:可以讓我們定義除了開始和結束以外的關鍵幀。KeyFrame是抽象類,要通過ofInt(),ofFloat(),ofObject()獲得適當的KeyFrame,然後通過PropertyValuesHolder.ofKeyframe獲得PropertyValuesHolder對象,如下:

Keyframe kf0 = Keyframe.ofInt(0, 400);
Keyframe kf1 = Keyframe.ofInt(0.25f, 200);
Keyframe kf2 = Keyframe.ofInt(0.5f, 400);
Keyframe kf4 = Keyframe.ofInt(0.75f, 100);
Keyframe kf3 = Keyframe.ofInt(1f, 500);
PropertyValuesHolder pvhRotation = PropertyValuesHolder.ofKeyframe(width, kf0, kf1, kf2, kf4, kf3);
ObjectAnimator rotationAnim = ObjectAnimator.ofPropertyValuesHolder(btn, pvhRotation);
上述代碼的意思是:設置btn對象的width屬性值使其:開始時 Width=400,動畫開始1/4時 Width=200,動畫開始1/2時 Width=400,動畫開始3/4時 Width=100,動畫結束時 Width=500。

(7)ViewPropertyAnimator:對一個View同時改變多種屬性,非常推薦用這種。該類對多屬性動畫進行了優化,會合並一些invalidate()來減少刷新視圖。而且使用起來非常簡便,但是要求API LEVEL 12,即Android 3.1以上。僅需要一行代碼即可完成水平、豎直移動

myView.animate().translationX(50f). translationY(100f);

(8)常需要改變的一些屬性:

translationX,translationY: View相對於原始位置的偏移量

rotation,rotationX,rotationY: 旋轉,rotation用於2D旋轉角度,3D中用到後兩個

scaleX,scaleY: 縮放比

x,y: View的最終坐標,是View的left,top位置加上translationX,translationY

alpha: 透明度

四、最後自己總結一下這三種動畫的優缺點:

(1)Frame Animation(幀動畫)主要用於播放一幀幀准備好的圖片,類似GIF圖片,優點是使用簡單方便、缺點是需要事先准備好每一幀圖片;

(2)Tween Animation(補間動畫)僅需定義開始與結束的關鍵幀,而變化的中間幀由系統補上,優點是不用准備每一幀,缺點是只改變了對象繪制,而沒有改變View本身屬性。因此如果改變了按鈕的位置,還是需要點擊原來按鈕所在位置才有效。

(3)Property Animation(屬性動畫)是3.0後推出的動畫,優點是使用簡單、降低實現的復雜度、直接更改對象的屬性、幾乎可適用於任何對象而僅非View類,缺點是需要3.0以上的API支持,限制較大!但是目前國外有個開源庫,可以提供低版本支持!

7. 有用過NineOldAndroids的嗎

做Android開發的同學很多都知道或者使用過一個動畫庫,那就是NineOldAndroids,它的作者及其牛X,好幾個著名的開源庫都是他的作品,具體大家可以看他的 JakeWharton 。簡單來說,NineOldAndroids是一個向下兼容的動畫庫,主要是使低於API 11的系統也能夠使用View的屬性動畫。以下是個其官網的簡述 :
Android library for using the Honeycomb (Android 3.0) animation API on all versions of the platform back to 1.0!Animation prior to Honeycomb was very limited in what it could accomplish so in Android 3.x a new API was written. With only a change in imports, we are able to use a large subset of the new-style animation with exactly the same API.
View的屬性動畫在Android API 11及其以後才支持,該庫的作用就是讓API 11以下的系統也能夠正常的使用屬性動畫。它的類名、用法與官方的都一樣,只是包名不一樣。使用該庫,你就可以在API 版本很低的情況下也能夠使用各種屬性動畫,讓你的應用更加有動感、平滑。 官方地址 : nineoldandroids 。

基本原理簡介
一般來說,我們使用NineOldAndroids的屬性動畫時的代碼大致是如下這樣的:
ValueAnimator colorAnim = ObjectAnimator.ofFloat(myView, "scaleX", 0.3f);colorAnim.setDuration(1000);colorAnim.start();
這個動畫會將myView (View的子類型)的寬度在1秒鍾之內縮放到原始寬度的30%。下面我們先來簡單說明一下NineOldAndroids的基本原理。
不管是官方的支持,還是nideoldandroids的低版本支持,它們使用的技術原理都是一樣的。NineOldAndroids的基本原理就是在構建屬性動畫時根據用戶的系統版本來選擇不同的實現方式,並且對於低版本的API使用自己的實現來做屬性動畫。如果用戶的系統API大於等於11,即Android 3.0及其以上,那麼就會在動畫的ration期間內連續地通過反射來調用該屬性的set方法來修改它的值。例如上面的 scaleX屬性,該動畫庫會在內部構造 scaleX 的set方法,格式如下為set + 首字母大寫屬性名 + 參數,例如setS caleX (float scale),這樣在一段時間內連續的修改myView的縮放值就達到了動畫的效果。我們看setScaleX的文檔:

8. 大神推薦一個好用的Android API!!

那方面的api????
------------------
軟體庫的存在使得Android編碼更方便快捷。在如此多 Android庫中,我們該如何尋找最合適的一款呢?下面我們做了一個列表供你參考。
動畫(Animation)
Android View Animations:強大的動畫庫,通過對它的使用,可以輕松創建各種動畫效果。
RecyclerView Animators:允許操作者使用含炫酷動畫效果的RecyclerView類。
APIs
CloudRail:幫助操作者更快地進行API集成服務。它將多個服務(例如Dropbox,Google Drive和OneDrive)捆綁成一個統一的API。此外,它可自動處理API更新,並保持API的代碼一致。其介面可用於雲存儲,社交,支付等。
Retrofit:Retrofit由Square公司開發,是Android的REST客戶端,其類型安全,可將http API轉換成Java介面。
圖表(Charts)
MPAndroidChart:一款強大的圖表生成庫,可在Android上生成圖表,同時還提供8種不同的圖表類型和多種手勢。
AndroidCharts:一款簡單的圖表創建工具,具有自定義的功能。
資料庫(Database)
SQLBrite: 圍繞SQLiteOpenHelper和ContentResolver創建封裝,以在查詢中使用流式語義。
Sugar ORM:使用SQLite資料庫的簡單操作,優勢在於無需編寫SQL查詢。
數據架構(Data Structure)
Eclipse Collections:用於Java的Collections框架,可為容器類型附加迭代方法的操作等。
日期和時間(Date & Time)
TimesSquare for Android:簡單獨立的日歷小部件,可在日歷視圖中選擇日期。
Material Calendar View:移植到Material design的安卓CalendarView。
依賴(Dependencies)
Dagger:進行Android依賴注入的快捷方式。
文檔(Files)
Android-FilePicker:一款照片選擇器,可從列表中選擇圖片或文檔。
Material File Picker:Material design中的文件選擇器。
函數式編程(Functional Programing)
Retrolambda:在Java 7中使用Lambdas的一種操作。
手勢(Gestures)
Sensey:在Android應用程序中添加手勢的簡單操作。
Android 3D Touch – PeekView:類似於iOS上的3D Touch,用以「預覽」程序內容。
藍牙(Bluetooth)
Android-BluetoothSPPLibrary:使用序列化藍牙埠(Bluetooth Serial Port Profile)的簡單操作。
RxAndroidBle:藍牙低耗能處理工具。
相機(Camera)
CameraFilter:使用OpenGL著色器的實時相機濾鏡。
Material Camera:Android開發的快速簡易的相機框架。
位置(Location)
ReactiveLocation:Google Play API的小型但實用的封裝程序,用於獲取位置。
Smart Location Library:簡化位置提供項的庫。
布局(Layout)
Android Swipe Layout:為對象提供滑動布局,如,向左滑動即刪除的操作。
FlexboxLayout :為Android提供框布局,其內容可通過CSS了解。
日誌(Logging)
Logger:Android日誌記錄器。
Hugo:用觸發注釋的方法調用記錄。
地圖(Maps)
AirMapView :用以查看Google Maps API摘要,非常適合沒有Google Play服務的應用程式。
Google地圖的實用程序,如,熱點地圖或標記聚類。
音頻播放器(Audio)
Music Player:含UI的完整音樂播放器。
RxAndroidAudio :封裝帶有Rx支持的Android Audio API RxAndroid音頻播放器。
GIF
android-gif-drawable:使用視圖和可繪制的GIF動圖。
GifView :Android上使用View播放的GIF庫。
圖像(Image)
uCrop:對Android上的圖片進行裁剪的庫。
Glide:Android的媒體管理和圖片載入庫。
視頻播放器(Video)
VideoPlayerManager:對Android MediaPlayer類的使用進行幫助說明的庫。
Easy Video Player:易於操作的視頻播放器,可通過視圖使用。
信息(Messaging)
Chateau:在Android應用中提供聊天功能的框架。
網路(Networking)
OkHttp:Android的HTTP客戶端。
AndroidAsync:基礎級網路協議庫。
消息推送(Push Notifications)
PubNub:用於處理推送通知的商業服務。
Gandalf:用於發送更新或維護相關的通知。
支付(Payments)
Android In-App Billing v3 Library:通過Android v3 API輕松處理應用內置付款的庫。
Checkout:處理應用內購買操作的庫。
安全(Security)
Sodium:輕松做加密,解密,簽名和散列操作的工具。
PiracyChecker:通過使用Google的LVL,防止應用程式被盜用的工具。
文本(Text)
Ticker:顯示滾動文本的UI組件。
MaterialEditText:Material Design的文本輸入器。
字體(Font)
fontbinding:使用數據綁定的XML自定義字體的操作。
Calligraphy:在Android應用程式上使用傳統字體的簡易操作。
用戶界面(User Interface)
Material Design Android Library:在Android中使用Google的Material Design(Android 2.2版)的庫。
Material:將Material Design導入原有應用程序的庫。
指示器(Activity Indicator)
AppIntro:為應用程序創建炫酷簡介,類似於Google原始應用中的。
LolliPin:為應用程序提供pin密碼。
操作按鈕(Buttons)
Android-Bootstrap:通過使用Bootstrape規則,進行諸如在APP中創建按鈕的操作。
Android Morphing Button:Android的操作按鈕,其形狀大小可更改。
表格(Form)
Vertical Stepper Form Library:在Material Design中創建表單的庫。
鍵盤(Keyboard)
KeyboardVisibilityEvent:顯示與隱藏鍵盤的簡單操作。
AndroidKeyboardWatcher:追蹤鍵盤開啟/關閉操作情況的庫。
菜單(Menu)
BottomBar:在Material Design中提供底部導航欄的視圖組件。
Side Menu:為應用程序添加側邊菜單欄的工具。
評分(Rating)
Android-Rate:提醒用戶對應用程序進行評價的簡易庫。
SimpleRatingBar:用於星級評分的UI組件。
滑屏(Slider)
SlidingMenu:輕松為應用程序創建滑動式菜單項。
MaterialDrawer:Android中輕便靈活的抽屜布局式庫。
英語原文:Best Android Libraries for Developers
編譯:開源中國
本站文章除註明轉載外,均為本站原創或編譯。歡迎任何形式的轉載,但請務必註明出處,尊重他人勞動共創開源社區。
轉載請註明:文章轉載自 開源中國社區 [http://www.oschina.net]
本文標題:面向開發者的最佳 Android 庫列表
本文地址:https://www.oschina.net/news/78857/best-android-libraries-for-developers

閱讀全文

與android開源動畫庫相關的資料

熱點內容
有pdf卻打不開 瀏覽:460
七星彩軟體app怎麼下載 瀏覽:217
32單片機的重映射哪裡改 瀏覽:816
為什麼前端不用刷演算法題 瀏覽:708
對稱加密系統和公鑰加密系統 瀏覽:428
歷史地理pdf 瀏覽:606
物聯網雲伺服器框架 瀏覽:648
sybaseisql命令 瀏覽:183
android權威編程指南pdf 瀏覽:663
哪些軟體屬於加密軟體 瀏覽:646
文件夾75絲什麼意思 瀏覽:470
最便宜sop8單片機 瀏覽:966
圖解周易預測學pdf 瀏覽:420
c盤莫名奇妙多了幾個文件夾 瀏覽:171
貴州花溪門票優惠app哪個好 瀏覽:803
如何說話不會讓人有被命令的感覺 瀏覽:440
哪裡可下載湘工惠app 瀏覽:265
福特python 瀏覽:312
pdf轉換成word表格 瀏覽:353
無線遠端伺服器無響應是什麼意思 瀏覽:672