實用的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開源庫的製作Android
- Android實際開發中實用的第三方(開源)框架Android框架
- 最新Android開源庫、工具、開源專案整理分享Android
- 【開源庫推薦】#3 Android EventBus的使用Android
- Android常用開源庫整理彙總Android
- 使用jitPack釋出android開源庫Android
- Android示例應用:開源框架Glide的使用Android框架IDE
- 開源一個自用的Android IM庫,基於Netty+TCP+Protobuf實現。AndroidNettyTCP
- 【Android珍藏】推薦10個炫酷的開源庫Android
- Android 常用開源庫總結(持續更新)Android
- Android專案篇(二):開源庫及工具的封裝Android封裝
- [OpenGL]未來視覺-MagicCamera3實用開源庫視覺
- Android 圖表開源庫調研及使用示例Android
- Android優秀文章和開源庫推薦(讀值得讀的)Android
- Android開源mvp專案,實現玩Android客戶端AndroidMVP客戶端
- CameraX:Android 相機庫開發實踐Android
- 這15個Android開源庫,只有經常逛Github的才知道!AndroidGithub
- Android開源庫V - Layout:淘寶、天貓都在用的UI框架AndroidUI框架
- GitHub實用開源專案Github
- 用Rust編寫的資料庫GreptimeDB現開源Rust資料庫
- 開源一個自用的Android事件分發中心庫,實現類似系統廣播功能。Android事件
- Android 開發實用程式碼收集Android
- 馬克筆記—Android 端開源的 Markdown 筆記應用筆記Android
- [譯] Android Dev Summit 2018 應用(instant app 的總結 + 開源)AndroiddevMITAPP
- 開源 BI 的 實用性怎麼樣
- 平安科技資料庫總經理汪洋:開源資料庫在平安的應用實踐資料庫
- 關於Android開源庫分享平臺,(GitClub)微信小程式的開發體驗AndroidGit微信小程式
- 簡單好看的Android圓形進度條對話方塊開源庫Android
- 開源分散式圖資料庫的思考和實踐分散式資料庫
- 開源元件DoraemonKit之Android版本技術實現(二)元件Android
- 開源元件DoraemonKit之Android版本技術實現(一)元件Android
- C#開源實用的工具類庫,整合超過1000多種擴充套件方法C#套件
- 谷歌開源的 GAN 庫–TFGAN谷歌
- 如何開源你的 Python 庫Python
- Python的事件溯源開源庫Python事件
- Android最全開發資源Android
- Android開源原始碼分析Android原始碼