# RxGalleryFinal
## 翻訳
情報 :KARL-Dujinyang
情報 : 杜锦阳 - [sheep0704](https://github.com/sheep0704)
## の機能的な記述(JDK1.8)
rxgalleryfinal android画像/ビデオファイルセレクタ。複数の無線のための支援を、フィルムと切断できるカスタムテーマは、義務的な結合のサードパーティのイメージでない。
* [English](https://github.com/FinalTeam/RxGalleryFinal/blob/master/README_English.md)
* [Japanese](https://github.com/FinalTeam/RxGalleryFinal/blob/master/README_Japanese.md)
* [Chinese](https://github.com/FinalTeam/RxGalleryFinal)
## 版について
[History Issues](https://github.com/FinalTeam/RxGalleryFinal/wiki/RxGalleryFinal-Issues)
[History Version](https://github.com/FinalTeam/RxGalleryFinal/wiki/RxGalleryFinal-Version)
### To be perfect
1つのコールバックのビデオ。
2ケイトン試験においては、問題の探索:細かい点のケイトン感じます、私は130
### gradle
New : compile 'cn.finalteam.rxgalleryfinal:library:1.1.3' -> 緊急修理のバグ bug.
(Fix #191, add video)
参考:[History Version](https://github.com/FinalTeam/RxGalleryFinal/wiki/RxGalleryFinal-Version)
### 1.1.1 の特性
* 修復 のバグ bug
* #170,#165 ,#167 と#修正画像などのファイルまたはディレクトリはありません
* 最新版のサンプルコード
### 1.0.9 の特性
* 修復のバグ bug - #160
* ucrop設定の追加
* 最新版のサンプルコード
* rxjava更新
## 使用
### をダウンロードするか、依存関係を追加
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.exifinterface:exifinterface:1.1.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava2:rxjava:2.2.15'
implementation 'com.github.yalantis:ucrop:2.2.4'
//以下のイメージローダをサポートし、主流の開発者を選ぶ
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.facebook.fresco:fresco:2.0.0'
implementation 'com.facebook.fresco:animated-gif:2.0.0'
implementation 'com.github.bumptech.glide:glide:4.10.0'
implementation 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
### 構成を明らかにする
スクリーンショット:
![image](https://github.com/FinalTeam/RxGalleryFinal/blob/master/screenshots/a1.png)
* 関連のapiを提供する
* MainActivity サンプルコードをチェックしてください : [Sample code](https://github.com/FinalTeam/RxGalleryFinal/blob/master/sample/src/main/java/cn/finalteam/rxgalleryfinal/sample/MainActivity.java)
//またはカスタム手法の利用
onClickZDListener();
//さんの画像をセレクタapi呼び出し
onClickSelImgListener();
//さんのビデオセレクタapi呼び出し
onClickSelVDListener();
//切削apiに電話して
onClickImgCropListener();
//手動でログインします。
ModelUtils.setDebugModel(true);
* ここにあなたがテーマを設定することができます
![image](https://github.com/FinalTeam/RxGalleryFinal/blob/master/screenshots/device-2017-04-11-154816.png)
## テーマ
テーマ:サンプル構成物のres -> xml→testtheme ....
* コード
//ラジオは、カスタムの方法
RxGalleryFinal
.with(context)
.image()
.radio()
.crop()
.imageLoader(ImageLoaderType.GLIDE)
.subscribe(new RxBusResultSubscriber() {
@Override
protected void onEvent(ImageRadioResultEvent imageRadioResultEvent) throws Exception {
//画像選択の結果 Image selection results
.....
}
})
.openGallery();
----
//カスタム方法マルチセレクト
RxGalleryFinal.with(MainActivity.this)
.image()
.multiple()
.maxSize(8)
.imageLoader(ImageLoaderType.UNIVERSAL)
.subscribe(new RxBusResultSubscriber() {
@Override
protected void onEvent(ImageMultipleResultEvent imageMultipleResultEvent) throws Exception {
toast("選択済み" + imageMultipleResultEvent.getResult().size() + "張画像");
}
@Override
public void onCompleted() {
super.onCompleted();
Toast.makeText(getBaseContext(), "OVER", Toast.LENGTH_SHORT).show();
}
}).openGallery();
---
//Alternative events get pictures
RxGalleryListener.getInstance().setMultiImageCheckedListener(new IMultiImageCheckedListener() {
@Override
public void selectedImg(Object t, boolean isChecked) {
//この主なクリックや押しがトリガーので、提案しないここでトーストでした
//The main click or press that will trigger, so it is not recommended to Toast here
}
@Override
public void selectedImgMax(Object t, boolean isChecked, int maxSize) {
toast("あなたが一番多いのは選択" + maxSize + "張画像");
}
});
----
//Interpretation
RxGalleryFinal.with(context)
.image()//画像
.radio()//ラジオ
.crop()//裁断
.video()//ビデオ
//Can choose the mainstream pictures inside: PICASSO GLIDE FRESCO UNIVERSAL(ImageLoader)
.imageLoader(ImageLoaderType.GLIDE)
.subscribe(rxBusResultSubscriber)
.openGallery();
----
//裁断を呼び出す..RxGalleryFinalApi.getModelPath() デフォルトの出力経路
//The output of the call cut .RxGalleryFinalApi.getModelPath() for the default path
RxGalleryFinalApi.cropScannerForResult(MainActivity.this, RxGalleryFinalApi.getModelPath(), inputImg);
----
//セットと設定-保存経路:Get and set path
//By cutting path
RxGalleryFinalApi.getImgSaveRxCropDirByFile();//裁断経路を得る
RxGalleryFinalApi.getImgSaveRxCropDirByStr();//裁断経路を得る
//画像のパスを取得する
RxGalleryFinalApi.getImgSaveRxDirByFile();//写真を得る
RxGalleryFinalApi.getImgSaveRxCropDirByStr();//写真を得る
//ゲットpath andセット
//…… setImgSaveXXXXX().
//画像自動会ストレージの下、裁断を自動的に生成パスも手動設定裁断経路、
//Will automatically stored in the pictures below,cut automatically generated path;
//Can also manually cutting path;
RxGalleryFinalApi.setImgSaveRxSDCard("dujinyang");
----
//カスタマイズ裁ち Custom tailoring
rx.cropAspectRatioOptions(0, new AspectRatio("3:3",30, 10))
.crop()
.openGallery();
----
//4.デモンストレーションラジオ裁断そして増加回落ち(裁断しなければならないオープン前)
RxGalleryFinalApi.getInstance(this)
.onCrop(true)//是否裁剪
.openGalleryRadioImgDefault(new RxBusResultSubscriber() {
@Override
protected void onEvent(Object o) throws Exception {
Logger.i("只要选择图片就会触发");
}
})
.onCropImageResult(new IRadioImageCheckedListener() {
@Override
public void cropAfter(Object t) {
Logger.i("裁剪完成");
}
@Override
public boolean isActivityFinish() {
Logger.i("返回false不关闭,返回true则为关闭");
return true;
}
});
* Add permissions
* Registered activity
(android.content.Context);
}
#2.rxjava
-dontwarn io.reactivex.**
-keep io.reactivex.**
-keepclassmembers class io.reactivex.** { *; }
#3.retrolambda
-dontwarn java.lang.invoke.*
#4.support-v4
-keep class android.support.v4.** { *; }
-keep interface android.support.v4.** { *; }
#5.ucrop
-dontwarn com.yalantis.ucrop**
-keep class com.yalantis.ucrop** { *; }
-keep interface com.yalantis.ucrop** { *; }
#6.photoview
-keep class uk.co.senab.photoview** { *; }
-keep interface uk.co.senab.photoview** { *; }
#7.rxgalleryfinal
-keep class cn.finalteam.rxgalleryfinal.ui.widget** { *; }
-keepclassmembers class * extends android.app.Activity {
public void *(android.view.View);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class **.R$* {
public static ;
}
-keepattributes *Annotation*
-keepclasseswithmembernames class * {
native ;
}
-keepclassmembers public class * extends android.view.View {
void set*(***);
*** get*();
}
## Q&A
* 1、問題について絵を解く方法
* 2、画像を圧縮する方法
* 3、Android 7.0 アンドロイド7 .フラッシュバック
* 4、Authorized 認可された命令
## Contact接触
緊急の著者に連絡してまたはqq群を加えることがあるならば:
- QQ Group群 : 218801658
- QQ Group群 : 246231638
## Wiki
* [GalleryFinal Series of problems](https://github.com/FinalTeam/RxGalleryFinal/wiki)
* [RxGalleryFinal Series of problems](https://github.com/FinalTeam/RxGalleryFinal/wiki/RxGalleryFinal-%E9%97%AE%E9%A2%98%E7%B3%BB%E5%88%97)
* [RxGalleryFinal Version](https://github.com/FinalTeam/RxGalleryFinal/wiki/RxGalleryFinal-Version)