實用的Android開源庫

nintyuui發表於2021-09-09

圖片描述

在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/,如需轉載,請註明出處,否則將追究法律責任。

相關文章