實用的Android開源庫
在Android的開發過程中,每個開發者或多或少的都使用過第三方的開源庫,使用第三方的開源庫可以給開發者節省大量的精力和時間,進而更好的關注應用本身的業務邏輯
下面列出一些開發者們非常常用的開源庫
Fresco是非常強大的顯示影像的開源庫,它能夠很好的處理影像的載入和顯示。能夠載入網路、本地資料庫、本地資源中的影像,在影像載入出來之前,還能夠預先設定一個預設的影像佔位符,有二級快取(記憶體和硬碟快取)
dependencies { // your app's other dependencies compile 'com.facebook.fresco:fresco:1.0.1'}
另外Fresco還提供了一些其他的開源庫支援 Gif,WebP等
dependencies { // If your app supports Android versions before Ice Cream Sandwich (API level 14) compile 'com.facebook.fresco:animated-base-support:1.0.1' // For animated GIF support compile 'com.facebook.fresco:animated-gif:1.0.1' // For WebP support, including animated WebP compile 'com.facebook.fresco:animated-webp:1.0.1' compile 'com.facebook.fresco:webpsupport:1.0.1' // For WebP support, without animations compile 'com.facebook.fresco:webpsupport:1.0.1' // Provide the Android support library (you might already have this or a similar dependency) compile 'com.android.support:support-core-utils:24.2.1'}
Glide是一個快速高效的多媒體管理和圖片載入框架,封裝了多媒體的解碼、記憶體和硬碟快取,介面友好
dependencies { compile 'com.github.bumptech.glide:glide:3.7.0' compile 'com.android.support:support-v4:19.1.0'}
OkHttp是一個為Android提供 HTTP+HTTP/2
的客戶端,很好的封裝了對網路的請求連線
dependencies { compile 'com.squareup.okhttp3:okhttp:3.6.0'}
FastAndroidNetworking是基於 OkHttp
的一個網路引擎
dependencies { compile 'com.amitshekhar.android:android-networking:0.4.0'}
RxJava-Reactive Extensions for the JVM
dependencies { compile 'io.reactivex.rxjava2:rxjava:2.0.5'}
package rxjava.examples;import io.reactivex.*;public class HelloWorld { public static void main(String[] args) { Flowable.just("Hello world").subscribe(System.out::println); } }
如果你使用的平臺還沒有支援Java 8的lambda,可以使用下面的程式碼
Flowable.just("Hello world") .subscribe(new Consumer() { @Override public void accept(String s) { System.out.println(s); } );
對Android的事件匯流排進行了最佳化,能在Activities、Fragments、Threads、Services等之間進行資料傳遞,更少的程式碼更高的質量
compile 'org.greenrobot:eventbus:3.0.0'
定義事件
public static class MessageEvent { /* Additional fields if needed */ }
準備訂閱者
@Subscribe(threadMode = ThreadMode.MAIN) public void onMessageEvent(MessageEvent event) {/* Do something */};
註冊和登出訂閱者
@Overridepublic void onStart() { super.onStart(); EventBus.getDefault().register(this); }@Overridepublic void onStop() { super.onStop(); EventBus.getDefault().unregister(this); }
傳送事件
EventBus.getDefault().post(new MessageEvent());
Device Year Class 是一個Android庫,提供了一些更好的方法來基於手機的硬體進行應用的修改
compile 'com.facebook.device.yearclass:yearclass:2.0.0
int year = YearClass.get(getApplicationContext());if (year >= 2013) { // Do advanced animation} else if (year > 2010) { // Do simple animation} else { // Phone too slow, don't do any animations}
監聽網路連線質量的一個Android開源庫,使用者可以根據網路的連線質量來調節應用的一些行為(載入低質量的圖片和影片等)
compile 'com.facebook.network.connectionclass:connectionclass:1.0.1'
Android Debug Database是一個強大的開源庫,開發者透過它可以除錯資料庫和 SharedPreferences
,可以直接透過瀏覽器檢視資料庫和 SharedPreferences
debugCompile 'com.amitshekhar.android:debug-db:0.5.0'
LeakCanary是一個檢測記憶體溢位的開源庫
dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5' testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.5'}
public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); if (LeakCanary.isInAnalyzerProcess(this)) { // This process is dedicated to LeakCanary for heap analysis. // You should not init your app in this process. return; } LeakCanary.install(this); // Normal app init code... } }
一個強大的製作圖表的開源庫,支援 線圖、餅狀圖、雷達圖、氣泡圖等
dependencies { compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'}
ButterKnife是一個檢視的繫結工具,透過註釋生成一些相應的程式碼,更簡潔的程式碼
dependencies { compile 'com.jakewharton:butterknife:8.5.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.5.1'}
class ExampleActivity extends Activity { @BindView(R.id.user) EditText username; @BindView(R.id.pass) EditText password; @BindString(R.string.login_error) String loginErrorMessage; @OnClick(R.id.submit) void submit() { // TODO call server... } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_activity); ButterKnife.bind(this); // TODO Use fields... } }
一個注入框架
dependencies { compile 'com.google.dagger:dagger:2.x' annotationProcessor 'com.google.dagger:dagger-compiler:2.x'}
GreenDao是一個開源的Android ORM框架,更好的操作SQlite,提供友好的介面操作底層資料庫的操作
簡單快速的儲存,節省更多的開發時間,是一個移動裝置的資料庫
Timber是一個開源的log框架
compile 'com.jakewharton.timber:timber:4.5.1'
也是一個log框架
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.jakewharton.hugo:hugo-plugin:1.2.1' } } apply plugin: 'com.android.application'apply plugin: 'com.jakewharton.hugo'
提供了基於 OpenGL的影像濾鏡框架
repositories { jcenter() } dependencies { compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1'}
@Overridepublic void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity); Uri imageUri = ...; mGPUImage = new GPUImage(this); mGPUImage.setGLSurfaceView((GLSurfaceView) findViewById(R.id.surfaceView)); mGPUImage.setImage(imageUri); // this loads image on the current thread, should be run in a thread mGPUImage.setFilter(new GPUImageSepiaFilter()); // Later when image should be saved saved: mGPUImage.saveToPictures("GPUImage", "ImageWithFilter.jpg", null); }
沒有縮圖
Uri imageUri = ...; mGPUImage = new GPUImage(context); mGPUImage.setFilter(new GPUImageSobelEdgeDetection()); mGPUImage.setImage(imageUri); mGPUImage.saveToPictures("GPUImage", "ImageWithFilter.jpg", null);
JSON的解析和封裝框架
作者:CodeMiner
連結:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/3209/viewspace-2803061/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 四個超級實用的Android開源庫!Android
- Android開源資料庫 GreenDao實踐Android資料庫
- Android相關的開源庫Android
- Android開源庫的製作Android
- 非常實用的15款開源PHP類庫PHP
- Android實際開發中實用的第三方(開源)框架Android框架
- Android開源庫——EventBus使用教程Android
- 最新Android開源庫、工具、開源專案整理分享Android
- 【開源庫推薦】#3 Android EventBus的使用Android
- Android開源資料庫框架-LitePal的使用Android資料庫框架
- GitHub排名前100的Android開源庫GithubAndroid
- hellocharts-android-Android圖表開源庫的使用(一)Android
- hellocharts-android-Android圖表開源庫的使用(二)Android
- [OpenGL]未來視覺-MagicCamera3實用開源庫視覺
- 乾貨分享:分析Android應用使用的技術框架和開源庫Android框架
- Android常用開源庫整理彙總Android
- 使用jitPack釋出android開源庫Android
- Android文章與開源庫推薦Android
- Android開源專案庫彙總Android
- Android開源庫——EventBus原始碼解析Android原始碼
- Android開源庫——EventBus高階用法Android
- Android開源專案以及開源庫集合(持續更新中)Android
- Android簡易手勢密碼開源庫Android密碼
- Android 開源庫獲取途徑整理Android
- Android開源庫獲取途徑整理Android
- 試用開源資料庫ApacheDerby資料庫Apache
- Android示例應用:開源框架Glide的使用Android框架IDE
- Android開源資料庫 GreenDao 物件實體間關聯關係Android資料庫物件
- 【Android珍藏】推薦10個炫酷的開源庫Android
- GitHub實用開源專案Github
- 開源一個自用的Android IM庫,基於Netty+TCP+Protobuf實現。AndroidNettyTCP
- Android 常用開源庫總結(持續更新)Android
- Android 優秀文章和開源庫推薦Android
- GitHub 熱門 Android 開源庫 Top 100GithubAndroid
- 開源 BI 的 實用性怎麼樣
- 五款超實用的開源SVG工具SVG
- Android實用的SQLite資料庫工具類AndroidSQLite資料庫
- 直接拿來用!最火的Android開源專案Android