diff --git a/checkstyle.xml b/checkstyle.xml index 14dc9d673..0b3d4302f 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -1,6 +1,6 @@ diff --git a/matisse/src/main/java/com/zhihu/matisse/internal/ui/widget/CheckRadioView.java b/matisse/src/main/java/com/zhihu/matisse/internal/ui/widget/CheckRadioView.java index f860c58cf..c16e7a873 100644 --- a/matisse/src/main/java/com/zhihu/matisse/internal/ui/widget/CheckRadioView.java +++ b/matisse/src/main/java/com/zhihu/matisse/internal/ui/widget/CheckRadioView.java @@ -1,6 +1,7 @@ package com.zhihu.matisse.internal.ui.widget; import android.content.Context; +import android.content.res.TypedArray; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.support.v4.content.res.ResourcesCompat; @@ -21,17 +22,22 @@ public CheckRadioView(Context context) { init(); } - - public CheckRadioView(Context context, AttributeSet attrs) { super(context, attrs); init(); } + public CheckRadioView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(); + } + private void init() { - mSelectedColor = ResourcesCompat.getColor( - getResources(), R.color.zhihu_item_checkCircle_backgroundColor, - getContext().getTheme()); + TypedArray ta = getContext().getTheme() + .obtainStyledAttributes(new int[]{R.attr.item_checkCircle_backgroundColor}); + mSelectedColor = ta.getColor(0, + ResourcesCompat.getColor(getResources(), R.color.zhihu_item_checkCircle_backgroundColor, getContext().getTheme())); + ta.recycle(); mUnSelectUdColor = ResourcesCompat.getColor( getResources(), R.color.zhihu_check_original_radio_disable, getContext().getTheme()); diff --git a/matisse/src/main/java/com/zhihu/matisse/internal/utils/MediaStoreCompat.java b/matisse/src/main/java/com/zhihu/matisse/internal/utils/MediaStoreCompat.java index 54a10c93b..98f2e3400 100644 --- a/matisse/src/main/java/com/zhihu/matisse/internal/utils/MediaStoreCompat.java +++ b/matisse/src/main/java/com/zhihu/matisse/internal/utils/MediaStoreCompat.java @@ -22,11 +22,13 @@ import android.content.pm.ResolveInfo; import android.net.Uri; import android.os.Build; +import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.support.v4.content.FileProvider; import android.support.v4.os.EnvironmentCompat; +import android.text.TextUtils; import com.zhihu.matisse.internal.entity.CaptureStrategy; @@ -40,11 +42,14 @@ public class MediaStoreCompat { + public static final String MEDIA_STORE_COMPAT_CUR_PHOTO_URI = "media_store_compat_cur_photo_uri"; + public static final String MEDIA_STORE_COMPAT_CUR_PHOTO_PATH = "media_store_compat_cur_photo_path"; + private final WeakReference mContext; private final WeakReference mFragment; - private CaptureStrategy mCaptureStrategy; - private Uri mCurrentPhotoUri; - private String mCurrentPhotoPath; + private CaptureStrategy mCaptureStrategy; + private Uri mCurrentPhotoUri; + private String mCurrentPhotoPath; public MediaStoreCompat(Activity activity) { mContext = new WeakReference<>(activity); @@ -56,6 +61,27 @@ public MediaStoreCompat(Activity activity, Fragment fragment) { mFragment = new WeakReference<>(fragment); } + public void onSaveInstanceState(Bundle outState) { + if (outState == null) { + return; + } + + if (mCurrentPhotoUri != null) { + outState.putString(MEDIA_STORE_COMPAT_CUR_PHOTO_URI, mCurrentPhotoUri.toString()); + } + outState.putString(MEDIA_STORE_COMPAT_CUR_PHOTO_PATH, mCurrentPhotoPath); + } + + public void onCreate(Bundle savedInstanceState) { + if (savedInstanceState != null) { + mCurrentPhotoPath = savedInstanceState.getString(MEDIA_STORE_COMPAT_CUR_PHOTO_PATH, null); + String uriStr = savedInstanceState.getString(MEDIA_STORE_COMPAT_CUR_PHOTO_URI, null); + if (!TextUtils.isEmpty(uriStr)) { + mCurrentPhotoUri = Uri.parse(uriStr); + } + } + } + /** * Checks whether the device has a camera feature or not. * 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 0f0322c86..57817d9af 100644 --- a/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java +++ b/matisse/src/main/java/com/zhihu/matisse/ui/MatisseActivity.java @@ -112,6 +112,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { if (mSpec.captureStrategy == null) throw new RuntimeException("Don't forget to set CaptureStrategy."); mMediaStoreCompat.setCaptureStrategy(mSpec.captureStrategy); + mMediaStoreCompat.onCreate(savedInstanceState); } Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); @@ -157,6 +158,9 @@ protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mSelectedCollection.onSaveInstanceState(outState); mAlbumCollection.onSaveInstanceState(outState); + if (mMediaStoreCompat != null) { + mMediaStoreCompat.onSaveInstanceState(outState); + } outState.putBoolean("checkState", mOriginalEnable); }