diff --git a/matisse/build.gradle b/matisse/build.gradle index 266c5921d..3572a7f83 100644 --- a/matisse/build.gradle +++ b/matisse/build.gradle @@ -52,7 +52,7 @@ publish { userOrg = 'zhihu' groupId = 'com.zhihu.android' artifactId = 'matisse' - publishVersion = '0.5.3-beta3' + publishVersion = '0.5.3-beta4' desc = 'A well-designed local image selector for Android' website = 'https://www.zhihu.com/' } diff --git a/matisse/src/main/java/com/zhihu/matisse/MimeType.java b/matisse/src/main/java/com/zhihu/matisse/MimeType.java index edbcced9b..6b43d9a5a 100644 --- a/matisse/src/main/java/com/zhihu/matisse/MimeType.java +++ b/matisse/src/main/java/com/zhihu/matisse/MimeType.java @@ -19,11 +19,10 @@ import android.content.ContentResolver; import android.net.Uri; import android.text.TextUtils; +import android.webkit.MimeTypeMap; import androidx.collection.ArraySet; -import android.webkit.MimeTypeMap; - import com.zhihu.matisse.internal.utils.PhotoMetadataUtils; import java.util.Arrays; @@ -58,6 +57,12 @@ public enum MimeType { WEBP("image/webp", arraySetOf( "webp" )), + HEIC("image/heic", arraySetOf( + "heic" + )), + HEIF("image/heif", arraySetOf( + "heif" + )), // ============== videos ============== MPEG("video/mpeg", arraySetOf( @@ -109,7 +114,7 @@ public static Set of(MimeType type, MimeType... rest) { } public static Set ofImage() { - return EnumSet.of(JPEG, PNG, GIF, BMP, WEBP); + return EnumSet.of(JPEG, PNG, GIF, BMP, WEBP, HEIC, HEIF); } public static Set ofImage(boolean onlyGif) { diff --git a/matisse/src/main/java/com/zhihu/matisse/internal/loader/AlbumMediaLoader.java b/matisse/src/main/java/com/zhihu/matisse/internal/loader/AlbumMediaLoader.java index 7bba0d616..127a02a17 100644 --- a/matisse/src/main/java/com/zhihu/matisse/internal/loader/AlbumMediaLoader.java +++ b/matisse/src/main/java/com/zhihu/matisse/internal/loader/AlbumMediaLoader.java @@ -120,7 +120,7 @@ private static String[] getSelectionAlbumArgsForGifType(int mediaType, String al } // =============================================================== - private static final String ORDER_BY = MediaStore.Images.Media.DATE_TAKEN + " DESC"; + private static final String ORDER_BY = MediaStore.Images.Media.DATE_MODIFIED + " DESC"; private final boolean mEnableCapture; private AlbumMediaLoader(Context context, String selection, String[] selectionArgs, boolean capture) { diff --git a/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java b/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java index 662379a2e..1e52a1f45 100644 --- a/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java +++ b/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java @@ -386,6 +386,8 @@ public void onAlbumReset() { mAlbumsAdapter.swapCursor(null); } + private Fragment fragment; + private void onAlbumSelected(Album album) { if (album.isAll() && album.isEmpty()) { mContainer.setVisibility(View.GONE); @@ -393,10 +395,16 @@ private void onAlbumSelected(Album album) { } else { mContainer.setVisibility(View.VISIBLE); mEmptyView.setVisibility(View.GONE); - Fragment fragment = MediaSelectionFragment.newInstance(album); + if (fragment != null) { + getSupportFragmentManager() + .beginTransaction() + .remove(fragment) + .commitAllowingStateLoss(); + } + fragment = MediaSelectionFragment.newInstance(album); getSupportFragmentManager() .beginTransaction() - .replace(R.id.container, fragment, MediaSelectionFragment.class.getSimpleName()) + .add(R.id.container, fragment, MediaSelectionFragment.class.getSimpleName()) .commitAllowingStateLoss(); } }