diff --git a/libs/android-support-v4.jar b/libs/android-support-v4.jar
index c31cede47..ac4181fca 100644
Binary files a/libs/android-support-v4.jar and b/libs/android-support-v4.jar differ
diff --git a/project.properties b/project.properties
index d1ee1372f..fce0b28ee 100644
--- a/project.properties
+++ b/project.properties
@@ -12,5 +12,4 @@ proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.
# Project target.
target=android-21
-android.library.reference.1=../../code/FloatingActionButton/FloatingActionButton
-android.library.reference.2=../../code/SlidingMenu/library
+android.library.reference.1=..\\..\\code\\FloatingActionButton\\FloatingActionButton
diff --git a/res/layout/add_to_favorite.xml b/res/layout/add_to_favorite.xml
index 5e5cce3a1..24e5435af 100644
--- a/res/layout/add_to_favorite.xml
+++ b/res/layout/add_to_favorite.xml
@@ -21,7 +21,7 @@
diff --git a/res/layout/comments_item.xml b/res/layout/comments_item.xml
index ec2c01e57..b4bbaadcd 100644
--- a/res/layout/comments_item.xml
+++ b/res/layout/comments_item.xml
@@ -15,7 +15,7 @@
limitations under the License.
-->
-
+
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/res/layout/exculde_language.xml b/res/layout/exculde_language.xml
index 946159eee..5b662ed73 100644
--- a/res/layout/exculde_language.xml
+++ b/res/layout/exculde_language.xml
@@ -17,12 +17,12 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/favorite_list_item.xml b/res/layout/favorite_list_item.xml
index fe9049b5c..2bd37b715 100644
--- a/res/layout/favorite_list_item.xml
+++ b/res/layout/favorite_list_item.xml
@@ -15,12 +15,12 @@
limitations under the License.
-->
diff --git a/res/layout/gallery_detail.xml b/res/layout/gallery_detail.xml
index 828977e29..a929bd544 100644
--- a/res/layout/gallery_detail.xml
+++ b/res/layout/gallery_detail.xml
@@ -16,18 +16,23 @@
-->
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+
+
@@ -36,7 +41,7 @@
@@ -67,7 +72,7 @@
@@ -151,7 +156,7 @@
@@ -160,7 +165,7 @@
@@ -207,7 +212,7 @@
@@ -215,7 +220,7 @@
@@ -281,7 +286,7 @@
@@ -299,7 +304,7 @@
@@ -329,8 +334,8 @@
diff --git a/res/layout/gallery_list.xml b/res/layout/gallery_list.xml
index 3e14836a4..dc912c427 100644
--- a/res/layout/gallery_list.xml
+++ b/res/layout/gallery_list.xml
@@ -14,26 +14,33 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
+
-
+
-
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/favorite_list.xml b/res/layout/gallery_list_listview.xml
similarity index 72%
rename from res/layout/favorite_list.xml
rename to res/layout/gallery_list_listview.xml
index 5fdf0ed78..57a72a372 100644
--- a/res/layout/favorite_list.xml
+++ b/res/layout/gallery_list_listview.xml
@@ -14,25 +14,21 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/res/layout/gallery_list_staggeredgridview.xml b/res/layout/gallery_list_staggeredgridview.xml
new file mode 100644
index 000000000..1f11f6bcc
--- /dev/null
+++ b/res/layout/gallery_list_staggeredgridview.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/gallery_list_thumb_item.xml b/res/layout/gallery_list_thumb_item.xml
index 676e70858..e2b07b217 100644
--- a/res/layout/gallery_list_thumb_item.xml
+++ b/res/layout/gallery_list_thumb_item.xml
@@ -16,19 +16,19 @@
-->
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
-
+
- 48dp
+
-
+
+
+
\ No newline at end of file
diff --git a/res/layout/history_filter.xml b/res/layout/history_filter.xml
index 7b8f30ead..1349809de 100644
--- a/res/layout/history_filter.xml
+++ b/res/layout/history_filter.xml
@@ -14,11 +14,11 @@
limitations under the License.
-->
diff --git a/res/layout/list_menu_right.xml b/res/layout/list_menu_right.xml
index 154ef119a..5e70c17fb 100644
--- a/res/layout/list_menu_right.xml
+++ b/res/layout/list_menu_right.xml
@@ -15,8 +15,10 @@
limitations under the License.
-->
+ android:id="@+id/list_menu_right"
+ android:layout_width="@dimen/menu_width"
+ android:layout_height="match_parent"
+ android:layout_gravity="right|end" >
diff --git a/res/layout/preview_list.xml b/res/layout/preview_list.xml
index 8b9c3d41c..a59ab1746 100644
--- a/res/layout/preview_list.xml
+++ b/res/layout/preview_list.xml
@@ -15,7 +15,7 @@
limitations under the License.
-->
diff --git a/res/layout/pull_list_view_footer.xml b/res/layout/pull_list_view_footer.xml
index f7313577b..93ddae51d 100644
--- a/res/layout/pull_list_view_footer.xml
+++ b/res/layout/pull_list_view_footer.xml
@@ -14,13 +14,13 @@
limitations under the License.
-->
diff --git a/res/layout/search_image.xml b/res/layout/search_image.xml
index 1532d1dd5..65a4404de 100644
--- a/res/layout/search_image.xml
+++ b/res/layout/search_image.xml
@@ -20,11 +20,11 @@
android:orientation="vertical" >
@@ -59,12 +59,12 @@
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
@@ -27,8 +27,8 @@
android:layout_margin="8.0dp" />
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
-
-
-
- 40dip
-
-
diff --git a/res/values-v21/dimens.xml b/res/values-v21/dimens.xml
deleted file mode 100644
index a0bcddfca..000000000
--- a/res/values-v21/dimens.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
-
- 56dp
-
-
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index cdd22948a..ae738c4c5 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -77,4 +77,11 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 55fe34e6f..ac0c2550b 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -15,9 +15,9 @@
-->
- 48dip
+ 56dp
- 64dip
+ 64dp
12dp
200dp
diff --git a/res/values/ids.xml b/res/values/ids.xml
index 37f3a10b1..097d0a3a8 100644
--- a/res/values/ids.xml
+++ b/res/values/ids.xml
@@ -20,5 +20,6 @@
+
\ No newline at end of file
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 36f781346..7d50cc403 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -18,22 +18,23 @@
@@ -46,30 +47,30 @@
\ No newline at end of file
diff --git a/src/com/hippo/ehviewer/ui/AbsActivity.java b/src/com/hippo/ehviewer/ui/AbsActivity.java
index d5e79a36a..b56f146fe 100644
--- a/src/com/hippo/ehviewer/ui/AbsActivity.java
+++ b/src/com/hippo/ehviewer/ui/AbsActivity.java
@@ -25,10 +25,7 @@ import com.hippo.ehviewer.cache.ImageCache;
import com.hippo.ehviewer.util.Config;
import com.hippo.ehviewer.util.Ui;
-public abstract class AbsActivity extends Activity
- implements OnOrientationChangedListener {
-
- private static final int[] padding = new int[2];
+public abstract class AbsActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -43,10 +40,6 @@ public abstract class AbsActivity extends Activity
super.onConfigurationChanged(newConfig);
Ui.updateTranslucent(this);
-
- // Set window padding
- Ui.getWindowPadding(getResources(), padding);
- onOrientationChanged(padding[0], padding[1]);
}
@Override
@@ -63,10 +56,6 @@ public abstract class AbsActivity extends Activity
if (Config.getAllowAnalyics())
EasyTracker.getInstance(this).activityStart(this);
-
- // Set window padding
- Ui.getWindowPadding(getResources(), padding);
- onOrientationChanged(padding[0], padding[1]);
}
@Override
diff --git a/src/com/hippo/ehviewer/ui/AbsPreferenceActivity.java b/src/com/hippo/ehviewer/ui/AbsPreferenceActivity.java
index a934ca20a..c92b27528 100644
--- a/src/com/hippo/ehviewer/ui/AbsPreferenceActivity.java
+++ b/src/com/hippo/ehviewer/ui/AbsPreferenceActivity.java
@@ -24,8 +24,7 @@ import com.google.analytics.tracking.android.EasyTracker;
import com.hippo.ehviewer.util.Config;
import com.hippo.ehviewer.util.Ui;
-public abstract class AbsPreferenceActivity extends PreferenceActivity
- implements OnOrientationChangedListener {
+public abstract class AbsPreferenceActivity extends PreferenceActivity {
private static final int[] padding = new int[2];
@@ -42,10 +41,6 @@ public abstract class AbsPreferenceActivity extends PreferenceActivity
super.onConfigurationChanged(newConfig);
Ui.updateTranslucent(this);
-
- // Set window padding
- Ui.getWindowPadding(getResources(), padding);
- onOrientationChanged(padding[0], padding[1]);
}
@Override
@@ -62,10 +57,6 @@ public abstract class AbsPreferenceActivity extends PreferenceActivity
if (Config.getAllowAnalyics())
EasyTracker.getInstance(this).activityStart(this);
-
- // Set window padding
- Ui.getWindowPadding(getResources(), padding);
- onOrientationChanged(padding[0], padding[1]);
}
@Override
diff --git a/src/com/hippo/ehviewer/ui/AbsSlidingActivity.java b/src/com/hippo/ehviewer/ui/AbsSlidingActivity.java
deleted file mode 100644
index 302a747ad..000000000
--- a/src/com/hippo/ehviewer/ui/AbsSlidingActivity.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2014 Hippo Seven
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.hippo.ehviewer.ui;
-
-import android.content.res.Configuration;
-import android.os.Bundle;
-
-import com.google.analytics.tracking.android.EasyTracker;
-import com.hippo.ehviewer.cache.ImageCache;
-import com.hippo.ehviewer.util.Config;
-import com.hippo.ehviewer.util.Ui;
-import com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivity;
-
-public abstract class AbsSlidingActivity extends SlidingActivity
- implements OnOrientationChangedListener {
-
- private static final int[] padding = new int[2];
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- Ui.adjustOrientation(this);
- Ui.updateTranslucent(this);
- }
-
- @Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
-
- Ui.updateTranslucent(this);
-
- // Set window padding
- Ui.getWindowPadding(getResources(), padding);
- onOrientationChanged(padding[0], padding[1]);
- }
-
- @Override
- protected void onResume() {
- super.onResume();
-
- Ui.adjustOrientation(this);
- Ui.updateTranslucent(this);
- }
-
- @Override
- public void onStart() {
- super.onStart();
-
- if (Config.getAllowAnalyics())
- EasyTracker.getInstance(this).activityStart(this);
-
- // Set window padding
- Ui.getWindowPadding(getResources(), padding);
- onOrientationChanged(padding[0], padding[1]);
- }
-
- @Override
- public void onStop() {
- super.onStop();
-
- if (Config.getAllowAnalyics())
- EasyTracker.getInstance(this).activityStop(this);
- ImageCache.getInstance(this).flush();
- }
-}
diff --git a/src/com/hippo/ehviewer/ui/DownloadActivity.java b/src/com/hippo/ehviewer/ui/DownloadActivity.java
index 2e9dd1583..71c12af01 100644
--- a/src/com/hippo/ehviewer/ui/DownloadActivity.java
+++ b/src/com/hippo/ehviewer/ui/DownloadActivity.java
@@ -26,7 +26,6 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -54,15 +53,17 @@ import com.hippo.ehviewer.util.Theme;
import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.util.Utils;
import com.hippo.ehviewer.widget.ExpandingListView;
+import com.hippo.ehviewer.widget.FitWindowView;
import com.hippo.ehviewer.widget.LoadImageView;
import com.hippo.ehviewer.windowsanimate.WindowsAnimate;
-public class DownloadActivity extends AbsActivity {
+public class DownloadActivity extends AbsActivity implements FitWindowView.OnFitSystemWindowsListener {
private WindowsAnimate mWindowsAnimate;
private int mThemeColor;
private List mDownloads;
+ private FitWindowView mStandard;
private ExpandingListView mList;
private ListAdapter mAdapter;
@@ -76,11 +77,10 @@ public class DownloadActivity extends AbsActivity {
};
@Override
- public void onOrientationChanged(int paddingTop, int paddingBottom) {
- if (mList != null) {
- mList.setPadding(mList.getPaddingLeft(), paddingTop,
- mList.getPaddingRight(), paddingBottom);
- }
+ public void onFitSystemWindows(int l, int t, int r, int b) {
+ mList.setPadding(mList.getPaddingLeft(), t, mList.getPaddingRight(), b);
+
+ Ui.translucent(this, mThemeColor, t - Ui.ACTION_BAR_HEIGHT);
}
@Override
@@ -107,17 +107,17 @@ public class DownloadActivity extends AbsActivity {
for (DownloadInfo di : mDownloads)
di.setExpanded(false);
+ mStandard = (FitWindowView) findViewById(R.id.standard);
mList = (ExpandingListView)findViewById(R.id.download);
+
+ mStandard.addOnFitSystemWindowsListener(this);
mAdapter = new ListAdapter();
mList.setAdapter(mAdapter);
mList.setSelector(new ColorDrawable(Color.TRANSPARENT));
mList.setExpandingId(R.id.buttons);
mThemeColor = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
- int actionBarColor = mThemeColor & 0x00ffffff | 0xdd000000;
- Drawable drawable = new ColorDrawable(actionBarColor);
- actionBar.setBackgroundDrawable(drawable);
- Ui.translucent(this, actionBarColor);
+ actionBar.setBackgroundDrawable(new ColorDrawable(mThemeColor));
}
@Override
diff --git a/src/com/hippo/ehviewer/ui/FavouriteActivity.java b/src/com/hippo/ehviewer/ui/FavouriteActivity.java
index 58a9d514e..1b810e6f0 100644
--- a/src/com/hippo/ehviewer/ui/FavouriteActivity.java
+++ b/src/com/hippo/ehviewer/ui/FavouriteActivity.java
@@ -34,7 +34,9 @@ import android.graphics.drawable.Drawable;
import android.graphics.drawable.ShapeDrawable;
import android.graphics.drawable.shapes.PathShape;
import android.os.Bundle;
+import android.support.v4.widget.DrawerLayout;
import android.view.ActionMode;
+import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
@@ -45,6 +47,7 @@ import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
@@ -66,15 +69,18 @@ import com.hippo.ehviewer.util.Theme;
import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.widget.ActionableToastBar;
import com.hippo.ehviewer.widget.ActionableToastBar.ActionClickedListener;
+import com.hippo.ehviewer.widget.FitWindowView;
+import com.hippo.ehviewer.widget.GalleryListView;
+import com.hippo.ehviewer.widget.GalleryListView.OnGetListListener;
import com.hippo.ehviewer.widget.LoadImageView;
import com.hippo.ehviewer.widget.MaterialToast;
import com.hippo.ehviewer.widget.PullViewGroup;
import com.hippo.ehviewer.widget.RatingView;
-import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
-public class FavouriteActivity extends AbsGalleryActivity
+public class FavouriteActivity extends AbsActivity
implements ListView.MultiChoiceModeListener,
- View.OnTouchListener {
+ View.OnTouchListener, GalleryListView.GalleryListViewHelper,
+ FitWindowView.OnFitSystemWindowsListener {
@SuppressWarnings("unused")
private static final String TAG = "FavouriteActivity";
@@ -83,14 +89,19 @@ public class FavouriteActivity extends AbsGalleryActivity
private Data mData;
private Resources mResources;
private EhClient mClient;
+ private ActionBar mActionBar;
+ private int mThemeColor;
- private RelativeLayout mMainView;
+ private DrawerLayout mDrawerLayout;
+ private ListView mMenu;
+ private FrameLayout mContentView;
+ private FitWindowView mStandard;
+ private GalleryListView mGalleryListView;
private PullViewGroup mPullViewGroup;
private ListView mList;
+
private BaseAdapter mAdapter;
- private SlidingMenu mSlidingMenu;
- private ListView mMenuList;
private ActionableToastBar mActionableToastBar;
private Set mChoiceGiSet;
@@ -117,6 +128,8 @@ public class FavouriteActivity extends AbsGalleryActivity
public void onBackPressed() {
if (mActionableToastBar.isShown())
mActionableToastBar.hide(true);
+ else if (mDrawerLayout.isDrawerOpen(mMenu))
+ mDrawerLayout.closeDrawer(mMenu);
else
super.onBackPressed();
}
@@ -125,57 +138,50 @@ public class FavouriteActivity extends AbsGalleryActivity
mPullViewGroup.setEnabledHeader(false);
mPullViewGroup.setEnabledFooter(false);
setTitle(Favorite.FAVORITE_TITLES[mMenuIndex]);
- refresh();
+ mGalleryListView.refresh();
}
private void initFavorite() {
mPullViewGroup.setEnabledHeader(true);
mPullViewGroup.setEnabledFooter(true);
setTitle(Favorite.FAVORITE_TITLES[mMenuIndex]);
- refresh();
- }
-
- @Override
- protected int getLayoutRes() {
- return R.layout.favorite_list;
+ mGalleryListView.refresh();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(R.layout.favorite);
- mContext = getApplication();
mData = Data.getInstance();
mResources =getResources();
mClient = EhClient.getInstance();
- final ActionBar actionBar = getActionBar();
- getActionBar().setDisplayHomeAsUpEnabled(true);
+ mActionBar = getActionBar();
+ mActionBar.setDisplayHomeAsUpEnabled(true);
// Download service
Intent it = new Intent(FavouriteActivity.this, DownloadService.class);
bindService(it, mServiceConn, BIND_AUTO_CREATE);
- setBehindContentView(R.layout.favorite_menu);
- setSlidingActionBarEnabled(false);
- mSlidingMenu = getSlidingMenu();
- mSlidingMenu.setMode(SlidingMenu.RIGHT);
- mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
- mSlidingMenu.setBehindWidth(
- mResources.getDimensionPixelOffset(R.dimen.menu_width));
- mSlidingMenu.setShadowDrawable(R.drawable.shadow_right);
- mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
-
// Get View
- mMainView = getMainView();
- mPullViewGroup = getPullViewGroup();
- mList = (ListView)getContentView();
- mMenuList = (ListView)findViewById(R.id.favorite_menu_list);
+
+ mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
+ mMenu = (ListView) mDrawerLayout.findViewById(R.id.favorite_menu_list);
+ mContentView = (FrameLayout) mDrawerLayout.findViewById(R.id.content);
+ mStandard = (FitWindowView) mDrawerLayout.findViewById(R.id.standard);
+ mGalleryListView = (GalleryListView) mDrawerLayout.findViewById(R.id.gallery_list);
+ mPullViewGroup = mGalleryListView.getPullViewGroup();
+ mList = (ListView) mGalleryListView.getContentView();
mActionableToastBar = new ActionableToastBar(this);
mActionableToastBar.setBackgroundColor(mResources.getColor(android.R.color.holo_purple));
- mMainView.addView(mActionableToastBar);
- mMainView.setOnTouchListener(this);
+ mContentView.addView(mActionableToastBar);
+ mContentView.setOnTouchListener(this);
+
+ mGalleryListView.setGalleryListViewHelper(this);
+ mStandard.addOnFitSystemWindowsListener(this);
+ mPullViewGroup.setAgainstToChildPadding(true);
mChoiceGiSet = new LinkedHashSet();
mChoiceGiSetCopy = new LinkedHashSet();
@@ -188,18 +194,18 @@ public class FavouriteActivity extends AbsGalleryActivity
int position, long arg3) {
Intent intent = new Intent(FavouriteActivity.this,
GalleryDetailActivity.class);
- GalleryInfo gi = getGalleryInfo(position);
+ GalleryInfo gi = mGalleryListView.getGalleryInfo(position);
intent.putExtra(GalleryDetailActivity.KEY_G_INFO, gi);
startActivity(intent);
}
});
mList.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
mList.setMultiChoiceModeListener(this);
- mAdapter = new ListAdapter(this, getGalleryList());
+ mAdapter = new ListAdapter(this, mGalleryListView.getGalleryList());
mList.setAdapter(mAdapter);
- mMenuList.setClipToPadding(false);
- mMenuList.setAdapter(new BaseAdapter() {
+ mMenu.setClipToPadding(false);
+ mMenu.setAdapter(new BaseAdapter() {
private ShapeDrawable d;
private ShapeDrawable createDrawable() {
Path path = new Path();
@@ -245,11 +251,11 @@ public class FavouriteActivity extends AbsGalleryActivity
return convertView;
}
});
- mMenuList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+ mMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
- showContent();
+ mDrawerLayout.closeDrawers();
// If same index, do nothing
if (mMenuIndex == position)
return;
@@ -264,12 +270,9 @@ public class FavouriteActivity extends AbsGalleryActivity
});
// Set random color
- int color = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
- color = color & 0x00ffffff | 0xdd000000;
- Drawable drawable = new ColorDrawable(color);
- actionBar.setBackgroundDrawable(drawable);
- Ui.translucent(this, color);
- mMenuList.setBackgroundColor(color);
+ mThemeColor = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
+ mActionBar.setBackgroundDrawable(new ColorDrawable(mThemeColor));
+ mMenu.setBackgroundColor(mThemeColor);
// Check login
if (!mClient.isLogin()) {
@@ -282,22 +285,21 @@ public class FavouriteActivity extends AbsGalleryActivity
}
@Override
- public void onOrientationChanged(int paddingTop, int paddingBottom) {
+ public void onFitSystemWindows(int l, int t, int r, int b) {
int magicSpacing = Ui.dp2pix(20);
- RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
+ FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, Ui.dp2pix(60));
- lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
+ lp.gravity = Gravity.BOTTOM;
// Make sure actionable is above navigation bar
- lp.bottomMargin = paddingBottom + magicSpacing;
+ lp.bottomMargin = b + magicSpacing;
lp.leftMargin = magicSpacing;
lp.rightMargin = magicSpacing;
mActionableToastBar.setLayoutParams(lp);
+ mList.setPadding(mList.getPaddingLeft(), t, mList.getPaddingRight(), b);
+ ((DrawerLayout.LayoutParams) mMenu.getLayoutParams()).topMargin = t;
+ mMenu.setPadding(mMenu.getPaddingLeft(), mMenu.getPaddingTop(), mMenu.getPaddingRight(), b);
- mMenuList.setPadding(mMenuList.getPaddingLeft(), paddingTop,
- mMenuList.getPaddingRight(), paddingBottom);
-
- mList.setPadding(mList.getPaddingLeft(), paddingTop,
- mList.getPaddingRight(), paddingBottom);
+ Ui.translucent(this, mThemeColor, t - Ui.ACTION_BAR_HEIGHT);
}
@Override
@@ -314,7 +316,10 @@ public class FavouriteActivity extends AbsGalleryActivity
finish();
return true;
case R.id.action_list:
- toggle();
+ if (mDrawerLayout.isDrawerOpen(mMenu))
+ mDrawerLayout.closeDrawer(mMenu);
+ else
+ mDrawerLayout.openDrawer(mMenu);
return true;
default:
return super.onOptionsItemSelected(item);
@@ -396,7 +401,7 @@ public class FavouriteActivity extends AbsGalleryActivity
// remove from set iterator, favorite data
mSetIter.remove();
mData.deleteLocalFavourite(mTargetGi.gid);
- getGalleryList().remove(mTargetGi);
+ mGalleryListView.getGalleryList().remove(mTargetGi);
mAdapter.notifyDataSetChanged();
// set mGiLocal2Cloud null for above
mTargetGi = null;
@@ -418,8 +423,8 @@ public class FavouriteActivity extends AbsGalleryActivity
}
});
} else {
- if (getGalleryList().size() == 0)
- onlyShowNone();
+ if (mGalleryListView.getGalleryList().size() == 0)
+ mGalleryListView.onlyShowNone();
mSetIter = null;
mProgressDialog.dismiss();
mProgressDialog = null;
@@ -480,7 +485,7 @@ public class FavouriteActivity extends AbsGalleryActivity
if (mMenuIndex == 0) {
for (GalleryInfo gi : mChoiceGiSet)
mData.deleteLocalFavourite(gi.gid);
- refresh();
+ mGalleryListView.refresh();
} else {
mTargetCat = -1;
mClient.modifyFavorite(getGids(mChoiceGiSet), mTargetCat,
@@ -509,13 +514,13 @@ public class FavouriteActivity extends AbsGalleryActivity
public void onItemCheckedStateChanged(ActionMode mode, int position,
long id, boolean checked) {
if (checked)
- mChoiceGiSet.add(getGalleryInfo(position));
+ mChoiceGiSet.add(mGalleryListView.getGalleryInfo(position));
else
- mChoiceGiSet.remove(getGalleryInfo(position));
+ mChoiceGiSet.remove(mGalleryListView.getGalleryInfo(position));
}
@Override
- protected String getTargetUrl(int targetPage) {
+ public String getTargetUrl(int targetPage) {
if (mMenuIndex == 0)
return LOCAL_FAVORITE_URL;
else
@@ -523,7 +528,7 @@ public class FavouriteActivity extends AbsGalleryActivity
}
@Override
- protected void doGetGallerys(String url, final long taskStamp,
+ public void doGetGallerys(String url, final long taskStamp,
final OnGetListListener listener) {
// If get local favorite
if (mLastModifyGiList != null) {
@@ -566,7 +571,7 @@ public class FavouriteActivity extends AbsGalleryActivity
public void onSuccess(List gis, int pageNum) {
mLastModifyGiList = gis;
mLastModifyPageNum = pageNum;
- refresh();
+ mGalleryListView.refresh();
MaterialToast.showToast(mSuccStr);
// add to local
diff --git a/src/com/hippo/ehviewer/ui/GalleryDetailActivity.java b/src/com/hippo/ehviewer/ui/GalleryDetailActivity.java
index f94316eed..2f3e9094b 100644
--- a/src/com/hippo/ehviewer/ui/GalleryDetailActivity.java
+++ b/src/com/hippo/ehviewer/ui/GalleryDetailActivity.java
@@ -86,6 +86,7 @@ import com.hippo.ehviewer.util.Theme;
import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.util.ViewUtils;
import com.hippo.ehviewer.widget.AutoWrapLayout;
+import com.hippo.ehviewer.widget.FitWindowView;
import com.hippo.ehviewer.widget.LinkifyTextView;
import com.hippo.ehviewer.widget.LoadImageView;
import com.hippo.ehviewer.widget.MaterialProgress;
@@ -103,7 +104,8 @@ public class GalleryDetailActivity extends AbsActivity
View.OnTouchListener , ViewSwitcher.ViewFactory,
ProgressiveRatingBar.OnUserRateListener, PreviewList.PreviewHolder,
View.OnLayoutChangeListener, AdapterView.OnItemClickListener,
- AdapterView.OnItemLongClickListener, RefreshTextView.OnRefreshListener {
+ AdapterView.OnItemLongClickListener, RefreshTextView.OnRefreshListener,
+ FitWindowView.OnFitSystemWindowsListener {
@SuppressWarnings("unused")
private static final String TAG = GalleryDetailActivity.class.getSimpleName();
@@ -121,6 +123,7 @@ public class GalleryDetailActivity extends AbsActivity
private boolean isCheckmark = false;
private boolean isSetDrawable = false;
+ private FitWindowView mStandard;
private RefreshTextView mRefreshText;
private LoadImageView mThumb;
private TextView mTitle;
@@ -290,6 +293,8 @@ public class GalleryDetailActivity extends AbsActivity
actionBar.setDisplayHomeAsUpEnabled(true);
// Get view
+ mStandard = (FitWindowView) findViewById(R.id.standard);
+
mDetailScroll = (ResponedScrollView)findViewById(R.id.detail_scroll);
mMoreDetailScroll = (ScrollView)findViewById(R.id.more_detail_scroll);
mMoreComment = findViewById(R.id.more_comment);
@@ -362,10 +367,7 @@ public class GalleryDetailActivity extends AbsActivity
// Set random color
mThemeColor = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
- int actionBarColor = mThemeColor & 0x00ffffff | 0xdd000000;
- Drawable drawable = new ColorDrawable(actionBarColor);
- actionBar.setBackgroundDrawable(drawable);
- Ui.translucent(this, actionBarColor);
+ actionBar.setBackgroundDrawable(new ColorDrawable(mThemeColor));
mDownloadButton.setRoundBackground(true, false, mResources.getColor(R.color.background_light), mThemeColor);
mDownloadButton.setTextColor(mThemeColor);
mReadButton.setRoundBackground(true, mThemeColor, 0);
@@ -390,6 +392,7 @@ public class GalleryDetailActivity extends AbsActivity
mWindowsAnimate.addRippleEffect(mPreviewFront, true);
// Set listener
+ mStandard.addOnFitSystemWindowsListener(this);
mDownloadButton.setOnClickListener(this);
mReadButton.setOnClickListener(this);
mCategory.setOnClickListener(this);
@@ -985,14 +988,16 @@ public class GalleryDetailActivity extends AbsActivity
}
@Override
- public void onOrientationChanged(int paddingTop, int paddingBottom) {
- mDetailScroll.setPadding(mDetailScroll.getPaddingLeft(), paddingTop,
- mDetailScroll.getPaddingRight(), paddingBottom);
- mMoreDetailScroll.setPadding(mMoreDetailScroll.getPaddingLeft(), paddingTop,
- mMoreDetailScroll.getPaddingRight(), paddingBottom);
- mCommentList.setPadding(mCommentList.getPaddingLeft(), paddingTop,
- mCommentList.getPaddingRight(), paddingBottom + Ui.dp2pix(16 + 56 + 16));
- ((FrameLayout.LayoutParams)mReply.getLayoutParams()).bottomMargin = Ui.dp2pix(16) + paddingBottom;
+ public void onFitSystemWindows(int l, int t, int r, int b) {
+ mDetailScroll.setPadding(mDetailScroll.getPaddingLeft(), t,
+ mDetailScroll.getPaddingRight(), b);
+ mMoreDetailScroll.setPadding(mMoreDetailScroll.getPaddingLeft(), t,
+ mMoreDetailScroll.getPaddingRight(), b);
+ mCommentList.setPadding(mCommentList.getPaddingLeft(), t,
+ mCommentList.getPaddingRight(), b + Ui.dp2pix(16 + 56 + 16));
+ ((FrameLayout.LayoutParams)mReply.getLayoutParams()).bottomMargin = Ui.dp2pix(16) + b;
+
+ Ui.translucent(this, mThemeColor, t - Ui.ACTION_BAR_HEIGHT);
}
@Override
diff --git a/src/com/hippo/ehviewer/ui/GalleryListActivity.java b/src/com/hippo/ehviewer/ui/GalleryListActivity.java
index b97f5ec1a..f894bfb83 100644
--- a/src/com/hippo/ehviewer/ui/GalleryListActivity.java
+++ b/src/com/hippo/ehviewer/ui/GalleryListActivity.java
@@ -41,6 +41,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Message;
import android.provider.MediaStore;
+import android.support.v4.widget.DrawerLayout;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ImageSpan;
@@ -91,6 +92,9 @@ import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.util.Utils;
import com.hippo.ehviewer.util.ViewUtils;
import com.hippo.ehviewer.widget.CategoryTable;
+import com.hippo.ehviewer.widget.FitWindowView;
+import com.hippo.ehviewer.widget.GalleryListView;
+import com.hippo.ehviewer.widget.GalleryListView.OnGetListListener;
import com.hippo.ehviewer.widget.LoadImageView;
import com.hippo.ehviewer.widget.MaterialToast;
import com.hippo.ehviewer.widget.RatingView;
@@ -99,7 +103,6 @@ import com.hippo.ehviewer.widget.SuggestionTextView;
import com.hippo.ehviewer.widget.TagListView;
import com.hippo.ehviewer.widget.TagsAdapter;
import com.hippo.ehviewer.windowsanimate.WindowsAnimate;
-import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
/*
*
@@ -124,9 +127,10 @@ import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
*
* @author Hippo
*/
-public class GalleryListActivity extends AbsGalleryActivity implements View.OnClickListener,
- SearchView.OnQueryTextListener, SearchView.OnFocusChangeListener, SlidingMenu.OnOpenedListener,
- SlidingMenu.OnClosedListener, EhClient.OnLoginListener {
+public class GalleryListActivity extends AbsActivity implements View.OnClickListener,
+ SearchView.OnQueryTextListener, SearchView.OnFocusChangeListener,
+ DrawerLayout.DrawerListener, EhClient.OnLoginListener,
+ GalleryListView.GalleryListViewHelper, FitWindowView.OnFitSystemWindowsListener {
@SuppressWarnings("unused")
private static final String TAG = GalleryListActivity.class.getSimpleName();
@@ -149,26 +153,34 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
private Resources mResources;
private WindowsAnimate mWindowsAnimate;
private SuggestionHelper mSuggestions;
+ private ActionBar mActionBar;
+ private int mThemeColor;
+
+ private DrawerLayout mDrawerLayout;
+ private View mLeftMenu;
+ private View mRightMenu;
+ private FitWindowView mStandard;
+ private GalleryListView mGalleryListView;
+
+ private StaggeredGridView mStaggeredGridView;
- private SlidingMenu mSlidingMenu;
- private View mMenuLeft;
private LinearLayout mUserPanel;
- private ListView itemListMenu;
- private TagListView tagListMenu;
+ private ListView mMenuList;
+ private ImageView mAvatar;
+ private TextView mUsernameView;
+ private Button mLoginButton;
+ private Button mRegisterButton;
+ private Button mLogoutButton;
+ private View mWaitLogView;
+
+ private TagListView mQuickSearchList;
+ private View mQuickSearchTip;
+
+ private TextView mSearchImageText;
private SearchView mSearchView;
private MenuItem mSearchItem;
- private ImageView avatar;
- private TextView userView;
- private Button loginButton;
- private Button registerButton;
- private Button logoutButton;
- private View waitloginoutView;
- private View mQuickSearchTip;
- private TextView mSearchImageText;
-
- private StaggeredGridView mStaggeredGridView;
private BaseAdapter mAdapter;
private TagsAdapter tagsAdapter;
@@ -396,8 +408,8 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
return true;
lus = listUrls;
- refresh();
- showContent();
+ mGalleryListView.refresh();
+ mDrawerLayout.closeDrawers();
// Get title
String search = lus.getSearch();
@@ -541,7 +553,7 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
.setItems(R.array.list_item_long_click, new MaterialAlertDialog.OnClickListener() {
@Override
public boolean onClick(MaterialAlertDialog dialog, int position) {
- final GalleryInfo gi = getGalleryInfo(longClickItemIndex);
+ final GalleryInfo gi = mGalleryListView.getGalleryInfo(longClickItemIndex);
switch (position) {
case 0: // Add favourite item
Favorite.addToFavorite(GalleryListActivity.this, gi);
@@ -564,8 +576,9 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
View view = inflater.inflate(R.layout.jump, null);
TextView tv = (TextView) view.findViewById(R.id.list_jump_sum);
// For lofi, can not get page num, so use Integer.MAX_VALUE
- tv.setText(String.format(getString(R.string.jump_summary), getCurPage() + 1,
- getPageNum() == Integer.MAX_VALUE ? getString(R.string._unknown) : String.valueOf(getPageNum())));
+ tv.setText(String.format(getString(R.string.jump_summary), mGalleryListView.getCurPage() + 1,
+ mGalleryListView.getPageNum() == Integer.MAX_VALUE ? getString(R.string._unknown) :
+ String.valueOf(mGalleryListView.getPageNum())));
tv = (TextView) view.findViewById(R.id.list_jump_to);
tv.setText(R.string.jump_to);
final EditText et = (EditText) view.findViewById(R.id.list_jump_edit);
@@ -579,13 +592,13 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
int targetPage;
try {
targetPage = Integer.parseInt(et.getText().toString()) - 1;
- if (targetPage < 0 || targetPage >= getPageNum())
+ if (targetPage < 0 || targetPage >= mGalleryListView.getPageNum())
throw new Exception();
} catch (Exception e) {
MaterialToast.showToast(R.string.toast_invalid_page);
return false;
}
- jumpTo(targetPage);
+ mGalleryListView.jumpTo(targetPage);
return true;
} else {
return true;
@@ -642,6 +655,7 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
}).create();
}
+ @SuppressLint("InflateParams")
private AlertDialog createModifyTagDialog(final int position) {
LayoutInflater inflater = this.getLayoutInflater();
final View view = inflater.inflate(R.layout.search, null);
@@ -811,8 +825,6 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
- if (mShowDrawer)
- mSlidingMenu.setBehindWidth(mResources.getDimensionPixelOffset(R.dimen.menu_width));
}
/**
@@ -876,47 +888,64 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
protected void onNewIntent(Intent intent) {
setIntent(intent);
handleIntent(intent);
- refresh();
+ mGalleryListView.refresh();
}
@Override
public void onClick(View v) {
- if (v == loginButton) {
+ if (v == mLoginButton) {
loginDialog.show();
- } else if (v == registerButton) {
+ } else if (v == mRegisterButton) {
toRegister();
- } else if (v == logoutButton) {
+ } else if (v == mLogoutButton) {
mClient.logout();
setUserPanel();
}
}
@Override
- protected int getLayoutRes() {
- return R.layout.gallery_list;
+ public void onDrawerClosed(View view) {
+ setTitle(mTitle);
+ invalidateOptionsMenu();
}
@Override
- public void onOpened() {
- if (mShowDrawer) {
- if (!mSlidingMenu.isSecondaryMenuShowing())
- setTitle(R.string.app_name);
- invalidateOptionsMenu();
- }
+ public void onDrawerOpened(View view) {
+ if (view == mLeftMenu)
+ setTitle(R.string.app_name);
+ invalidateOptionsMenu();
}
@Override
- public void onClosed() {
- if (mShowDrawer) {
- setTitle(mTitle);
- invalidateOptionsMenu();
- }
+ public void onDrawerSlide(View view, float f) {
+ // Empty
}
@Override
+ public void onDrawerStateChanged(int i) {
+ // Empty
+ }
+
+ @Override
+ public void onFitSystemWindows(int l, int t, int r, int b) {
+ mStaggeredGridView.setPadding(mStaggeredGridView.getPaddingLeft(), t,
+ mStaggeredGridView.getPaddingRight(), b);
+ ((DrawerLayout.LayoutParams) mLeftMenu.getLayoutParams()).topMargin = t;
+ ((DrawerLayout.LayoutParams) mRightMenu.getLayoutParams()).topMargin = t;
+ mMenuList.setPadding(mMenuList.getPaddingLeft(), mMenuList.getPaddingTop(),
+ mMenuList.getPaddingRight(), b);
+ mQuickSearchList.setPadding(mQuickSearchList.getPaddingLeft(), mQuickSearchList.getPaddingTop(),
+ mQuickSearchList.getPaddingRight(), b);
+
+ Ui.translucent(this, mThemeColor, t - Ui.ACTION_BAR_HEIGHT);
+ }
+
+ @Override
+ @SuppressLint("InflateParams")
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(R.layout.gallery_list);
mData = Data.getInstance();
mClient = EhClient.getInstance();
@@ -944,23 +973,6 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
else
mShowDrawer = true;
- setBehindContentView(R.layout.list_menu_left);
- setSlidingActionBarEnabled(false);
- mSlidingMenu = getSlidingMenu();
- mSlidingMenu.setSecondaryMenu(R.layout.list_menu_right);
- mSlidingMenu.setMode(SlidingMenu.LEFT_RIGHT);
- mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
- mSlidingMenu.setShadowWidthRes(R.dimen.shadow_width);
- mSlidingMenu.setShadowDrawable(R.drawable.shadow);
- mSlidingMenu.setSecondaryShadowDrawable(R.drawable.shadow_right);
- mSlidingMenu.setOnOpenedListener(this);
- mSlidingMenu.setOnClosedListener(this);
- if (mShowDrawer) {
- mSlidingMenu.setBehindWidth(mResources.getDimensionPixelOffset(R.dimen.menu_width));
- } else {
- mSlidingMenu.setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
- }
-
// Download service
Intent it = new Intent(GalleryListActivity.this, DownloadService.class);
bindService(it, mServiceConn, BIND_AUTO_CREATE);
@@ -971,32 +983,48 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
longClickDialog = createLongClickDialog();
// Get View
- mMenuLeft = findViewById(R.id.list_menu_left);
- mUserPanel = (LinearLayout) findViewById(R.id.user_panel);
- itemListMenu = (ListView) findViewById(R.id.list_menu_item_list);
- tagListMenu = (TagListView) findViewById(R.id.list_menu_tag_list);
- avatar = (ImageView) mUserPanel.findViewById(R.id.avatar);
- userView = (TextView) mUserPanel.findViewById(R.id.user);
- loginButton = (Button) mUserPanel.findViewById(R.id.login);
- registerButton = (Button) mUserPanel.findViewById(R.id.register);
- logoutButton = (Button) mUserPanel.findViewById(R.id.logout);
- waitloginoutView = mUserPanel.findViewById(R.id.wait);
- mQuickSearchTip = findViewById(R.id.tip_text);
- mStaggeredGridView = (StaggeredGridView) getContentView();
+ mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
- loginButton.setOnClickListener(this);
- registerButton.setOnClickListener(this);
- logoutButton.setOnClickListener(this);
- setNoneText(mResources.getString(R.string.no_found));
+ mLeftMenu = mDrawerLayout.findViewById(R.id.list_menu_left);
+ mRightMenu = mDrawerLayout.findViewById(R.id.list_menu_right);
+ mStandard = (FitWindowView) mDrawerLayout.findViewById(R.id.standard);
+ mGalleryListView = (GalleryListView) mDrawerLayout.findViewById(R.id.gallery_list);
+
+ mStaggeredGridView = (StaggeredGridView) mGalleryListView.getContentView();
+
+ mUserPanel = (LinearLayout) mLeftMenu.findViewById(R.id.user_panel);
+ mMenuList = (ListView) mLeftMenu.findViewById(R.id.list_menu_item_list);
+ mAvatar = (ImageView) mUserPanel.findViewById(R.id.avatar);
+ mUsernameView = (TextView) mUserPanel.findViewById(R.id.user);
+ mLoginButton = (Button) mUserPanel.findViewById(R.id.login);
+ mRegisterButton = (Button) mUserPanel.findViewById(R.id.register);
+ mLogoutButton = (Button) mUserPanel.findViewById(R.id.logout);
+ mWaitLogView = mUserPanel.findViewById(R.id.wait);
+
+ mQuickSearchList = (TagListView) mRightMenu.findViewById(R.id.list_menu_tag_list);
+ mQuickSearchTip = mRightMenu.findViewById(R.id.tip_text);
+
+
+ mLoginButton.setOnClickListener(this);
+ mRegisterButton.setOnClickListener(this);
+ mLogoutButton.setOnClickListener(this);
// Drawer
- ActionBar actionBar = getActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
+ mActionBar = getActionBar();
+ mActionBar.setDisplayHomeAsUpEnabled(true);
if (mShowDrawer && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2)
- actionBar.setHomeAsUpIndicator(mResources.getDrawable(R.drawable.ic_navigation_drawer));
+ mActionBar.setHomeAsUpIndicator(mResources.getDrawable(R.drawable.ic_navigation_drawer));
+ mDrawerLayout.setDrawerListener(this);
+ if (!mShowDrawer)
+ mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mLeftMenu);
+
+ // Content
+ mGalleryListView.setGalleryListViewHelper(this);
+ mStandard.addOnFitSystemWindowsListener(this);
+ mGalleryListView.getPullViewGroup().setAgainstToChildPadding(true);
// leftDrawer
- final int[] data = {
+ final int[] menuListData = {
R.drawable.ic_action_home, R.string.homepage,
R.drawable.ic_action_panda, R.string.mode,
R.drawable.ic_action_search, android.R.string.search_go,
@@ -1006,17 +1034,17 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
R.drawable.ic_setting_download, R.string.download,
R.drawable.ic_action_settings, R.string.action_settings};
- itemListMenu.setSelector(new ColorDrawable(Color.TRANSPARENT));
- itemListMenu.setClipToPadding(false);
- itemListMenu.setAdapter(new BaseAdapter() {
+ mMenuList.setSelector(new ColorDrawable(Color.TRANSPARENT));
+ mMenuList.setClipToPadding(false);
+ mMenuList.setAdapter(new BaseAdapter() {
@Override
public int getCount() {
- return data.length / 2;
+ return menuListData.length / 2;
}
@Override
public Object getItem(int position) {
- return new int[] { data[position * 2], data[position * 2 + 1] };
+ return new int[] { menuListData[position * 2], menuListData[position * 2 + 1] };
}
@Override
@@ -1033,23 +1061,23 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
} else {
tv = (TextView) convertView;
}
- Drawable d = mResources.getDrawable(data[position * 2]);
+ Drawable d = mResources.getDrawable(menuListData[position * 2]);
d.setBounds(0, 0, Ui.dp2pix(36), Ui.dp2pix(36));
tv.setCompoundDrawables(d, null, null, null);
tv.setCompoundDrawablePadding(Ui.dp2pix(8));
- tv.setText(data[position * 2 + 1]);
+ tv.setText(menuListData[position * 2 + 1]);
return tv;
}
});
- itemListMenu.setOnItemClickListener(new OnItemClickListener() {
+ mMenuList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view, int position, long id) {
Intent intent;
switch (position) {
case 0: // Home page
lus = new ListUrls(ListUrls.NONE, null, 0);
- refresh();
- showContent();
+ mGalleryListView.refresh();
+ mDrawerLayout.closeDrawers();
mTitle = mResources.getString(R.string.homepage);
setTitle(mTitle);
break;
@@ -1072,8 +1100,8 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
lus.setMode(ListUrls.MODE_POPULAR);
mTitle = mResources.getString(R.string.popular);
setTitle(mTitle);
- refresh();
- showContent();
+ mGalleryListView.refresh();
+ mDrawerLayout.closeDrawers();
break;
case 5: // HistoryActivity
@@ -1112,26 +1140,26 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
mQuickSearchTip.setVisibility(View.VISIBLE);
else
mQuickSearchTip.setVisibility(View.GONE);
- tagListMenu.setClipToPadding(false);
- tagListMenu.setAdapter(tagsAdapter);
- tagListMenu.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
- tagListMenu.setOnItemClickListener(new OnItemClickListener() {
+ mQuickSearchList.setClipToPadding(false);
+ mQuickSearchList.setAdapter(tagsAdapter);
+ mQuickSearchList.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
+ mQuickSearchList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View arg1, int position, long arg3) {
lus = mData.getTag(position);
- refresh();
- showContent();
+ mGalleryListView.refresh();
+ mDrawerLayout.closeDrawers();
mTitle = listMenuTag.get(position);
setTitle(mTitle);
}
});
- tagListMenu.setOnModifyListener(new TagListView.OnModifyListener() {
+ mQuickSearchList.setOnModifyListener(new TagListView.OnModifyListener() {
@Override
public void onModify(int position) {
createModifyTagDialog(position).show();
}
});
- tagListMenu.setOnSwapListener(new TagListView.OnSwapListener() {
+ mQuickSearchList.setOnSwapListener(new TagListView.OnSwapListener() {
@Override
public void onSwap(int positionOne, int positionTwo) {
String temp = listMenuTag.get(positionOne);
@@ -1141,7 +1169,7 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
tagsAdapter.notifyDataSetChanged();
}
});
- tagListMenu.setOnDeleteListener(new TagListView.OnDeleteListener() {
+ mQuickSearchList.setOnDeleteListener(new TagListView.OnDeleteListener() {
@Override
public void onDelete(int position) {
String removeItem = listMenuTag.remove(position);
@@ -1152,13 +1180,13 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
});
// Listview
- mAdapter = new ListAdapter(this, getGalleryList());
+ mAdapter = new ListAdapter(this, mGalleryListView.getGalleryList());
mStaggeredGridView.setAdapter(mAdapter);
mStaggeredGridView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> arg0, View arg1, int position, long arg3) {
Intent intent = new Intent(GalleryListActivity.this, GalleryDetailActivity.class);
- GalleryInfo gi = getGalleryInfo(position);
+ GalleryInfo gi = mGalleryListView.getGalleryInfo(position);
intent.putExtra(GalleryDetailActivity.KEY_G_INFO, gi);
startActivity(intent);
}
@@ -1173,14 +1201,11 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
});
// Set random color
- int color = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
- color = color & 0x00ffffff | 0xdd000000;
- Drawable drawable = new ColorDrawable(color);
- actionBar = getActionBar();
- actionBar.setBackgroundDrawable(drawable);
- Ui.translucent(this, color);
- mMenuLeft.setBackgroundColor(color);
- tagListMenu.setBackgroundColor(color);
+ mThemeColor = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
+ mActionBar.setBackgroundDrawable(new ColorDrawable(mThemeColor));
+
+ mLeftMenu.setBackgroundColor(mThemeColor);
+ mRightMenu.setBackgroundColor(mThemeColor);
// Update user panel
setUserPanel();
@@ -1190,7 +1215,7 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
updateGridView();
// get MangeList
- firstTimeRefresh();
+ mGalleryListView.firstTimeRefresh();
// If not show drawer, just return
if (!mShowDrawer) {
@@ -1209,7 +1234,7 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
Message m = Message.obtain(null, new Runnable() {
@Override
public void run() {
- showMenu();
+ mDrawerLayout.openDrawer(mLeftMenu);
}
});
AppHandler.getInstance().sendMessageDelayed(m, 500L);
@@ -1239,17 +1264,6 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
}
}
- @Override
- public void onOrientationChanged(int paddingTop, int paddingBottom) {
- mUserPanel.setPadding(mUserPanel.getPaddingLeft(), paddingTop, mUserPanel.getPaddingRight(),
- mUserPanel.getPaddingBottom());
- itemListMenu.setPadding(itemListMenu.getPaddingLeft(), itemListMenu.getPaddingTop(),
- itemListMenu.getPaddingRight(), paddingBottom);
- tagListMenu.setPadding(tagListMenu.getPaddingLeft(), paddingTop, tagListMenu.getPaddingRight(), paddingBottom);
- mStaggeredGridView.setPadding(mStaggeredGridView.getPaddingLeft(), paddingTop,
- mStaggeredGridView.getPaddingRight(), paddingBottom);
- }
-
@Override
public boolean onQueryTextSubmit(String query) {
// Store suggestion
@@ -1265,7 +1279,7 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
t = query;
lus = new ListUrls(ListUrls.NONE, query);
- refresh();
+ mGalleryListView.refresh();
mTitle = t;
setTitle(mTitle);
return true;
@@ -1284,9 +1298,9 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
@Override
public boolean onCreateOptionsMenu(Menu menu) {
- if (mSlidingMenu.isSecondaryMenuShowing())
+ if (mDrawerLayout.isDrawerOpen(mRightMenu))
getMenuInflater().inflate(R.menu.quick_search, menu);
- else if (mSlidingMenu.isMenuShowing())
+ else if (mDrawerLayout.isDrawerOpen(mLeftMenu))
return true;
else
getMenuInflater().inflate(R.menu.gallery_list, menu);
@@ -1367,14 +1381,18 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
// Double click back exit
@Override
public void onBackPressed() {
- if (!mShowDrawer) {
- finish();
+ if (mDrawerLayout.isDrawerOpen(mLeftMenu) || mDrawerLayout.isDrawerOpen(mRightMenu)) {
+ mDrawerLayout.closeDrawers();
} else {
- if (System.currentTimeMillis() - curBackTime > BACK_PRESSED_INTERVAL) {
- curBackTime = System.currentTimeMillis();
- MaterialToast.showToast(R.string.exit_tip);
- } else
+ if (!mShowDrawer) {
finish();
+ } else {
+ if (System.currentTimeMillis() - curBackTime > BACK_PRESSED_INTERVAL) {
+ curBackTime = System.currentTimeMillis();
+ MaterialToast.showToast(R.string.exit_tip);
+ } else
+ finish();
+ }
}
}
@@ -1388,19 +1406,19 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
switch (item.getItemId()) {
case android.R.id.home:
if (mShowDrawer) {
- if (mSlidingMenu.isMenuShowing())
- showContent();
+ if (mDrawerLayout.isDrawerOpen(mLeftMenu))
+ mDrawerLayout.closeDrawers();
else
- showMenu();
+ mDrawerLayout.openDrawer(mLeftMenu);
} else {
finish();
}
return true;
case R.id.action_refresh:
- refresh();
+ mGalleryListView.refresh();
return true;
case R.id.action_jump:
- if (!isRefreshing() && isGetGalleryOk())
+ if (!mGalleryListView.isRefreshing() && mGalleryListView.isGetGalleryOk())
jump();
return true;
case R.id.action_detail:
@@ -1514,41 +1532,41 @@ public class GalleryListActivity extends AbsGalleryActivity implements View.OnCl
switch (state) {
case LOGIN:
- avatar.setImageBitmap(mClient.getAvatar());
- userView.setVisibility(View.GONE);
- loginButton.setVisibility(View.VISIBLE);
- registerButton.setVisibility(View.VISIBLE);
- logoutButton.setVisibility(View.GONE);
- waitloginoutView.setVisibility(View.GONE);
+ mAvatar.setImageBitmap(mClient.getAvatar());
+ mUsernameView.setVisibility(View.GONE);
+ mLoginButton.setVisibility(View.VISIBLE);
+ mRegisterButton.setVisibility(View.VISIBLE);
+ mLogoutButton.setVisibility(View.GONE);
+ mWaitLogView.setVisibility(View.GONE);
break;
case LOGOUT:
- avatar.setImageBitmap(mClient.getAvatar());
- userView.setText(mClient.getDisplayname());
- userView.setVisibility(View.VISIBLE);
- loginButton.setVisibility(View.GONE);
- registerButton.setVisibility(View.GONE);
- logoutButton.setVisibility(View.VISIBLE);
- waitloginoutView.setVisibility(View.GONE);
+ mAvatar.setImageBitmap(mClient.getAvatar());
+ mUsernameView.setText(mClient.getDisplayname());
+ mUsernameView.setVisibility(View.VISIBLE);
+ mLoginButton.setVisibility(View.GONE);
+ mRegisterButton.setVisibility(View.GONE);
+ mLogoutButton.setVisibility(View.VISIBLE);
+ mWaitLogView.setVisibility(View.GONE);
break;
case WAIT:
- avatar.setImageBitmap(mClient.getAvatar());
- userView.setVisibility(View.GONE);
- loginButton.setVisibility(View.GONE);
- registerButton.setVisibility(View.GONE);
- logoutButton.setVisibility(View.GONE);
- waitloginoutView.setVisibility(View.VISIBLE);
+ mAvatar.setImageBitmap(mClient.getAvatar());
+ mUsernameView.setVisibility(View.GONE);
+ mLoginButton.setVisibility(View.GONE);
+ mRegisterButton.setVisibility(View.GONE);
+ mLogoutButton.setVisibility(View.GONE);
+ mWaitLogView.setVisibility(View.VISIBLE);
break;
}
}
@Override
- protected String getTargetUrl(int targetPage) {
+ public String getTargetUrl(int targetPage) {
lus.setPage(targetPage);
return lus.getUrl();
}
@Override
- protected void doGetGallerys(String url, final long taskStamp, final OnGetListListener listener) {
+ public void doGetGallerys(String url, final long taskStamp, final OnGetListListener listener) {
if (lus.getMode() == ListUrls.MODE_IMAGE_SEARCH) {
if (url == null) {
// No result url
diff --git a/src/com/hippo/ehviewer/ui/HistoryActivity.java b/src/com/hippo/ehviewer/ui/HistoryActivity.java
index 9c43dde42..3389f96e7 100644
--- a/src/com/hippo/ehviewer/ui/HistoryActivity.java
+++ b/src/com/hippo/ehviewer/ui/HistoryActivity.java
@@ -24,7 +24,6 @@ import android.app.ActionBar;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -47,18 +46,25 @@ import com.hippo.ehviewer.data.GalleryInfo;
import com.hippo.ehviewer.util.Config;
import com.hippo.ehviewer.util.Theme;
import com.hippo.ehviewer.util.Ui;
+import com.hippo.ehviewer.widget.FitWindowView;
+import com.hippo.ehviewer.widget.GalleryListView;
+import com.hippo.ehviewer.widget.GalleryListView.OnGetListListener;
import com.hippo.ehviewer.widget.LoadImageView;
import com.hippo.ehviewer.widget.PullViewGroup;
import com.hippo.ehviewer.widget.RatingView;
-import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
-public class HistoryActivity extends AbsGalleryActivity
- implements AdapterView.OnItemClickListener, MaterialAlertDialog.OnClickListener {
+public class HistoryActivity extends AbsActivity
+ implements AdapterView.OnItemClickListener, MaterialAlertDialog.OnClickListener,
+ GalleryListView.GalleryListViewHelper, FitWindowView.OnFitSystemWindowsListener {
private static final String TAG = HistoryActivity.class.getSimpleName();
private Data mData;
+ private ActionBar mActionBar;
+ private int mThemeColor;
+ private FitWindowView mStandard;
+ private GalleryListView mGalleryListView;
private PullViewGroup mPullViewGroup;
private ListView mList;
@@ -101,7 +107,7 @@ public class HistoryActivity extends AbsGalleryActivity
if (newFilterMode != mFilterMode) {
mFilterMode = newFilterMode;
Config.setInt(KEY_HISTORY_FILTER, mFilterMode);
- refresh();
+ mGalleryListView.refresh();
}
}
return true;
@@ -110,7 +116,7 @@ public class HistoryActivity extends AbsGalleryActivity
switch (which) {
case MaterialAlertDialog.POSITIVE:
Data.getInstance().clearHistory();
- refresh();
+ mGalleryListView.refresh();
}
return true;
@@ -138,52 +144,43 @@ public class HistoryActivity extends AbsGalleryActivity
}
@Override
- public void onOrientationChanged(int paddingTop, int paddingBottom) {
- mList.setPadding(mList.getPaddingLeft(), paddingTop,
- mList.getPaddingRight(), paddingBottom);
- }
-
- @Override
- protected int getLayoutRes() {
- return R.layout.favorite_list;
+ public void onFitSystemWindows(int l, int t, int r, int b) {
+ mList.setPadding(mList.getPaddingLeft(), t, mList.getPaddingRight(), b);
+ Ui.translucent(this, mThemeColor, t - Ui.ACTION_BAR_HEIGHT);
}
@Override
protected void onResume() {
super.onResume();
- refresh();
+ mGalleryListView.refresh();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ setContentView(R.layout.history);
mData = Data.getInstance();
-
mFilterMode = Config.getInt(KEY_HISTORY_FILTER, Data.BROWSE | Data.READ);
- // Just avoid error
- setBehindContentView(new View(this));
- setSlidingActionBarEnabled(false);
- getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
- getSlidingMenu().setEnabled(false);
+ mActionBar = getActionBar();
+ mActionBar.setDisplayHomeAsUpEnabled(true);
+ mThemeColor = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
+ mActionBar.setBackgroundDrawable(new ColorDrawable(mThemeColor));
- ActionBar actionBar = getActionBar();
- actionBar.setDisplayHomeAsUpEnabled(true);
- int color = Config.getRandomThemeColor() ? Theme.getRandomDarkColor() : Config.getThemeColor();
- color = color & 0x00ffffff | 0xdd000000;
- Drawable drawable = new ColorDrawable(color);
- actionBar.setBackgroundDrawable(drawable);
- Ui.translucent(this, color);
-
- mPullViewGroup = getPullViewGroup();
- mList = (ListView) getContentView();
+ mStandard = (FitWindowView) findViewById(R.id.standard);
+ mGalleryListView = (GalleryListView) findViewById(R.id.gallery_list);
+ mPullViewGroup = mGalleryListView.getPullViewGroup();
+ mList = (ListView) mGalleryListView.getContentView();
+ mGalleryListView.setGalleryListViewHelper(this);
+ mStandard.addOnFitSystemWindowsListener(this);
+ mPullViewGroup.setAgainstToChildPadding(true);
mPullViewGroup.setEnabledHeader(false);
mPullViewGroup.setEnabledFooter(false);
- mAdapter = new ListAdapter(getGalleryList());
+ mAdapter = new ListAdapter(mGalleryListView.getGalleryList());
mList.setAdapter(mAdapter);
mList.setClipToPadding(false);
mList.setDivider(null);
@@ -224,12 +221,12 @@ public class HistoryActivity extends AbsGalleryActivity
}
@Override
- protected String getTargetUrl(int targetPage) {
+ public String getTargetUrl(int targetPage) {
return HISTORY_URL;
}
@Override
- protected void doGetGallerys(String url, long taskStamp,
+ public void doGetGallerys(String url, long taskStamp,
OnGetListListener listener) {
if (url.equals(HISTORY_URL)) {
List giList = new ArrayList(mData.getHistory(mFilterMode, true));
@@ -244,7 +241,7 @@ public class HistoryActivity extends AbsGalleryActivity
public void onItemClick(AdapterView> parent, View view, int position,
long id) {
Intent intent = new Intent(this, GalleryDetailActivity.class);
- GalleryInfo gi = getGalleryInfo(position);
+ GalleryInfo gi = mGalleryListView.getGalleryInfo(position);
intent.putExtra(GalleryDetailActivity.KEY_G_INFO, gi);
startActivity(intent);
}
diff --git a/src/com/hippo/ehviewer/ui/OnOrientationChangedListener.java b/src/com/hippo/ehviewer/ui/OnOrientationChangedListener.java
deleted file mode 100644
index fbb1b56cb..000000000
--- a/src/com/hippo/ehviewer/ui/OnOrientationChangedListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Copyright (C) 2014 Hippo Seven
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.hippo.ehviewer.ui;
-
-public interface OnOrientationChangedListener {
-
- /**
- * It will invoke when Acticity onStart, Orientation Changed
- * @param paddingTop
- * @param paddingBottom
- */
- public void onOrientationChanged(int paddingTop, int paddingBottom);
-}
diff --git a/src/com/hippo/ehviewer/ui/SettingsActivity.java b/src/com/hippo/ehviewer/ui/SettingsActivity.java
index 1f27ab0e1..ed90409ba 100644
--- a/src/com/hippo/ehviewer/ui/SettingsActivity.java
+++ b/src/com/hippo/ehviewer/ui/SettingsActivity.java
@@ -76,13 +76,15 @@ import com.hippo.ehviewer.util.Ui;
import com.hippo.ehviewer.util.Utils;
import com.hippo.ehviewer.widget.CategoryTable;
import com.hippo.ehviewer.widget.FileExplorerView;
+import com.hippo.ehviewer.widget.FitWindowView;
import com.hippo.ehviewer.widget.MaterialToast;
import com.hippo.ehviewer.widget.SuggestionHelper;
-public class SettingsActivity extends AbsPreferenceActivity {
+public class SettingsActivity extends AbsPreferenceActivity implements FitWindowView.OnFitSystemWindowsListener {
@SuppressWarnings("unused")
private static String TAG = SettingsActivity.class.getSimpleName();
+ private FitWindowView mStandard;
private List mFragments;
private ListView mListView;
@@ -90,17 +92,28 @@ public class SettingsActivity extends AbsPreferenceActivity {
mListView.setPadding(mListView.getPaddingLeft(), paddingTop, mListView.getPaddingRight(), paddingBottom);
}
+ // @Override
+ // public void onOrientationChanged(int paddingTop, int paddingBottom) {
+ // for (TranslucentPreferenceFragment f : mFragments) {
+ // if (f.isVisible()) {
+ // f.adjustPadding(paddingTop, paddingBottom);
+ // return;
+ // }
+ // }
+
+ // If no fragment is visible, just headers is shown
+ // adjustPadding(paddingTop, paddingBottom);
+ // }
+
@Override
- public void onOrientationChanged(int paddingTop, int paddingBottom) {
+ public void onFitSystemWindows(int l, int t, int r, int b) {
for (TranslucentPreferenceFragment f : mFragments) {
if (f.isVisible()) {
- f.adjustPadding(paddingTop, paddingBottom);
+ f.adjustPadding(t, b);
return;
}
}
-
- // If no fragment is visible, just headers is shown
- adjustPadding(paddingTop, paddingBottom);
+ adjustPadding(t, b);
}
@Override
@@ -113,7 +126,7 @@ public class SettingsActivity extends AbsPreferenceActivity {
Drawable drawable = new ColorDrawable(color);
final ActionBar actionBar = getActionBar();
actionBar.setBackgroundDrawable(drawable);
- Ui.translucent(this, color);
+ Ui.translucent(this, color, 0);
actionBar.setDisplayHomeAsUpEnabled(true);
@@ -121,6 +134,23 @@ public class SettingsActivity extends AbsPreferenceActivity {
mListView = getListView();
mListView.setClipToPadding(false);
+
+ int listIndex = -1;
+ ViewGroup p = (ViewGroup) mListView.getParent();
+ int size = p.getChildCount();
+ for (int i = 0; i < size; i++) {
+ if (mListView == p.getChildAt(i)) {
+ listIndex = i;
+ break;
+ }
+ }
+
+ if (listIndex != -1) {
+ mStandard = new FitWindowView(this);
+ mStandard.addOnFitSystemWindowsListener(this);
+ p.addView(mStandard, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
+ ViewGroup.LayoutParams.MATCH_PARENT));
+ }
}
@Override
diff --git a/src/com/hippo/ehviewer/util/Ui.java b/src/com/hippo/ehviewer/util/Ui.java
index f52c853c4..4c31d8944 100644
--- a/src/com/hippo/ehviewer/util/Ui.java
+++ b/src/com/hippo/ehviewer/util/Ui.java
@@ -29,7 +29,6 @@ import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
-import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.KeyCharacterMap;
@@ -40,6 +39,7 @@ import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
+import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import com.hippo.ehviewer.R;
@@ -76,6 +76,8 @@ public class Ui {
public static int ACTION_BAR_HEIGHT_L;
public static int NAV_BAR_HEIGHT;
+ public static int ACTION_BAR_HEIGHT;
+
static {
// Android allows a system property to override the presence of the navigation bar.
// Used by the emulator.
@@ -128,17 +130,14 @@ public class Ui {
// Get height info
STATUS_BAR_HEIGHT = getInternalDimensionSize(mResources, "status_bar_height");
- if ("L".equals(Build.VERSION.CODENAME) || Build.VERSION.SDK_INT >= 21) {
- ACTION_BAR_HEIGHT_P = Ui.dp2pix(56);
- ACTION_BAR_HEIGHT_L = Ui.dp2pix(48);
- } else {
- ACTION_BAR_HEIGHT_P = Ui.dp2pix(48);
- ACTION_BAR_HEIGHT_L = Ui.dp2pix(40);
- }
+ ACTION_BAR_HEIGHT_P = Ui.dp2pix(56);
+ ACTION_BAR_HEIGHT_L = Ui.dp2pix(56);
if (hasNavBar(mContext))
NAV_BAR_HEIGHT = getInternalDimensionSize(mResources, "navigation_bar_height");
else
NAV_BAR_HEIGHT = 0;
+
+ ACTION_BAR_HEIGHT = mResources.getDimensionPixelSize(R.dimen.action_bar_height);
}
public static int getInternalDimensionSize(Resources res, String key) {
@@ -312,19 +311,6 @@ public class Ui {
child.measure(childWidthSpec, childHeightSpec);
}
- public static final int ORIENTATION_PORTRAIT = 0x0;
- public static final int ORIENTATION_LANDSCAPE = 0x1;
-
- public static int getOrientation(Activity activity) {
- DisplayMetrics dm = new DisplayMetrics();
- activity.getWindowManager().getDefaultDisplay().getMetrics(dm);
- if (dm.heightPixels > dm.widthPixels){
- return ORIENTATION_PORTRAIT;
- }else{
- return ORIENTATION_LANDSCAPE;
- }
- }
-
/**
* Update translucent state for API >= 19, KK or more powerful
*
@@ -333,13 +319,13 @@ public class Ui {
@TargetApi(Build.VERSION_CODES.KITKAT)
public static void updateTranslucent(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- int screenOri = getOrientation(activity);
+ Configuration c = activity.getResources().getConfiguration();
Window w = activity.getWindow();
w.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- if (screenOri == ORIENTATION_PORTRAIT)
+ if (c.orientation == Configuration.ORIENTATION_PORTRAIT)
w.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
- else if (screenOri == ORIENTATION_LANDSCAPE)
+ else if (c.orientation == Configuration.ORIENTATION_LANDSCAPE)
w.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}
@@ -356,15 +342,32 @@ public class Ui {
}
@TargetApi(Build.VERSION_CODES.KITKAT)
- public static void translucent(
- Activity activity, int color) {
+ public static void translucent(Activity activity, int color, int height) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
- ViewGroup decorViewGroup = (ViewGroup)activity.getWindow().getDecorView();
- View statusBarBgView = new View(activity);
+ boolean needAdd = false;
+ FrameLayout.LayoutParams lp;
+ ViewGroup decorViewGroup = (ViewGroup) activity.getWindow().getDecorView();
+
+ View statusBarBgView = (View) decorViewGroup.getTag(R.id.translucent_view);
+ if (statusBarBgView == null) {
+ needAdd = true;
+ statusBarBgView = new View(activity);
+ }
statusBarBgView.setBackgroundColor(color);
- LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, STATUS_BAR_HEIGHT);
+
+ lp = (FrameLayout.LayoutParams) statusBarBgView.getLayoutParams();
+ if (lp == null)
+ lp = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, height);
+ else
+ lp.height = height;
lp.gravity = Gravity.TOP;
- decorViewGroup.addView(statusBarBgView, lp);
+
+ if (needAdd) {
+ decorViewGroup.addView(statusBarBgView, lp);
+ decorViewGroup.setTag(R.id.translucent_view, statusBarBgView);
+ } else {
+ statusBarBgView.setLayoutParams(lp);
+ }
}
}
diff --git a/src/com/hippo/ehviewer/widget/FitWindowView.java b/src/com/hippo/ehviewer/widget/FitWindowView.java
new file mode 100644
index 000000000..7333e240f
--- /dev/null
+++ b/src/com/hippo/ehviewer/widget/FitWindowView.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2014 Hippo Seven
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.hippo.ehviewer.widget;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import android.annotation.TargetApi;
+import android.content.Context;
+import android.graphics.Rect;
+import android.os.Build;
+import android.util.AttributeSet;
+import android.view.View;
+
+public class FitWindowView extends View {
+
+ private List mListeners;
+
+ public FitWindowView(Context context) {
+ super(context);
+ init();
+ }
+
+ public FitWindowView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public FitWindowView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init();
+ }
+
+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ public FitWindowView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ init();
+ }
+
+ private void init() {
+ mListeners = new LinkedList();
+ setFitsSystemWindows(true);
+ }
+
+ public void addOnFitSystemWindowsListener(OnFitSystemWindowsListener l) {
+ mListeners.add(l);
+ }
+
+ public void removeOnFitSystemWindowsListener(OnFitSystemWindowsListener l) {
+ mListeners.remove(l);
+ }
+
+ @Override
+ @SuppressWarnings("deprecation")
+ protected boolean fitSystemWindows(Rect insets) {
+ int l = insets.left;
+ int t = insets.top;
+ int r = insets.right;
+ int b = insets.bottom;
+ for (OnFitSystemWindowsListener listener : mListeners)
+ listener.onFitSystemWindows(l, t, r, b);
+ return super.fitSystemWindows(insets);
+ }
+
+ public static interface OnFitSystemWindowsListener {
+ public void onFitSystemWindows(int l, int t, int r, int b);
+ }
+}
diff --git a/src/com/hippo/ehviewer/ui/AbsGalleryActivity.java b/src/com/hippo/ehviewer/widget/GalleryListView.java
similarity index 71%
rename from src/com/hippo/ehviewer/ui/AbsGalleryActivity.java
rename to src/com/hippo/ehviewer/widget/GalleryListView.java
index 11c00b8f5..805a30a26 100644
--- a/src/com/hippo/ehviewer/ui/AbsGalleryActivity.java
+++ b/src/com/hippo/ehviewer/widget/GalleryListView.java
@@ -14,47 +14,47 @@
* limitations under the License.
*/
-package com.hippo.ehviewer.ui;
+package com.hippo.ehviewer.widget;
import java.util.ArrayList;
import java.util.List;
+import android.annotation.TargetApi;
import android.content.Context;
+import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
-import android.os.Bundle;
+import android.os.Build;
+import android.util.AttributeSet;
+import android.view.LayoutInflater;
import android.view.View;
import android.widget.AbsListView;
import android.widget.BaseAdapter;
+import android.widget.FrameLayout;
import android.widget.ListView;
-import android.widget.RelativeLayout;
import com.hippo.ehviewer.R;
import com.hippo.ehviewer.cache.ImageCache;
import com.hippo.ehviewer.data.GalleryInfo;
import com.hippo.ehviewer.ehclient.EhClient;
import com.hippo.ehviewer.ehclient.ListParser;
-import com.hippo.ehviewer.widget.MaterialToast;
-import com.hippo.ehviewer.widget.PullViewGroup;
-import com.hippo.ehviewer.widget.RefreshTextView;
-public abstract class AbsGalleryActivity extends AbsSlidingActivity
- implements PullViewGroup.OnFooterRefreshListener,
- PullViewGroup.OnRefreshListener {
- @SuppressWarnings("unused")
- private static final String TAG = AbsGalleryActivity.class.getSimpleName();
+public class GalleryListView extends FrameLayout implements PullViewGroup.OnFooterRefreshListener,
+ PullViewGroup.OnRefreshListener, ListView.OnScrollListener {
+
+ private static final String TAG = GalleryListView.class.getSimpleName();
private static final int MODE_REFRESH = 0x0;
private static final int MODE_NEXT_PAGE = 0x1;
private static final int MODE_PRE_PAGE = 0x2;
private static final int MODE_SOMEWHERE = 0x3;
- protected Context mContext;
- protected EhClient mClient;
+ private Context mContext;
+ private EhClient mClient;
+ private GalleryListViewHelper mHelper;
private List mGiList;
- private RelativeLayout mMainView;
private PullViewGroup mPullViewGroup;
private AbsListView mContentView;
private RefreshTextView mRefreshTextView;
@@ -79,40 +79,110 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
private String mTargetUrl;
private boolean isFootRefresh = false;
+ public GalleryListView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init(context, attrs, 0, 0);
+ }
+
+ public GalleryListView(Context context, AttributeSet attrs, int defStyleAttr) {
+ super(context, attrs, defStyleAttr);
+ init(context, attrs, defStyleAttr, 0);
+ }
+
+ @TargetApi(Build.VERSION_CODES.LOLLIPOP)
+ public GalleryListView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ super(context, attrs, defStyleAttr, defStyleRes);
+ init(context, attrs, defStyleAttr, defStyleRes);
+ }
+
+ private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+ mContext = context;
+ mGiList = new ArrayList();
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.GalleryListView, defStyleAttr, defStyleRes);
+ int index = a.getInt(R.styleable.GalleryListView_glvContent, -1);
+ a.recycle();
+
+ int resId;
+ switch(index) {
+ case 0:
+ resId = R.layout.gallery_list_listview;
+ break;
+ case 1:
+ default:
+ resId = R.layout.gallery_list_staggeredgridview;
+ break;
+ }
+
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+ inflater.inflate(resId, this);
+
+ mPullViewGroup = (PullViewGroup) findViewById(R.id.pull_list);
+ mContentView = mPullViewGroup.getContentView();
+ mRefreshTextView = (RefreshTextView) findViewById(R.id.refresh_text);
+
+ mPullViewGroup.setColorScheme(
+ R.color.refresh_color_1,
+ R.color.refresh_color_2,
+ R.color.refresh_color_3,
+ R.color.refresh_color_4);
+ mPullViewGroup.setOnHeaderRefreshListener(this);
+ mPullViewGroup.setOnFooterRefreshListener(this);
+ mPullViewGroup.setFooterString(
+ mContext.getString(R.string.footer_loading),
+ mContext.getString(R.string.footer_loaded),
+ mContext.getString(R.string.footer_fail));
+
+ mContentView.setOnScrollListener(this);
+ mContentView.setSelector(new ColorDrawable(Color.TRANSPARENT));
+ mContentView.setClipToPadding(false);
+
+ mRefreshTextView.setDefaultRefresh(R.string.click_retry, new RefreshTextView.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ retry();
+ }
+ });
+ }
+
+ public void setGalleryListViewHelper(GalleryListViewHelper h) {
+ mHelper = h;
+ }
+
+ public PullViewGroup getPullViewGroup() {
+ return mPullViewGroup;
+ }
+
+ public AbsListView getContentView() {
+ return mContentView;
+ }
+
+ public RefreshTextView getRefreshTextView() {
+ return mRefreshTextView;
+ }
+
public void setNoneText(CharSequence text) {
mRefreshTextView.setVisibility(View.VISIBLE);
mRefreshTextView.setEmesg(text, false);
}
- /**
- * Get url string for very page
- *
- * @param targetPage
- * @return
- */
- protected abstract String getTargetUrl(int targetPage);
+ public void onlyShowList() {
+ mPullViewGroup.setVisibility(View.VISIBLE);
+ mRefreshTextView.setRefreshing(false);
+ mRefreshTextView.setVisibility(View.GONE);
+ }
- /**
- * Do get gallarys here, you shuold invoke the onSuccess or
- * onFailure of listener when over
- *
- * @param url
- * @param taskStamp
- * @param listener
- */
- protected abstract void doGetGallerys(String url, long taskStamp, OnGetListListener listener);
-
- /**
- * Get the layout resources
- * @return
- */
- protected abstract int getLayoutRes();
+ public void onlyShowNone() {
+ mPullViewGroup.setVisibility(View.GONE);
+ mRefreshTextView.setVisibility(View.VISIBLE);
+ mRefreshTextView.setEmesg(R.string.none, false);
+ }
private void getGallerys() {
setGallerysLayout();
mTaskStamp = System.currentTimeMillis();
- doGetGallerys(mTargetUrl, mTaskStamp, mListener);
+ mHelper.doGetGallerys(mTargetUrl, mTaskStamp, mListener);
}
@Override
@@ -137,19 +207,7 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
}
}
- public void onlyShowList() {
- mPullViewGroup.setVisibility(View.VISIBLE);
- mRefreshTextView.setRefreshing(false);
- mRefreshTextView.setVisibility(View.GONE);
- }
-
- public void onlyShowNone() {
- mPullViewGroup.setVisibility(View.GONE);
- mRefreshTextView.setVisibility(View.VISIBLE);
- mRefreshTextView.setEmesg(R.string.none, false);
- }
-
- protected void firstTimeRefresh() {
+ public void firstTimeRefresh() {
// set mPullViewGroup gone, make wait view show
mPullViewGroup.setVisibility(View.GONE);
mRefreshTextView.setVisibility(View.VISIBLE);
@@ -172,19 +230,26 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
protected boolean retry() {
// Need to update url, because mode may be changed
- mTargetUrl = getTargetUrl(mTargetPage);
+ mTargetUrl = mHelper.getTargetUrl(mTargetPage);
getGallerys();
return true;
}
+ private void setListPosition(int position) {
+ if (position == 0)
+ mPullViewGroup.setSelectionFromTop(position, Integer.MAX_VALUE);
+ else
+ mPullViewGroup.setSelectionFromTop(position, 0);
+ }
+
/**
* Go to page 0.
* You should know you can refresh or not.
*/
- protected void refresh() {
+ public void refresh() {
mGetMode = MODE_REFRESH;
mTargetPage = 0;
- mTargetUrl = getTargetUrl(mTargetPage);
+ mTargetUrl = mHelper.getTargetUrl(mTargetPage);
mIsKeepPosition = false;
getGallerys();
}
@@ -198,7 +263,7 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
protected void getPrePage(boolean isKeepPosition) {
mGetMode = MODE_PRE_PAGE;
mTargetPage = mFirstPage - 1;
- mTargetUrl = getTargetUrl(mTargetPage);
+ mTargetUrl = mHelper.getTargetUrl(mTargetPage);
mIsKeepPosition = isKeepPosition;
getGallerys();
}
@@ -212,7 +277,7 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
protected void getNextPage(boolean isKeepPosition) {
mGetMode = MODE_NEXT_PAGE;
mTargetPage = mLastPage + 1;
- mTargetUrl = getTargetUrl(mTargetPage);
+ mTargetUrl = mHelper.getTargetUrl(mTargetPage);
mIsKeepPosition = isKeepPosition;
getGallerys();
}
@@ -226,7 +291,7 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
protected void getSomewhere(int page) {
mGetMode = MODE_SOMEWHERE;
mTargetPage = page;
- mTargetUrl = getTargetUrl(mTargetPage);
+ mTargetUrl = mHelper.getTargetUrl(mTargetPage);
mIsKeepPosition = false;
getGallerys();
}
@@ -244,60 +309,6 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
}
}
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(getLayoutRes());
-
- mContext = getApplication();
- mClient = EhClient.getInstance();
-
- mGiList = new ArrayList();
-
- mMainView = (RelativeLayout)findViewById(R.id.main);
- mPullViewGroup = (PullViewGroup)findViewById(R.id.gallery_list);
- mPullViewGroup.setAgainstToChildPadding(true);
- mContentView = mPullViewGroup.getContentView();
- mRefreshTextView = (RefreshTextView)findViewById(R.id.refresh_text);
-
- mPullViewGroup.setColorScheme(R.color.refresh_color_1,
- R.color.refresh_color_2,
- R.color.refresh_color_3,
- R.color.refresh_color_4);
- mPullViewGroup.setOnHeaderRefreshListener(this);
- mPullViewGroup.setOnFooterRefreshListener(this);
- mPullViewGroup.setFooterString(getString(R.string.footer_loading),
- getString(R.string.footer_loaded),
- getString(R.string.footer_fail));
-
- mContentView.setOnScrollListener(new ScrollListener());
- mContentView.setSelector(new ColorDrawable(Color.TRANSPARENT));
- mContentView.setClipToPadding(false);
-
- mRefreshTextView.setDefaultRefresh(R.string.click_retry,
- new RefreshTextView.OnRefreshListener() {
- @Override
- public void onRefresh() {
- retry();
- }
- });
- }
-
- /**
- * @return list view
- */
- public AbsListView getContentView() {
- return mContentView;
- }
-
- public RelativeLayout getMainView() {
- return mMainView;
- }
-
- public PullViewGroup getPullViewGroup() {
- return mPullViewGroup;
- }
-
/**
* @return True if actionbar or footer is refreshing
*/
@@ -325,46 +336,35 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
return mGiList.get(position);
}
- private class ScrollListener implements ListView.OnScrollListener {
- @Override
- public void onScroll(AbsListView view, int firstVisibleItem,
- int visibleItemCount, int totalItemCount) {
- mPullViewGroup.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
+ @Override
+ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
+ mPullViewGroup.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
- if (visibleItemCount < 2 || mItemPerPage == 0)
- return;
- if (mLastIndex == 0)
- mLastIndex = mItemPerPage - 1;
- int pageChanged = (firstVisibleItem - mFirstIndex)
- / mItemPerPage;
- if (pageChanged == 0)
- pageChanged = (firstVisibleItem + visibleItemCount - mLastIndex - 1)
- / mItemPerPage;
+ if (visibleItemCount < 2 || mItemPerPage == 0)
+ return;
+ if (mLastIndex == 0)
+ mLastIndex = mItemPerPage - 1;
+ int pageChanged = (firstVisibleItem - mFirstIndex) / mItemPerPage;
+ if (pageChanged == 0)
+ pageChanged = (firstVisibleItem + visibleItemCount - mLastIndex - 1) / mItemPerPage;
- if (pageChanged != 0) {
- mCurPage = mCurPage + pageChanged;
- mFirstIndex += pageChanged * mItemPerPage;
- mLastIndex += pageChanged * mItemPerPage;
- }
- }
- @Override
- public void onScrollStateChanged(AbsListView view, int scrollState) {
- switch (scrollState) {
- case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
- ImageCache.getInstance(mContext).setPauseDiskCache(true);
- break;
- case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
- ImageCache.getInstance(mContext).setPauseDiskCache(false);
- break;
- }
+ if (pageChanged != 0) {
+ mCurPage = mCurPage + pageChanged;
+ mFirstIndex += pageChanged * mItemPerPage;
+ mLastIndex += pageChanged * mItemPerPage;
}
}
- private void setListPosition(int position) {
- if (position == 0)
- mPullViewGroup.setSelectionFromTop(position, Integer.MAX_VALUE);
- else
- mPullViewGroup.setSelectionFromTop(position, 0);
+ @Override
+ public void onScrollStateChanged(AbsListView view, int scrollState) {
+ switch (scrollState) {
+ case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
+ ImageCache.getInstance(mContext).setPauseDiskCache(true);
+ break;
+ case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
+ ImageCache.getInstance(mContext).setPauseDiskCache(false);
+ break;
+ }
}
public interface OnGetListListener {
@@ -461,6 +461,7 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
mPullViewGroup.setAnyRefreshComplete(true);
}
+
@Override
public void onFailure(BaseAdapter adapter, long taskStamp, String eMsg) {
if (mTaskStamp != taskStamp)
@@ -492,4 +493,25 @@ public abstract class AbsGalleryActivity extends AbsSlidingActivity
mPullViewGroup.setAnyRefreshComplete(false);
}
};
+
+ public static interface GalleryListViewHelper {
+ /**
+ * Get url string for very page
+ *
+ * @param targetPage
+ * @return
+ */
+ public String getTargetUrl(int targetPage);
+
+ /**
+ * Do get gallarys here, you shuold invoke the onSuccess or onFailure of
+ * listener when over
+ *
+ * @param url
+ * @param taskStamp
+ * @param listener
+ */
+ public void doGetGallerys(String url, long taskStamp, OnGetListListener listener);
+ }
+
}