Skip to content

Commit 34a64dd

Browse files
Merge pull request #20 from smartdevelopers-ir/v2.0.7
bug fixed
2 parents 87d93c4 + 7955969 commit 34a64dd

23 files changed

+958
-77
lines changed

SmartFileBrowser/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ android {
3434
}
3535
}
3636
group = 'ir.smartdevelopers'
37-
version = '2.0.5'
37+
version = '2.0.7'
3838

3939
dependencies {
4040

SmartFileBrowser/src/main/AndroidManifest.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,20 @@
2727
<activity
2828
android:name=".acitivties.VideoViewActivity"
2929
android:exported="false"
30-
android:theme="@style/sfb_AppTheme.sfb_EditorTheme"
30+
android:theme="@style/sfb_BaseAppTheme.sfb_EditorTheme"
3131
android:screenOrientation="locked"
3232
/>
3333
<activity
3434
android:name=".acitivties.PhotoEditorActivity"
3535
android:exported="false"
36-
android:theme="@style/sfb_AppTheme.sfb_EditorTheme"
36+
android:theme="@style/sfb_BaseAppTheme.sfb_EditorTheme"
3737
android:screenOrientation="locked"
3838
/>
3939
<activity
4040
android:name=".acitivties.FileBrowserMainActivity"
4141
android:configChanges="keyboard|orientation"
4242
android:launchMode="singleInstance"
43-
android:theme="@style/sfb_AppTheme" /> <!-- <activity -->
43+
android:theme="@style/sfb_BaseAppTheme" /> <!-- <activity -->
4444
<!-- android:name="iamutkarshtiwari.github.io.ananas.editimage.EditImageActivity" -->
4545
<!-- android:exported="true" -->
4646
<!-- android:label="@string/sfb_image_editor_label" -->

SmartFileBrowser/src/main/java/ir/smartdevelopers/smartfilebrowser/acitivties/FileBrowserMainActivity.java

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,14 @@
1111
import android.content.Intent;
1212
import android.content.pm.PackageManager;
1313
import android.content.pm.ResolveInfo;
14+
import android.content.res.Resources;
1415
import android.content.res.TypedArray;
1516
import android.graphics.Bitmap;
1617
import android.graphics.Color;
1718
import android.graphics.Rect;
1819
import android.graphics.drawable.ColorDrawable;
1920
import android.graphics.drawable.Drawable;
21+
import android.graphics.drawable.VectorDrawable;
2022
import android.net.Uri;
2123
import android.os.Build;
2224
import android.os.Bundle;
@@ -49,14 +51,17 @@
4951
import androidx.annotation.NonNull;
5052
import androidx.annotation.Nullable;
5153
import androidx.appcompat.app.AppCompatActivity;
54+
import androidx.appcompat.app.AppCompatDelegate;
5255
import androidx.appcompat.content.res.AppCompatResources;
56+
import androidx.appcompat.view.ContextThemeWrapper;
5357
import androidx.appcompat.widget.AppCompatTextView;
5458
import androidx.constraintlayout.widget.Group;
5559
import androidx.core.app.ActivityCompat;
5660
import androidx.core.app.ActivityOptionsCompat;
5761
import androidx.core.app.SharedElementCallback;
5862
import androidx.core.content.ContextCompat;
5963
import androidx.core.content.FileProvider;
64+
import androidx.core.content.res.ResourcesCompat;
6065
import androidx.core.graphics.Insets;
6166
import androidx.core.graphics.drawable.DrawableKt;
6267
import androidx.core.view.ViewCompat;
@@ -69,6 +74,7 @@
6974
import androidx.lifecycle.ViewModelProvider;
7075
import androidx.recyclerview.widget.LinearLayoutManager;
7176
import androidx.recyclerview.widget.RecyclerView;
77+
import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat;
7278

7379
import com.aurelhubert.ahbottomnavigation.AHBottomNavigation;
7480
import com.aurelhubert.ahbottomnavigation.AHBottomNavigationItem;
@@ -82,6 +88,8 @@
8288
import java.util.Collections;
8389
import java.util.List;
8490
import java.util.Map;
91+
import java.util.concurrent.ExecutorService;
92+
import java.util.concurrent.Executors;
8593
import java.util.concurrent.atomic.AtomicBoolean;
8694

8795
import ir.smartdevelopers.smartfilebrowser.R;
@@ -196,6 +204,7 @@ public class FileBrowserMainActivity extends AppCompatActivity {
196204
// when it closing
197205
private final AtomicBoolean mIsCanceled = new AtomicBoolean(true);
198206
//</editor-fold>
207+
private ExecutorService mExecutorService;
199208

200209
private void getDataFromIntent() {
201210
mShowVideosInGallery = getIntent().getBooleanExtra("mShowVideosInGallery", true);
@@ -243,18 +252,25 @@ public boolean accept(File pathname) {
243252
};
244253
}
245254

255+
246256
@Override
247257
protected void onCreate(Bundle savedInstanceState) {
248-
setTheme(R.style.sfb_AppTheme);
258+
259+
260+
super.onCreate(savedInstanceState);
261+
249262
Window window = getWindow();
263+
window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
250264
// window.setSharedElementsUseOverlay(false);
251265
WindowCompat.enableEdgeToEdge(window);
252266
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
267+
window.getDecorView().setBackground(new ColorDrawable(Color.TRANSPARENT));
253268
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
269+
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
270+
254271
// window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
255272
window.setDimAmount(0.6f);
256273

257-
window.requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
258274
window.setAllowEnterTransitionOverlap(false);
259275
Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.iten_transition_in);
260276
window.setSharedElementExitTransition(transition);
@@ -273,7 +289,6 @@ public void onMapSharedElements(List<String> names, Map<String, View> sharedElem
273289
}
274290
});
275291

276-
super.onCreate(savedInstanceState);
277292
setContentView(R.layout.activity_file_browser_main);
278293
mIsCanceled.set(true);
279294
mSelectionFileViewModel = new ViewModelProvider(this).get(SelectionFileViewModel.class);
@@ -339,11 +354,12 @@ public void onChanged(List<FileBrowserModel> fileBrowserModels) {
339354
// </editor-fold>
340355
// <editor-fold desc=" FileBrowser adapter init">
341356
if (mShowGalleryTab) {
357+
mExecutorService = Executors.newFixedThreadPool(3);
342358
int spanCount = getResources().getInteger(R.integer.sfb_gallery_grid);
343359
int gapSpace = getResources().getDimensionPixelSize(R.dimen.sfb_gallery_gap_size);
344360

345361
mGalleryLayoutManager = new GalleryLayoutManager(this, spanCount);
346-
mGalleryAdapter = new GalleryAdapter(mSelectionFileViewModel.getSelectedFiles());
362+
mGalleryAdapter = new GalleryAdapter(mSelectionFileViewModel.getSelectedFiles(),mExecutorService);
347363
mGalleryAdapter.setCanSelectMultiple(mCanSelectMultipleInGallery);
348364
mGalleryAdapter.setOnItemClickListener(mGalleryModelItemClickListener);
349365
mGalleryAdapter.setOnItemSelectListener(mOnFileItemSelectListener);
@@ -511,9 +527,12 @@ private void manageEdgeToEdge() {
511527

512528
@Override
513529
protected void onDestroy() {
514-
super.onDestroy();
515-
// mCallbackViewModel.clearCallback();
530+
if (mExecutorService != null){
531+
mExecutorService.shutdown();
532+
}
516533
mResultListener.clear();
534+
super.onDestroy();
535+
517536
}
518537

519538
@Override
@@ -818,7 +837,10 @@ private AHBottomNavigationItem createNavItem(int colorAttr, int titleRes, int ic
818837
value.data);
819838
}
820839
private void initViews(Bundle savedInstanceState) {
821-
840+
// ContextThemeWrapper wrapper = new ContextThemeWrapper(this,R.style.sfb_BaseAppTheme);
841+
// Drawable okDrawable = VectorDrawableCompat.create(wrapper.getResources(),R.drawable.sfb_ic_circle_tick_filled,wrapper.getTheme());
842+
// //okDrawable.setTintList(null);
843+
// btnSelectionOk.setImageDrawable(okDrawable);
822844
int[] attrs={R.attr.SFBColorGallery,R.attr.SFBColorPDF,R.attr.SFBColorAudio,R.attr.SFBColorFile};
823845

824846
if (mShowGalleryTab) {

SmartFileBrowser/src/main/java/ir/smartdevelopers/smartfilebrowser/acitivties/VideoViewActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ private void showThumbnail(boolean animate) {
226226
private void hideThumbNaile(boolean animate) {
227227
if (mVideoPrapered && mTransitionEnds){
228228
if (animate){
229-
imgThumbnailHolder.animate().setDuration(animationDuration).alpha(0)
229+
imgThumbnailHolder.animate().setDuration(animationDuration).alpha(0f)
230230
.setUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
231231
@Override
232232
public void onAnimationUpdate(@NonNull ValueAnimator animation) {

SmartFileBrowser/src/main/java/ir/smartdevelopers/smartfilebrowser/adapters/GalleryAdapter.java

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package ir.smartdevelopers.smartfilebrowser.adapters;
22

3+
import android.content.Context;
34
import android.graphics.Rect;
45
import android.graphics.drawable.Drawable;
6+
import android.media.MediaMetadataRetriever;
57
import android.net.Uri;
68
import android.view.LayoutInflater;
79
import android.view.View;
@@ -32,9 +34,12 @@
3234
import com.bumptech.glide.request.target.Target;
3335

3436
import java.io.File;
37+
import java.io.IOException;
38+
import java.lang.ref.WeakReference;
3539
import java.util.ArrayList;
3640
import java.util.List;
3741
import java.util.Objects;
42+
import java.util.concurrent.ExecutorService;
3843

3944
import ir.smartdevelopers.smartfilebrowser.R;
4045
import ir.smartdevelopers.smartfilebrowser.customClasses.FileUtil;
@@ -65,9 +70,11 @@ public class GalleryAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder
6570
private OnItemChooseListener mOnItemChooseListener;
6671
/**For preventing multiple btnZoom click*/
6772
private boolean mZoomButtonClicked=false;
73+
private ExecutorService mOrientationRetrieverService;
6874

69-
public GalleryAdapter(List<File> selectedFiles) {
70-
mGalleryModels=new ArrayList<>();
75+
public GalleryAdapter(List<File> selectedFiles, ExecutorService orientationRetrieverService) {
76+
mOrientationRetrieverService = orientationRetrieverService;
77+
mGalleryModels=new ArrayList<>();
7178
mSelectedFiles=selectedFiles;
7279
setHasStableIds(true);
7380
}
@@ -377,7 +384,9 @@ void bindView(GalleryModel model){
377384
.transition(DrawableTransitionOptions.withCrossFade())
378385
.into(mImageView);
379386

380-
387+
if (model.getOrientation() == -1 && mOrientationRetrieverService != null){
388+
mOrientationRetrieverService.execute(new OrientationRetriever(model,itemView.getContext()));
389+
}
381390
if (model.getType()== FileUtil.TYPE_VIDEO){
382391
txtVideoDuration.setVisibility(View.VISIBLE);
383392
txtVideoDuration.setText(model.getDurationTime());
@@ -467,4 +476,28 @@ public List<GalleryModel> getSelectedModels(){
467476
public void setSelectedFiles(List<File> selectedFiles) {
468477
mSelectedFiles = selectedFiles;
469478
}
479+
private static class OrientationRetriever implements Runnable {
480+
private GalleryModel mModel;
481+
private WeakReference<Context> wContext;
482+
483+
private OrientationRetriever(GalleryModel model,Context context) {
484+
mModel = model;
485+
wContext = new WeakReference<>(context.getApplicationContext());
486+
}
487+
488+
@Override
489+
public void run() {
490+
try(MediaMetadataRetriever retriever = new MediaMetadataRetriever()){
491+
retriever.setDataSource(wContext.get(),mModel.getUri());
492+
String rotation = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION);
493+
if (rotation != null){
494+
mModel.setOrientation(Integer.parseInt(rotation));
495+
}else {
496+
mModel.setOrientation(0);
497+
}
498+
} catch (IOException e) {
499+
mModel.setOrientation(0);
500+
}
501+
}
502+
}
470503
}

SmartFileBrowser/src/main/java/ir/smartdevelopers/smartfilebrowser/customClasses/MyVideoView.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,22 @@
1010

1111
import java.io.IOException;
1212

13-
public class MyVideoView extends VideoView {
13+
public class MyVideoView extends TextureVideoView {
1414
private int mVideoWidth;
1515
private int mVideoHeight;
1616
private int mVideoRotation;
1717
public MyVideoView(Context context, AttributeSet attrs) {
18-
super(context, attrs);
18+
this(context, attrs,0);
19+
1920
}
2021

2122
public MyVideoView(Context context, AttributeSet attrs, int defStyle) {
2223
super(context, attrs, defStyle);
2324
}
2425

2526
public MyVideoView(Context context) {
26-
super(context);
27+
this(context,null);
28+
2729
}
2830

2931

0 commit comments

Comments
 (0)