Add guide

This commit is contained in:
seven332 committed 2016-03-16 18:10:32 +08:00
1 parent 775ccfba7f
commit 83b0d1e961
11 files changed
+285 -1

No files matched your search

@@ -635,4 +635,51 @@ public class Settings {
public static void putSaveParseErrorBody(boolean value) {
putBoolean(KEY_SAVE_PARSE_ERROR_BODY, value);
}
/********************
****** Guide
********************/
private static final String KEY_GUIDE_QUICK_SEARCH = "guide_quick_search";
private static final boolean DEFAULT_GUIDE_QUICK_SEARCH = true;
public static boolean getGuideQuickSearch() {
return getBoolean(KEY_GUIDE_QUICK_SEARCH, DEFAULT_GUIDE_QUICK_SEARCH);
}
public static void putGuideQuickSearch(boolean value) {
putBoolean(KEY_GUIDE_QUICK_SEARCH, value);
}
private static final String KEY_GUIDE_COLLECTIONS = "guide_collections";
private static final boolean DEFAULT_GUIDE_COLLECTIONS = true;
public static boolean getGuideCollections() {
return getBoolean(KEY_GUIDE_COLLECTIONS, DEFAULT_GUIDE_COLLECTIONS);
}
public static void putGuideCollections(boolean value) {
putBoolean(KEY_GUIDE_COLLECTIONS, value);
}
private static final String KEY_GUIDE_DOWNLOAD_THUMB = "guide_download_thumb";
private static final boolean DEFAULT_GUIDE_DOWNLOAD_THUMB = true;
public static boolean getGuideDownloadThumb() {
return getBoolean(KEY_GUIDE_DOWNLOAD_THUMB, DEFAULT_GUIDE_DOWNLOAD_THUMB);
}
public static void putGuideDownloadThumb(boolean value) {
putBoolean(KEY_GUIDE_DOWNLOAD_THUMB, value);
}
private static final String KEY_GUIDE_DOWNLOAD_LABELS = "guide_download_labels";
private static final boolean DEFAULT_GUIDE_DOWNLOAD_LABELS = true;
public static boolean getGuideDownloadLabels() {
return getBoolean(KEY_GUIDE_DOWNLOAD_LABELS, DEFAULT_GUIDE_DOWNLOAD_LABELS);
}
public static void puttGuideDownloadLabels(boolean value) {
putBoolean(KEY_GUIDE_DOWNLOAD_LABELS, value);
}
}
@@ -20,6 +20,7 @@ import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.AsyncTask;
import android.os.Build;
@@ -34,6 +35,7 @@ import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SimpleItemAnimator;
import android.support.v7.widget.Toolbar;
import android.util.SparseBooleanArray;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -45,6 +47,10 @@ import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.github.amlcurran.showcaseview.ShowcaseView;
import com.github.amlcurran.showcaseview.SimpleShowcaseEventListener;
import com.github.amlcurran.showcaseview.targets.PointTarget;
import com.github.amlcurran.showcaseview.targets.ViewTarget;
import com.hippo.app.CheckBoxDialogBuilder;
import com.hippo.easyrecyclerview.EasyRecyclerView;
import com.hippo.easyrecyclerview.FastScroller;
@@ -75,6 +81,7 @@ import com.hippo.yorozuya.FileUtils;
import com.hippo.yorozuya.LongList;
import com.hippo.yorozuya.ObjectUtils;
import com.hippo.yorozuya.ResourcesUtils;
import com.hippo.yorozuya.SimpleHandler;
import com.hippo.yorozuya.ViewUtils;
import java.util.ArrayList;
@@ -113,6 +120,8 @@ public class DownloadsScene extends ToolbarScene
private FabLayout mFabLayout;
@Nullable
private DownloadAdapter mAdapter;
@Nullable
private LinearLayoutManager mLayoutManager;
@Override
public int getNavCheckedItem() {
@@ -224,7 +233,8 @@ public class DownloadsScene extends ToolbarScene
mAdapter = new DownloadAdapter();
mAdapter.setHasStableIds(true);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(false));
mRecyclerView.setDrawSelectorOnTop(true);
mRecyclerView.hasFixedSize();
@@ -255,9 +265,85 @@ public class DownloadsScene extends ToolbarScene
updateView();
guide();
return view;
}
private void guide() {
if (Settings.getGuideDownloadThumb()) {
SimpleHandler.getInstance().post(new Runnable() {
@Override
public void run() {
guideDownloadThumb();
}
});
} else {
guideDownloadLabels();
}
}
private void guideDownloadThumb() {
if (!Settings.getGuideDownloadThumb() || null == mLayoutManager || null == mRecyclerView) {
guideDownloadLabels();
return;
}
int position = mLayoutManager.findFirstCompletelyVisibleItemPosition();
if (position < 0) {
guideDownloadLabels();
return;
}
RecyclerView.ViewHolder holder = mRecyclerView.findViewHolderForAdapterPosition(position);
if (null == holder) {
guideDownloadLabels();
return;
}
new ShowcaseView.Builder(getActivity())
.withMaterialShowcase()
.setStyle(R.style.Guide)
.setTarget(new ViewTarget(((DownloadHolder) holder).thumb))
.blockAllTouches()
.setContentTitle(R.string.guide_download_thumb_title)
.setContentText(R.string.guide_download_thumb_text)
.replaceEndButton(R.layout.button_guide)
.setShowcaseEventListener(new SimpleShowcaseEventListener() {
@Override
public void onShowcaseViewDidHide(ShowcaseView showcaseView) {
ViewUtils.removeFromParent(showcaseView);
Settings.putGuideDownloadThumb(false);
guideDownloadLabels();
}
}).build();
}
private void guideDownloadLabels() {
if (!Settings.getGuideDownloadLabels()) {
return;
}
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getSize(point);
new ShowcaseView.Builder(getActivity())
.withMaterialShowcase()
.setStyle(R.style.Guide)
.setTarget(new PointTarget(point.x, point.y / 3))
.blockAllTouches()
.setContentTitle(R.string.guide_download_labels_title)
.setContentText(R.string.guide_download_labels_text)
.replaceEndButton(R.layout.button_guide)
.setShowcaseEventListener(new SimpleShowcaseEventListener() {
@Override
public void onShowcaseViewDidHide(ShowcaseView showcaseView) {
ViewUtils.removeFromParent(showcaseView);
Settings.puttGuideDownloadLabels(false);
openDrawer(Gravity.RIGHT);
}
}).build();
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
@@ -273,6 +359,7 @@ public class DownloadsScene extends ToolbarScene
mFabLayout = null;
mViewTransition = null;
mAdapter = null;
mLayoutManager = null;
}
@Override
@@ -19,6 +19,7 @@ package com.hippo.ehviewer.ui.scene;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
@@ -33,6 +34,7 @@ import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ImageSpan;
import android.util.SparseBooleanArray;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -42,6 +44,9 @@ import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.github.amlcurran.showcaseview.ShowcaseView;
import com.github.amlcurran.showcaseview.SimpleShowcaseEventListener;
import com.github.amlcurran.showcaseview.targets.PointTarget;
import com.hippo.annotation.Implemented;
import com.hippo.drawable.DrawerArrowDrawable;
import com.hippo.easyrecyclerview.EasyRecyclerView;
@@ -297,9 +302,38 @@ public class FavoritesScene extends BaseScene implements
mHelper.firstRefresh();
}
guideCollections();
return view;
}
private void guideCollections() {
if (!Settings.getGuideCollections()) {
return;
}
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getSize(point);
new ShowcaseView.Builder(getActivity())
.withMaterialShowcase()
.setStyle(R.style.Guide)
.setTarget(new PointTarget(point.x, point.y / 3))
.blockAllTouches()
.setContentTitle(R.string.guide_collections_title)
.setContentText(R.string.guide_collections_text)
.replaceEndButton(R.layout.button_guide)
.setShowcaseEventListener(new SimpleShowcaseEventListener() {
@Override
public void onShowcaseViewDidHide(ShowcaseView showcaseView) {
ViewUtils.removeFromParent(showcaseView);
Settings.putGuideCollections(false);
openDrawer(Gravity.RIGHT);
}
}).build();
}
// keyword of mUrlBuilder, fav cat of mUrlBuilder, mFavCatArray.
// They changed, call it
private void updateSearchBar() {
@@ -20,6 +20,7 @@ import android.animation.Animator;
import android.content.Context;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.IntDef;
@@ -35,6 +36,7 @@ import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ImageSpan;
import android.view.Display;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MenuItem;
@@ -45,6 +47,9 @@ import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.github.amlcurran.showcaseview.ShowcaseView;
import com.github.amlcurran.showcaseview.SimpleShowcaseEventListener;
import com.github.amlcurran.showcaseview.targets.PointTarget;
import com.hippo.app.EditTextDialogBuilder;
import com.hippo.drawable.AddDeleteDrawable;
import com.hippo.drawable.DrawerArrowDrawable;
@@ -399,9 +404,38 @@ public final class GalleryListScene extends BaseScene
mHelper.firstRefresh();
}
guideQuickSearch();
return view;
}
private void guideQuickSearch() {
if (!Settings.getGuideQuickSearch()) {
return;
}
Display display = getActivity().getWindowManager().getDefaultDisplay();
Point point = new Point();
display.getSize(point);
new ShowcaseView.Builder(getActivity())
.withMaterialShowcase()
.setStyle(R.style.Guide)
.setTarget(new PointTarget(point.x, point.y / 3))
.blockAllTouches()
.setContentTitle(R.string.guide_quick_search_title)
.setContentText(R.string.guide_quick_search_text)
.replaceEndButton(R.layout.button_guide)
.setShowcaseEventListener(new SimpleShowcaseEventListener() {
@Override
public void onShowcaseViewDidHide(ShowcaseView showcaseView) {
ViewUtils.removeFromParent(showcaseView);
Settings.putGuideQuickSearch(false);
openDrawer(Gravity.RIGHT);
}
}).build();
}
@Override
public void onDestroyView() {
super.onDestroyView();