From 6e65a011afb0333106ee294faddbdb710fd88624 Mon Sep 17 00:00:00 2001 From: askar Date: Sat, 5 Oct 2019 21:28:52 +0600 Subject: [PATCH 1/2] Added selecting images and video at the same time --- README.md | 1 + .../tedbottompickerdemo/MainActivity.java | 117 ++++---- app/src/main/res/layout/activity_main.xml | 55 ++-- .../tedbottompicker/TedBottomPicker.java | 2 - .../TedBottomSheetDialogFragment.java | 262 +++++++----------- .../tedbottompicker/TedRxBottomPicker.java | 2 - .../adapter/GalleryAdapter.java | 76 ++--- .../view/TedEmptyRecyclerView.java | 2 - .../view/TedSquareImageView.java | 14 - .../layout/tedbottompicker_content_view.xml | 83 ++---- .../res/layout/tedbottompicker_grid_item.xml | 14 +- .../layout/tedbottompicker_selected_item.xml | 28 +- .../src/main/res/values/strings.xml | 3 - 13 files changed, 251 insertions(+), 408 deletions(-) diff --git a/README.md b/README.md index 3bda46d..4e2d7a6 100644 --- a/README.md +++ b/README.md @@ -138,6 +138,7 @@ You can customize something ...
#### Common * `showVideoMedia()` : Not only load image, but also load video +* `showImageAndVideoMedia()` : Load both images and video * `setPreviewMaxCount(Int) (default: 25)` * `setPeekHeight(Int)` * `setPeekHeightResId(R.dimen.xxx)` diff --git a/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java b/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java index 754e98e..85ca5c9 100644 --- a/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java +++ b/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java @@ -4,7 +4,6 @@ import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; -import android.util.Log; import android.util.TypedValue; import android.view.LayoutInflater; import android.view.View; @@ -12,6 +11,7 @@ import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.TextView; import android.widget.Toast; import com.bumptech.glide.Glide; @@ -28,80 +28,109 @@ import io.reactivex.disposables.Disposable; public class MainActivity extends AppCompatActivity { - - private ImageView iv_image; private List selectedUriList; private Uri selectedUri; private Disposable singleImageDisposable; private Disposable multiImageDisposable; - private ViewGroup mSelectedImagesContainer; private RequestManager requestManager; + private ImageView ivImage; + private TextView tvFilePath; + private ViewGroup selectedImagesContainer; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - iv_image = findViewById(R.id.iv_image); - mSelectedImagesContainer = findViewById(R.id.selected_photos_container); + tvFilePath = findViewById(R.id.tv_path); + ivImage = findViewById(R.id.iv_image); + selectedImagesContainer = findViewById(R.id.selected_photos_container); requestManager = Glide.with(this); + setImageAndVideoPickerButton(); setSingleShowButton(); setMultiShowButton(); setRxSingleShowButton(); setRxMultiShowButton(); - } private void setSingleShowButton() { - Button btnSingleShow = findViewById(R.id.btn_single_show); btnSingleShow.setOnClickListener(view -> { PermissionListener permissionlistener = new PermissionListener() { @Override public void onPermissionGranted() { - TedBottomPicker.with(MainActivity.this) //.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2) .setSelectedUri(selectedUri) //.showVideoMedia() .setPeekHeight(1200) .show(uri -> { - Log.d("ted", "uri: " + uri); - Log.d("ted", "uri.getPath(): " + uri.getPath()); selectedUri = uri; - iv_image.setVisibility(View.VISIBLE); - mSelectedImagesContainer.setVisibility(View.GONE); + tvFilePath.setText(selectedUri.toString()); + ivImage.setVisibility(View.VISIBLE); + selectedImagesContainer.setVisibility(View.GONE); requestManager .load(uri) - .into(iv_image); + .into(ivImage); }); - - } @Override public void onPermissionDenied(ArrayList deniedPermissions) { - Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show(); + showNoPermissionToast(deniedPermissions); } + }; + checkPermission(permissionlistener); + }); + } + private void setImageAndVideoPickerButton() { + Button btnSingleShow = findViewById(R.id.btn_single_image_video); + btnSingleShow.setOnClickListener(view -> { + PermissionListener permissionlistener = new PermissionListener() { + @Override + public void onPermissionGranted() { + TedBottomPicker.with(MainActivity.this) + .setSelectedUri(selectedUri) + .showImageAndVideoMedia() + .setPeekHeight(1200) + .show(uri -> { + selectedUri = uri; + + tvFilePath.setText(selectedUri.toString()); + ivImage.setVisibility(View.VISIBLE); + selectedImagesContainer.setVisibility(View.GONE); + + requestManager + .load(uri) + .into(ivImage); + }); + } + + @Override + public void onPermissionDenied(ArrayList deniedPermissions) { + showNoPermissionToast(deniedPermissions); + } }; checkPermission(permissionlistener); }); } - private void setMultiShowButton() { + private void showNoPermissionToast(ArrayList deniedPermissions) { + Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show(); + } + private void setMultiShowButton() { Button btnMultiShow = findViewById(R.id.btn_multi_show); btnMultiShow.setOnClickListener(view -> { - PermissionListener permissionlistener = new PermissionListener() { @Override public void onPermissionGranted() { - TedBottomPicker.with(MainActivity.this) //.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2) .setPeekHeight(1600) @@ -113,74 +142,60 @@ public void onPermissionGranted() { selectedUriList = uriList; showUriList(uriList); }); - - } @Override public void onPermissionDenied(ArrayList deniedPermissions) { - Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show(); + showNoPermissionToast(deniedPermissions); } - - }; checkPermission(permissionlistener); - }); - } - private void setRxSingleShowButton() { - Button btnSingleShow = findViewById(R.id.btn_rx_single_show); btnSingleShow.setOnClickListener(view -> { PermissionListener permissionlistener = new PermissionListener() { @Override public void onPermissionGranted() { - singleImageDisposable = TedRxBottomPicker.with(MainActivity.this) //.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2) .setSelectedUri(selectedUri) - //.showVideoMedia() + .showVideoMedia() .setPeekHeight(1200) .show() .subscribe(uri -> { selectedUri = uri; - iv_image.setVisibility(View.VISIBLE); - mSelectedImagesContainer.setVisibility(View.GONE); + tvFilePath.setText(selectedUri.toString()); + ivImage.setVisibility(View.VISIBLE); + selectedImagesContainer.setVisibility(View.GONE); requestManager .load(uri) - .into(iv_image); - }, Throwable::printStackTrace); - + .into(ivImage); + }, Throwable::printStackTrace); } @Override public void onPermissionDenied(ArrayList deniedPermissions) { - Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show(); + showNoPermissionToast(deniedPermissions); } - - }; checkPermission(permissionlistener); }); } - private void setRxMultiShowButton() { - Button btnRxMultiShow = findViewById(R.id.btn_rx_multi_show); btnRxMultiShow.setOnClickListener(view -> { PermissionListener permissionlistener = new PermissionListener() { @Override public void onPermissionGranted() { - multiImageDisposable = TedRxBottomPicker.with(MainActivity.this) //.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2) .setPeekHeight(1600) @@ -193,21 +208,16 @@ public void onPermissionGranted() { selectedUriList = uris; showUriList(uris); }, Throwable::printStackTrace); - - } @Override public void onPermissionDenied(ArrayList deniedPermissions) { - Toast.makeText(MainActivity.this, "Permission Denied\n" + deniedPermissions.toString(), Toast.LENGTH_SHORT).show(); + showNoPermissionToast(deniedPermissions); } - - }; checkPermission(permissionlistener); }); - } private void checkPermission(PermissionListener permissionlistener) { @@ -221,17 +231,16 @@ private void checkPermission(PermissionListener permissionlistener) { private void showUriList(List uriList) { // Remove all views before // adding the new ones. - mSelectedImagesContainer.removeAllViews(); + selectedImagesContainer.removeAllViews(); - iv_image.setVisibility(View.GONE); - mSelectedImagesContainer.setVisibility(View.VISIBLE); + ivImage.setVisibility(View.GONE); + selectedImagesContainer.setVisibility(View.VISIBLE); int widthPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()); int heightPixel = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, getResources().getDisplayMetrics()); for (Uri uri : uriList) { - View imageHolder = LayoutInflater.from(this).inflate(R.layout.image_item, null); ImageView thumbnail = imageHolder.findViewById(R.id.media_image); @@ -240,12 +249,10 @@ private void showUriList(List uriList) { .apply(new RequestOptions().fitCenter()) .into(thumbnail); - mSelectedImagesContainer.addView(imageHolder); + selectedImagesContainer.addView(imageHolder); thumbnail.setLayoutParams(new FrameLayout.LayoutParams(widthPixel, heightPixel)); - } - } @Override diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9c5067a..952d2b5 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,72 +1,77 @@ -