Skip to content

Show images on Android 10 fixed #2

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Oct 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 28
compileSdkVersion 29
//buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.vincent.filepickersample"
minSdkVersion 14
targetSdkVersion 28
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Expand Down
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.3'
classpath 'com.android.tools.build:gradle:4.0.1'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.6'
// NOTE: Do not place your application dependencies here; they belong
Expand Down
5 changes: 5 additions & 0 deletions filepicker/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ android {
lintOptions {
disable 'Deprecation'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
buildToolsVersion '30.0.2'
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class Constant {
public static final String MAX_VIDEO_DURATION = "MaxVideoDuration";
public static final String VIDEO_QUALITY = "VideoQuality";
public static final String MAX_AUDIO_SIZE = "AudioFileSize";
public static final String DIRECTORY = "Directory";

public static final int REQUEST_CODE_PICK_IMAGE = 0x100;
public static final String RESULT_PICK_IMAGE = "ResultPickImage";
Expand Down
18 changes: 14 additions & 4 deletions filepicker/src/main/java/com/vincent/filepicker/Util.java
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
package com.vincent.filepicker;

import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.WindowManager;
import android.view.animation.DecelerateInterpolator;

import com.vincent.filepicker.filter.entity.BaseFile;

import java.util.Collections;
import java.util.List;

/**
Expand Down Expand Up @@ -131,4 +130,15 @@ public static String extractFileSuffix(String url) {
return "";
}
}

public static void sortFileList(List<? extends BaseFile> list) {
Collections.sort(list, (c1, c2) -> {
if (c1.getDate() > c2.getDate()) {
return -1;
} else if (c1.getDate() < c2.getDate()) {
return 1;
}
return 0;
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ public class AudioPickActivity extends BaseActivity {
private int mMaxNumber;
private int mMaxSize = 0;
private int mCurrentNumber = 0;
private String selectedDirectory;
private RecyclerView mRecyclerView;
private AudioPickAdapter mAdapter;
private boolean isNeedRecorder;
Expand Down Expand Up @@ -132,17 +133,11 @@ public void onFolderListClick(Directory directory) {
tv_folder.setText(directory.getName());

if (TextUtils.isEmpty(directory.getPath())) { //All
refreshData(mAll);
selectedDirectory = null;
} else {
for (Directory<AudioFile> dir : mAll) {
if (dir.getPath().equals(directory.getPath())) {
List<Directory<AudioFile>> list = new ArrayList<>();
list.add(dir);
refreshData(list);
break;
}
}
selectedDirectory = directory.getPath();
}
refreshData();
}
});
}
Expand Down Expand Up @@ -186,12 +181,12 @@ public void onResult(List<Directory<AudioFile>> directories) {
}

mAll = directories;
refreshData(directories);
refreshData();
}
});
}

private void refreshData(List<Directory<AudioFile>> directories) {
private void refreshData() {
boolean tryToFindTaken = isTakenAutoSelected;

// if auto-select taken file is enabled, make sure requirements are met
Expand All @@ -201,7 +196,10 @@ private void refreshData(List<Directory<AudioFile>> directories) {
}

List<AudioFile> list = new ArrayList<>();
for (Directory<AudioFile> directory : directories) {
for (Directory<AudioFile> directory : mAll) {
if (selectedDirectory != null && !directory.getPath().equals(selectedDirectory)) {
continue;
}
list.addAll(directory.getFiles());

// auto-select taken file?
Expand All @@ -216,6 +214,9 @@ private void refreshData(List<Directory<AudioFile>> directories) {
list.get(index).setSelected(true);
}
}

Util.sortFileList(list);

mAdapter.refresh(list);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,23 @@

import android.content.Intent;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import androidx.appcompat.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.annotation.Nullable;
import androidx.appcompat.widget.Toolbar;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;

import com.bm.library.PhotoView;
import com.bumptech.glide.Glide;
import com.vincent.filepicker.Constant;
import com.vincent.filepicker.R;
import com.vincent.filepicker.ToastUtil;
import com.vincent.filepicker.Util;
import com.vincent.filepicker.filter.FileFilter;
import com.vincent.filepicker.filter.callback.FilterResultCallback;
import com.vincent.filepicker.filter.entity.Directory;
Expand All @@ -38,6 +40,7 @@ public class ImageBrowserActivity extends BaseActivity {
public static final String IMAGE_BROWSER_INIT_INDEX = "ImageBrowserInitIndex";
public static final String IMAGE_BROWSER_SELECTED_LIST = "ImageBrowserSelectedList";
private int mMaxNumber;
private String selectedDirectory;
private int mCurrentNumber = 0;
private int initIndex = 0;
private int mCurrentIndex = 0;
Expand All @@ -57,6 +60,7 @@ void permissionGranted() {
protected void onCreate(@Nullable Bundle savedInstanceState) {
setContentView(R.layout.vw_activity_image_browser);

selectedDirectory = getIntent().getStringExtra(Constant.DIRECTORY);
mMaxNumber = getIntent().getIntExtra(Constant.MAX_NUMBER, DEFAULT_MAX_NUMBER);
initIndex = getIntent().getIntExtra(IMAGE_BROWSER_INIT_INDEX, 0);
mCurrentIndex = initIndex;
Expand Down Expand Up @@ -134,7 +138,9 @@ private void loadData() {
public void onResult(List<Directory<ImageFile>> directories) {
mList.clear();
for (Directory<ImageFile> directory : directories) {
mList.addAll(directory.getFiles());
if (selectedDirectory == null || directory.getPath().equals(selectedDirectory)) {
mList.addAll(directory.getFiles());
}
}

for (ImageFile file : mList) {
Expand All @@ -143,6 +149,8 @@ public void onResult(List<Directory<ImageFile>> directories) {
}
}

Util.sortFileList(mList);

initView();
mViewPager.getAdapter().notifyDataSetChanged();
}
Expand All @@ -157,7 +165,7 @@ public Object instantiateItem(ViewGroup container, int position) {
view.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

Glide.with(ImageBrowserActivity.this)
.load(mList.get(position).getPath())
.load(mList.get(position).getUri())
.transition(withCrossFade())
.into(view);
container.addView(view);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,19 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.vincent.filepicker.Constant;
import com.vincent.filepicker.DividerGridItemDecoration;
import com.vincent.filepicker.R;
import com.vincent.filepicker.Util;
import com.vincent.filepicker.adapter.FolderListAdapter;
import com.vincent.filepicker.adapter.ImagePickAdapter;
import com.vincent.filepicker.adapter.OnSelectStateListener;
Expand Down Expand Up @@ -41,6 +43,7 @@ public class ImagePickActivity extends BaseActivity {
public static final int COLUMN_NUMBER = 3;
private int mMaxNumber;
private int mCurrentNumber = 0;
private String selectedDirectory;
private RecyclerView mRecyclerView;
private ImagePickAdapter mAdapter;
private boolean isNeedCamera;
Expand Down Expand Up @@ -128,17 +131,13 @@ public void onFolderListClick(Directory directory) {
tv_folder.setText(directory.getName());

if (TextUtils.isEmpty(directory.getPath())) { //All
refreshData(mAll);
selectedDirectory = null;
mAdapter.setSelectedDirectory(null);
} else {
for (Directory<ImageFile> dir : mAll) {
if (dir.getPath().equals(directory.getPath())) {
List<Directory<ImageFile>> list = new ArrayList<>();
list.add(dir);
refreshData(list);
break;
}
}
selectedDirectory = directory.getPath();
mAdapter.setSelectedDirectory(directory.getPath());
}
refreshData();
}
});
}
Expand Down Expand Up @@ -199,12 +198,12 @@ public void onResult(List<Directory<ImageFile>> directories) {
}

mAll = directories;
refreshData(directories);
refreshData();
}
});
}

private void refreshData(List<Directory<ImageFile>> directories) {
private void refreshData() {
boolean tryToFindTakenImage = isTakenAutoSelected;

// if auto-select taken image is enabled, make sure requirements are met
Expand All @@ -214,7 +213,10 @@ private void refreshData(List<Directory<ImageFile>> directories) {
}

List<ImageFile> list = new ArrayList<>();
for (Directory<ImageFile> directory : directories) {
for (Directory<ImageFile> directory : mAll) {
if (selectedDirectory != null && !directory.getPath().equals(selectedDirectory)) {
continue;
}
list.addAll(directory.getFiles());

// auto-select taken images?
Expand All @@ -229,6 +231,9 @@ private void refreshData(List<Directory<ImageFile>> directories) {
list.get(index).setSelected(true);
}
}

Util.sortFileList(list);

mAdapter.refresh(list);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import com.vincent.filepicker.Constant;
import com.vincent.filepicker.DividerListItemDecoration;
import com.vincent.filepicker.R;
import com.vincent.filepicker.Util;
import com.vincent.filepicker.adapter.FolderListAdapter;
import com.vincent.filepicker.adapter.NormalFilePickAdapter;
import com.vincent.filepicker.adapter.OnSelectStateListener;
Expand All @@ -39,6 +40,7 @@ public class NormalFilePickActivity extends BaseActivity {
public static final String SUFFIX = "Suffix";
private int mMaxNumber;
private int mCurrentNumber = 0;
private String selectedDirectory;
private RecyclerView mRecyclerView;
private NormalFilePickAdapter mAdapter;
private ArrayList<NormalFile> mSelectedList = new ArrayList<>();
Expand Down Expand Up @@ -126,17 +128,11 @@ public void onFolderListClick(Directory directory) {
tv_folder.setText(directory.getName());

if (TextUtils.isEmpty(directory.getPath())) { //All
refreshData(mAll);
selectedDirectory = null;
} else {
for (Directory<NormalFile> dir : mAll) {
if (dir.getPath().equals(directory.getPath())) {
List<Directory<NormalFile>> list = new ArrayList<>();
list.add(dir);
refreshData(list);
break;
}
}
selectedDirectory = directory.getPath();
}
refreshData();
}
});
}
Expand All @@ -157,15 +153,18 @@ public void onResult(List<Directory<NormalFile>> directories) {
}

mAll = directories;
refreshData(directories);
refreshData();
}
}, mSuffix);
}

private void refreshData(List<Directory<NormalFile>> directories) {
private void refreshData() {
mProgressBar.setVisibility(View.GONE);
List<NormalFile> list = new ArrayList<>();
for (Directory<NormalFile> directory : directories) {
for (Directory<NormalFile> directory : mAll) {
if (selectedDirectory != null && !directory.getPath().equals(selectedDirectory)) {
continue;
}
list.addAll(directory.getFiles());
}

Expand All @@ -176,6 +175,8 @@ private void refreshData(List<Directory<NormalFile>> directories) {
}
}

Util.sortFileList(list);

mAdapter.refresh(list);
}
}
Loading