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