diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java index 7a2849623..d0491af86 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java @@ -206,9 +206,16 @@ public class FavoritesScene extends BaseScene implements @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); + + boolean hasFirstRefresh; + if (mHelper != null && 1 == mHelper.getShownViewIndex()) { + hasFirstRefresh = false; + } else { + hasFirstRefresh = mHasFirstRefresh; + } + outState.putBoolean(KEY_HAS_FIRST_REFRESH, hasFirstRefresh); outState.putParcelable(KEY_URL_BUILDER, mUrlBuilder); outState.putBoolean(KEY_SEARCH_MODE, mSearchMode); - outState.putBoolean(KEY_HAS_FIRST_REFRESH, mHasFirstRefresh); outState.putIntArray(KEY_FAV_COUNT_ARRAY, mFavCountArray); outState.putInt(KEY_ALL_COUNT, mAllCount); outState.putInt(KEY_ALL_LIMIT, mAllLimit); @@ -339,12 +346,17 @@ public class FavoritesScene extends BaseScene implements mAdapter.unregister(); mAdapter = null; } + if (null != mHelper) { + if (1 == mHelper.getShownViewIndex()) { + mHasFirstRefresh = false; + } + mHelper = null; + } mRecyclerView = null; mSearchBar = null; mFabLayout = null; - mHelper = null; mSearchBarMover = null; mLeftDrawable = null; @@ -763,7 +775,7 @@ public class FavoritesScene extends BaseScene implements private void onGetFavoritesFailure(Exception e, int taskId) { if (mHelper != null && mSearchBarMover != null && mHelper.isCurrentTask(taskId)) { - mHelper.onGetExpection(taskId, e); + mHelper.onGetException(taskId, e); } } @@ -776,7 +788,7 @@ public class FavoritesScene extends BaseScene implements list = EhDB.searchLocalFavorites(keyword); } if (list.size() == 0) { - mHelper.onGetExpection(taskId, new NotFoundException()); + mHelper.onGetException(taskId, new NotFoundException()); } else { mHelper.setPages(taskId, 1); mHelper.onGetPageData(taskId, list); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 500c64585..f2abbb4d4 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -230,7 +230,14 @@ public final class GalleryListScene extends BaseScene @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putBoolean(KEY_HAS_FIRST_REFRESH, mHasFirstRefresh); + + boolean hasFirstRefresh; + if (mHelper != null && 1 == mHelper.getShownViewIndex()) { + hasFirstRefresh = false; + } else { + hasFirstRefresh = mHasFirstRefresh; + } + outState.putBoolean(KEY_HAS_FIRST_REFRESH, hasFirstRefresh); outState.putParcelable(KEY_LIST_URL_BUILDER, mUrlBuilder); outState.putInt(KEY_STATE, mState); } @@ -395,6 +402,12 @@ public final class GalleryListScene extends BaseScene mAdapter.unregister(); mAdapter = null; } + if (null != mHelper) { + if (1 == mHelper.getShownViewIndex()) { + mHasFirstRefresh = false; + } + mHelper = null; + } mRecyclerView = null; mFitPaddingLayout = null; @@ -402,7 +415,6 @@ public final class GalleryListScene extends BaseScene mSearchBar = null; mFab = null; mViewTransition = null; - mHelper = null; mLeftDrawable = null; mRightDrawable = null; mFabAnimatorListener = null; @@ -984,7 +996,7 @@ public final class GalleryListScene extends BaseScene private void onGetGalleryListFailure(Exception e, int taskId) { if (mHelper != null && mSearchBarMover != null && mHelper.isCurrentTask(taskId) && isViewCreated()) { - mHelper.onGetExpection(taskId, e); + mHelper.onGetException(taskId, e); } } @@ -1000,7 +1012,7 @@ public final class GalleryListScene extends BaseScene private void onGetWhatsHotFailure(Exception e, int taskId) { if (mHelper != null && mSearchBarMover != null && mHelper.isCurrentTask(taskId) && isViewCreated()) { - mHelper.onGetExpection(taskId, e); + mHelper.onGetException(taskId, e); } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java index 44c506df3..508c7e9cd 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryPreviewsScene.java @@ -111,8 +111,15 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); + + boolean hasFirstRefresh; + if (mHelper != null && 1 == mHelper.getShownViewIndex()) { + hasFirstRefresh = false; + } else { + hasFirstRefresh = mHasFirstRefresh; + } + outState.putBoolean(KEY_HAS_FIRST_REFRESH, hasFirstRefresh); outState.putParcelable(KEY_GALLERY_INFO, mGalleryInfo); - outState.putBoolean(KEY_HAS_FIRST_REFRESH, mHasFirstRefresh); } @Nullable @@ -151,8 +158,14 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi public void onDestroyView() { super.onDestroyView(); + if (null != mHelper) { + if (1 == mHelper.getShownViewIndex()) { + mHasFirstRefresh = false; + } + mHelper = null; + } + mAdapter = null; - mHelper = null; } @Override @@ -249,7 +262,7 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi @Override protected void getPageData(final int taskId, int type, int page) { if (null == mClient || null == mGalleryInfo) { - onGetExpection(taskId, new EhException(getString(R.string.error_cannot_find_gallery))); + onGetException(taskId, new EhException(getString(R.string.error_cannot_find_gallery))); return; } @@ -322,7 +335,7 @@ public class GalleryPreviewsScene extends ToolbarScene implements EasyRecyclerVi private void onGetLargePreviewSetFailure(Exception e, int taskId) { if (mHelper != null && mHelper.isCurrentTask(taskId) && isViewCreated()) { - mHelper.onGetExpection(taskId, e); + mHelper.onGetException(taskId, e); } } diff --git a/app/src/main/java/com/hippo/widget/ContentLayout.java b/app/src/main/java/com/hippo/widget/ContentLayout.java index c76ccf0dc..92c0f1a23 100644 --- a/app/src/main/java/com/hippo/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/widget/ContentLayout.java @@ -17,6 +17,7 @@ package com.hippo.widget; import android.content.Context; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Parcelable; import android.support.annotation.NonNull; @@ -35,6 +36,7 @@ import com.hippo.easyrecyclerview.FastScroller; import com.hippo.easyrecyclerview.HandlerDrawable; import com.hippo.easyrecyclerview.LayoutManagerUtils; import com.hippo.ehviewer.R; +import com.hippo.util.DrawableManager; import com.hippo.util.ExceptionUtils; import com.hippo.view.ViewTransition; import com.hippo.widget.refreshlayout.RefreshLayout; @@ -51,14 +53,12 @@ public class ContentLayout extends FrameLayout { private static final String TAG = ContentLayout.class.getSimpleName(); private ProgressView mProgressView; - private ViewGroup mTipView; + private TextView mTipView; private ViewGroup mContentView; private RefreshLayout mRefreshLayout; private EasyRecyclerView mRecyclerView; private FastScroller mFastScroller; - private View mImageView; - private TextView mTextView; private ContentHelper mContentHelper; @@ -84,14 +84,12 @@ public class ContentLayout extends FrameLayout { LayoutInflater.from(context).inflate(R.layout.widget_content_layout, this); mProgressView = (ProgressView) findViewById(R.id.progress); - mTipView = (ViewGroup) findViewById(R.id.tip); + mTipView = (TextView) findViewById(R.id.tip); mContentView = (ViewGroup) findViewById(R.id.content_view); mRefreshLayout = (RefreshLayout) mContentView.findViewById(R.id.refresh_layout); mFastScroller = (FastScroller) mContentView.findViewById(R.id.fast_scroller); mRecyclerView = (EasyRecyclerView) mRefreshLayout.findViewById(R.id.recycler_view); - mImageView = mTipView.getChildAt(0); - mTextView = (TextView) mTipView.getChildAt(1); mFastScroller.attachToRecyclerView(mRecyclerView); HandlerDrawable drawable = new HandlerDrawable(); @@ -190,13 +188,11 @@ public class ContentLayout extends FrameLayout { public static final int REFRESH_TYPE_PROGRESS_VIEW = 2; private ProgressView mProgressView; - private ViewGroup mTipView; + private TextView mTipView; private ViewGroup mContentView; private RefreshLayout mRefreshLayout; private EasyRecyclerView mRecyclerView; - private View mImageView; - private TextView mTextView; private ViewTransition mViewTransition; @@ -303,11 +299,12 @@ public class ContentLayout extends FrameLayout { mRefreshLayout = contentLayout.mRefreshLayout; mRecyclerView = contentLayout.mRecyclerView; - mImageView = contentLayout.mImageView; - mTextView = contentLayout.mTextView; + + Drawable drawable = DrawableManager.getDrawable(getContext(), R.drawable.big_weird_face); + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); + mTipView.setCompoundDrawables(null, drawable, null, null); mViewTransition = new ViewTransition(mContentView, mProgressView, mTipView); - mViewTransition.showView(2, false); mRecyclerView.addOnScrollListener(mOnScrollListener); mRefreshLayout.setOnRefreshListener(mOnRefreshListener); @@ -342,6 +339,10 @@ public class ContentLayout extends FrameLayout { protected void onHideRecyclerView() { } + public int getShownViewIndex() { + return mViewTransition.getShownViewIndex(); + } + public void setRefreshLayoutEnable(boolean enable) { mRefreshLayout.setEnabled(enable); } @@ -542,7 +543,7 @@ public class ContentLayout extends FrameLayout { mRefreshLayout.setFooterRefreshing(false); } - public void onGetExpection(int taskId, Exception e) { + public void onGetException(int taskId, Exception e) { if (mCurrentTaskId == taskId) { mRefreshLayout.setHeaderRefreshing(false); mRefreshLayout.setFooterRefreshing(false); @@ -582,7 +583,7 @@ public class ContentLayout extends FrameLayout { } public void showText(CharSequence text) { - mTextView.setText(text); + mTipView.setText(text); if (mViewTransition.showView(2)) { onHideRecyclerView(); } @@ -692,7 +693,7 @@ public class ContentLayout extends FrameLayout { /** * Check range first! * - * @param page the targe page + * @param page the target page * @throws IndexOutOfBoundsException */ public void goTo(int page) throws IndexOutOfBoundsException { @@ -737,14 +738,7 @@ public class ContentLayout extends FrameLayout { bundle.putParcelable(KEY_SUPER, superState); int shownView = mViewTransition.getShownViewIndex(); bundle.putInt(KEY_SHOWN_VIEW, shownView); - String tip; - if (shownView == 2) { - // It is progress view - tip = getContext().getResources().getString(R.string.content_layout_restore_tip); - } else { - tip = mTextView.getText().toString(); - } - bundle.putString(KEY_TIP, tip); + bundle.putString(KEY_TIP, mTipView.getText().toString()); // TODO What if data is large bundle.putParcelableArrayList(KEY_DATA, mData); bundle.putInt(KEY_NEXT_ID, mIdGenerator.nextId()); @@ -758,12 +752,8 @@ public class ContentLayout extends FrameLayout { private Parcelable restoreInstanceState(Parcelable state) { if (state instanceof Bundle) { Bundle bundle = (Bundle) state; - int shownView = bundle.getInt(KEY_SHOWN_VIEW); - if (shownView != 0) { - shownView = 2; - } - mViewTransition.showView(shownView, false); - mTextView.setText(bundle.getString(KEY_TIP)); + mViewTransition.showView(bundle.getInt(KEY_SHOWN_VIEW), false); + mTipView.setText(bundle.getString(KEY_TIP)); mData = bundle.getParcelableArrayList(KEY_DATA); mIdGenerator.setNextId(bundle.getInt(KEY_NEXT_ID)); mPageDivider = bundle.getParcelable(KEY_PAGE_DIVIDER); diff --git a/app/src/main/res/drawable/big_weird_face.xml b/app/src/main/res/drawable/big_weird_face.xml new file mode 100644 index 000000000..a53f280dd --- /dev/null +++ b/app/src/main/res/drawable/big_weird_face.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/app/src/main/res/layout/widget_content_layout.xml b/app/src/main/res/layout/widget_content_layout.xml index 14ff7ba93..3cb378d47 100644 --- a/app/src/main/res/layout/widget_content_layout.xml +++ b/app/src/main/res/layout/widget_content_layout.xml @@ -25,30 +25,14 @@ android:layout_height="wrap_content" android:layout_gravity="center"/> - - - - - - - + android:gravity="center_horizontal" + android:drawablePadding="16dp" + style="@style/TextAppearance.AppCompat.Medium"/> M20.46,14.65C21.86,16.15,20.31,18.6,18.32,17.87C19.78,17.57,20.79,16.37,20.46,14.65ZM4.32,17.87C6.32,18.6,7.86,16.17,6.46,14.65C6.79,16.38,5.78,17.55,4.32,17.87ZM16.87,4.3C16.6,3.56,15.87,3,15,3C13.7,3,12.7,4.24,13.1,5.58C14.2,5.18,15.44,4.48,16.87,4.31ZM24,16C24,18.76,21.76,21,19,21C14.96,21,14.84,16.88,12,16.88S9.04,21,5,21C2.24,21,0,18.76,0,16C0,13.87,1.53,11.43,3.94,7.18C5.84,3.81,8.69,5.92,10.76,6.58C11.54,6.85,12.41,6.88,13.24,6.58C15.3,5.92,18.14,3.81,20.06,7.18C22.46,11.43,24,13.88,24,16ZM8,16C8,14.35,6.65,13,5,13S2,14.35,2,16S3.35,19,5,19S8,17.65,8,16ZM13,14C13,13.45,12.55,13,12,13S11,13.45,11,14S11.45,15,12,15S13,14.55,13,14ZM22,16C22,14.35,20.65,13,19,13S16,14.35,16,16S17.35,19,19,19S22,17.65,22,16ZM9,3C8.14,3,7.4,3.55,7.13,4.3C8.56,4.48,9.79,5.2,10.9,5.58C11.3,4.24,10.3,3,9,3Z M5.5,2H22V0H5C3.3,0,2,1.3,2,3V21C2,22.7,3.3,24,5,24H22V4H5.5C4.1,4,4.1,2,5.5,2ZM20,6V22H6V6H20M12.5,11.8V14.4L14.9,15.8L15.3,15.2L13.3,14V11.9M13.3,9.3C11.5,9.3,10,10.3,9.2,11.7L8,10.5V13.8H11.3L9.9,12.4C10.5,11.1,11.8,10.3,13.3,10.3C15.4,10.3,17.1,12,17.1,14.1S15.4,17.9,13.3,17.9C11.7,17.9,10.3,16.9,9.8,15.4H8.7C9.3,17.4,11.1,18.9,13.3,18.9C15.9,18.9,18.1,16.8,18.1,14.1C18,11.4,15.9,9.3,13.3,9.3Z M0,19V24H24V19H0ZM16,22H15V21H16V22ZM19,22H18V21H19V22ZM22,22H21V21H22V22M15,11L15,0L9,0L9,11L5,11L12,18L19,11Z + M12.9,21.3C11.3,19.4,10.5,18.3,8.6,17.1C7.5,16.4,6.6,15.4,5.9,14.4L6.4,13.9L6.4,13.9C8.9,15.9,11.2,16.2,15.8,16.2C15.8,16.2,17,17.4,18.2,18.8C21.1,22,16.1,25,12.9,21.3ZM10.9,21.9C5.9,21.4,2,17.1,2,12C2,6.5,6.5,2,12,2S22,6.5,22,12C22,14.2,21.3,16.2,20.1,17.8C20.6,18.4,20.9,19.1,21.1,19.8C22.9,17.7,24,15,24,12C24,5.4,18.6,0,12,0S0,5.4,0,12S5.4,24,12,24C12.3,24,12.6,24,12.9,24C12,23.3,11.6,22.8,10.9,21.9M8.5,10.7L7.2,12L6,10.8L7.3,9.5L6,8.2L7.2,7L8.5,8.3L9.8,7L11,8.2L9.7,9.5L11,10.8L9.8,12C9.8,12,8.5,10.7,8.5,10.7M15.5,6C13.6,6,12,7.6,12,9.5S13.6,13,15.5,13S19,11.4,19,9.5S17.4,6,15.5,6ZM15.5,11C14.7,11,14,10.3,14,9.5S14.7,8,15.5,8S17,8.7,17,9.5S16.3,11,15.5,11Z M13,0C20.2,0,26,5.9,26,13.2,26,16.9,24,20.8,18.7,26.1L13,32,7.2,26.2C2,20.8,0,16.9,0,13.3,0,5.9,5.8,0,13,0Z