diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/AbsDragSortScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/AbsDragSortScene.java index cb8b1b845..76abae8e0 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/AbsDragSortScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/AbsDragSortScene.java @@ -34,6 +34,7 @@ import com.h6ah4i.android.widget.advrecyclerview.swipeable.SwipeableItemAdapter; import com.h6ah4i.android.widget.advrecyclerview.touchguard.RecyclerViewTouchActionGuardManager; import com.h6ah4i.android.widget.advrecyclerview.utils.AbstractDraggableSwipeableItemViewHolder; import com.h6ah4i.android.widget.advrecyclerview.utils.WrapperAdapterUtils; +import com.hippo.effect.ViewTransition; import com.hippo.ehviewer.R; import com.hippo.rippleold.RippleSalon; import com.hippo.scene.AppbarScene; @@ -46,6 +47,8 @@ import java.util.List; public abstract class AbsDragSortScene extends AppbarScene { + private ViewGroup mTip; + private TextView mTipTextView; private EasyRecyclerView mRecyclerView; private RecyclerView.LayoutManager mLayoutManager; private RecyclerView.Adapter mAdapter; @@ -54,6 +57,8 @@ public abstract class AbsDragSortScene extends AppbarScene { private RecyclerViewSwipeManager mRecyclerViewSwipeManager; private RecyclerViewTouchActionGuardManager mRecyclerViewTouchActionGuardManager; + private ViewTransition mViewTransition; + private int mOriginalPaddingBottom; @Override @@ -65,6 +70,8 @@ public abstract class AbsDragSortScene extends AppbarScene { Resources resources = getStageActivity().getResources(); + mTip = (ViewGroup) findViewById(R.id.tip); + mTipTextView = (TextView) mTip.findViewById(R.id.text_view); mRecyclerView = (EasyRecyclerView) findViewById(R.id.recycler_view); mOriginalPaddingBottom = mRecyclerView.getPaddingBottom(); @@ -118,11 +125,27 @@ public abstract class AbsDragSortScene extends AppbarScene { mRecyclerViewTouchActionGuardManager.attachRecyclerView(mRecyclerView); mRecyclerViewSwipeManager.attachRecyclerView(mRecyclerView); mRecyclerViewDragDropManager.attachRecyclerView(mRecyclerView); + + mViewTransition = new ViewTransition(mTip, mRecyclerView); + if (mWrappedAdapter.getItemCount() == 0) { + mViewTransition.showView(0, false); + } else { + mViewTransition.showView(1, false); + } + } + + public void setTipText(String text) { + mTipTextView.setText(text); } public void notifyDataSetChanged() { if (mWrappedAdapter != null) { mWrappedAdapter.notifyDataSetChanged(); + if (mWrappedAdapter.getItemCount() == 0) { + mViewTransition.showView(0, true); + } else { + mViewTransition.showView(1, true); + } } } @@ -311,6 +334,12 @@ public abstract class AbsDragSortScene extends AppbarScene { onRemove(position); mList.remove(position); notifyItemRemoved(position); + // Try to show tip + if (mWrappedAdapter.getItemCount() == 0) { + mViewTransition.showView(0, true); + } else { + mViewTransition.showView(1, true); + } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelScene.java index 5e0439f77..67cddb5f1 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadLabelScene.java @@ -49,6 +49,8 @@ public class DownloadLabelScene extends AbsDragSortScene implements AppbarScene. protected void onCreate(boolean rebirth) { super.onCreate(rebirth); + setTipText("No download label"); // TODO hardcode + addAction(R.drawable.ic_plus_dark_x24); setOnClickActionListener(this); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java index f192d3500..ffcd81aac 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadScene.java @@ -175,6 +175,7 @@ public class DownloadScene extends Scene implements DrawerProvider, mRightDrawerView.setOnItemClickListener(new DownloadTagClickListener()); mRightDrawerView.setPlusVisibility(View.GONE); mRightDrawerView.setHelper(this); + mRightDrawerView.showRecyclerView(false); } @Override 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 30d4f75a2..e4538f7c6 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 @@ -334,6 +334,12 @@ public final class GalleryListScene extends Scene implements ListSearchBar.Helpe mRightDrawerView.setAdapter(mQuickSearchAdapter); mRightDrawerView.setOnItemClickListener(new QuickSearchClickListener()); mRightDrawerView.setHelper(this); + mRightDrawerView.setTipText("No quick search"); // TODO hardcode + if (mQuickSearchAdapter.getItemCount() == 0) { + mRightDrawerView.showTip(false); + } else { + mRightDrawerView.showRecyclerView(false); + } // When scene start if (!rebirth) { @@ -932,6 +938,11 @@ public final class GalleryListScene extends Scene implements ListSearchBar.Helpe } else if (Constants.MESSENGER_ID_UPDATE_QUICK_SEARCH == id) { mQuickSearches = DBUtils.getAllQuickSearch(); mQuickSearchAdapter.notifyDataSetChanged(); + if (mQuickSearchAdapter.getItemCount() == 0) { + mRightDrawerView.showTip(false); + } else { + mRightDrawerView.showRecyclerView(false); + } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java index 9b76e846e..fe5b896c6 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/QuickSearchScene.java @@ -46,6 +46,13 @@ public class QuickSearchScene extends AbsDragSortScene implements Messenger.Rece Messenger.getInstance().unregister(Constants.MESSENGER_ID_UPDATE_QUICK_SEARCH_NAME, this); } + @Override + protected void onCreate(boolean rebirth) { + super.onCreate(rebirth); + + setTipText("No quick search"); // TODO hardcode + } + @Override protected void onDestroy(boolean die) { super.onDestroy(die); diff --git a/app/src/main/java/com/hippo/ehviewer/widget/AppbarRecyclerView.java b/app/src/main/java/com/hippo/ehviewer/widget/AppbarRecyclerView.java index 75f86d70d..d0744abac 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/AppbarRecyclerView.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/AppbarRecyclerView.java @@ -22,9 +22,11 @@ import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; +import com.hippo.effect.ViewTransition; import com.hippo.ehviewer.R; import com.hippo.rippleold.RippleSalon; import com.hippo.widget.recyclerview.EasyRecyclerView; @@ -36,8 +38,12 @@ public class AppbarRecyclerView extends LinearLayout implements View.OnClickList public TextView mTitle; public View mPlus; public View mSettings; + public ViewGroup mTip; + public TextView mTipTextView; public EasyRecyclerView mRecyclerView; + public ViewTransition mViewTransition; + public int mOriginalPaddingBottom; public Helper mHelper; @@ -64,6 +70,8 @@ public class AppbarRecyclerView extends LinearLayout implements View.OnClickList mTitle = (TextView) findViewById(R.id.title); mPlus = findViewById(R.id.plus); mSettings = findViewById(R.id.settings); + mTip = (ViewGroup) findViewById(R.id.tip); + mTipTextView = (TextView) mTip.findViewById(R.id.text_view); mRecyclerView = (EasyRecyclerView) findViewById(R.id.recycler_view); mRecyclerView.setHasFixedSize(true); @@ -85,6 +93,8 @@ public class AppbarRecyclerView extends LinearLayout implements View.OnClickList RippleSalon.addRipple(mSettings, true); mOriginalPaddingBottom = mRecyclerView.getPaddingBottom(); + + mViewTransition = new ViewTransition(mTip, mRecyclerView); } public void setHelper(Helper helper) { @@ -95,10 +105,22 @@ public class AppbarRecyclerView extends LinearLayout implements View.OnClickList mTitle.setText(title); } + public void setTipText(String tipText) { + mTipTextView.setText(tipText); + } + public void setAdapter(RecyclerView.Adapter adapter) { mRecyclerView.setAdapter(adapter); } + public void showTip(boolean animation) { + mViewTransition.showView(0, animation); + } + + public void showRecyclerView(boolean animation) { + mViewTransition.showView(1, animation); + } + public void setOnItemClickListener(EasyRecyclerView.OnItemClickListener listener) { mRecyclerView.setOnItemClickListener(listener); } diff --git a/app/src/main/res/drawable/ic_emoticon_neutral_x168.xml b/app/src/main/res/drawable/ic_emoticon_neutral_x168.xml new file mode 100644 index 000000000..b8538d5af --- /dev/null +++ b/app/src/main/res/drawable/ic_emoticon_neutral_x168.xml @@ -0,0 +1,40 @@ + + + + + + + diff --git a/app/src/main/res/layout-v21/widget_appbar_recycler_view.xml b/app/src/main/res/layout-v21/widget_appbar_recycler_view.xml index bb2dabde7..dd0c1df7f 100644 --- a/app/src/main/res/layout-v21/widget_appbar_recycler_view.xml +++ b/app/src/main/res/layout-v21/widget_appbar_recycler_view.xml @@ -62,10 +62,36 @@ android:layout_height="0dp" android:layout_weight="1"> + + + + + + + + + android:layout_height="match_parent" + android:saveEnabled="false"/> diff --git a/app/src/main/res/layout/scene_abs_drag_sort_scene.xml b/app/src/main/res/layout/scene_abs_drag_sort_scene.xml index 9f5cd5a2d..56c5eb97e 100644 --- a/app/src/main/res/layout/scene_abs_drag_sort_scene.xml +++ b/app/src/main/res/layout/scene_abs_drag_sort_scene.xml @@ -14,16 +14,47 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - + android:layout_height="match_parent"> + + + + + + + + + + + + diff --git a/app/src/main/res/layout/widget_appbar_recycler_view.xml b/app/src/main/res/layout/widget_appbar_recycler_view.xml index c5ecfba6e..3b1bfc8f4 100644 --- a/app/src/main/res/layout/widget_appbar_recycler_view.xml +++ b/app/src/main/res/layout/widget_appbar_recycler_view.xml @@ -66,6 +66,31 @@ android:layout_height="4dp" android:background="@drawable/drop_shadow"/> + + + + + + + + M19,7.1L16.9 5 12 9.9 7.1 5 5 7.1 9.9 12 5 16.9 7.1 19 12 14.1 16.9 19 19 16.9 14.1 12 z M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z + M8.5,11A1.5,1.5 0 0,1 7,9.5A1.5,1.5 0 0,1 8.5,8A1.5,1.5 0 0,1 10,9.5A1.5,1.5 0 0,1 8.5,11M15.5,11A1.5,1.5 0 0,1 14,9.5A1.5,1.5 0 0,1 15.5,8A1.5,1.5 0 0,1 17,9.5A1.5,1.5 0 0,1 15.5,11M12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22C6.47,22 2,17.5 2,12A10,10 0 0,1 12,2M9,14H15A1,1 0 0,1 16,15A1,1 0 0,1 15,16H9A1,1 0 0,1 8,15A1,1 0 0,1 9,14Z M13,0c7.2,0,13,5.9,13,13.2c0,3.7-2,7.6-7.3,12.9L13,32l-5.8-5.8C2,20.8,0,16.9,0,13.3C0,5.9,5.8,0,13,0z