diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhClient.java b/app/src/main/java/com/hippo/ehviewer/client/EhClient.java index 4dcb0d369..bbcec3767 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhClient.java +++ b/app/src/main/java/com/hippo/ehviewer/client/EhClient.java @@ -71,7 +71,7 @@ public final class EhClient { ThreadFactory threadFactory = new PriorityThreadFactory(TAG, Process.THREAD_PRIORITY_BACKGROUND); mRequestThreadPool = new ThreadPoolExecutor(poolSize, poolSize, - 1, TimeUnit.SECONDS, requestWorkQueue, threadFactory); + 1L, TimeUnit.SECONDS, requestWorkQueue, threadFactory); } public static String getUrlHeader(int mode) { @@ -86,8 +86,8 @@ public final class EhClient { } } - public static interface EhClientListener { - public void onFailure(Exception e); + public interface EhClientListener { + void onFailure(Exception e); } public abstract static class OnGetGalleryListListener implements EhClientListener { @@ -111,9 +111,9 @@ public final class EhClient { } private interface BgJobHelper { - public void doInBackground(); + void doInBackground(); - public void onPostExecute(); + void onPostExecute(); } private abstract class SimpleBgJobHelper implements BgJobHelper { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/ContentActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/ContentActivity.java index b3ca1168d..dfcf877ed 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/ContentActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/ContentActivity.java @@ -24,7 +24,6 @@ import android.support.v4.widget.DrawerLayout; import com.hippo.content.VectorContext; import com.hippo.ehviewer.R; import com.hippo.ehviewer.ui.scene.GalleryListScene; -import com.hippo.ehviewer.widget.ContentLayout; import com.hippo.scene.StageActivity; import com.hippo.scene.StageLayout; @@ -33,7 +32,7 @@ public class ContentActivity extends StageActivity { private Resources mResources; private DrawerLayout mDrawerLayout; - private ContentLayout mContentLayout; + private StageLayout mContentLayout; @Override protected void onCreate(Bundle savedInstanceState) { @@ -43,21 +42,15 @@ public class ContentActivity extends StageActivity { mResources = getResources(); mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout); - mContentLayout = (ContentLayout) mDrawerLayout.findViewById(R.id.stage); + mContentLayout = (StageLayout) mDrawerLayout.findViewById(R.id.stage); mDrawerLayout.setStatusBarBackground(R.color.theme_primary_dark); if (savedInstanceState == null) { startScene(GalleryListScene.class, null); } - } - public int getFitPaddingBottom() { - return mContentLayout.getFitPaddingBottom(); - } - - public void setOnGetFitPaddingListener(ContentLayout.OnGetFitPaddingListener listener) { - mContentLayout.setOnGetFitPaddingListener(listener); + onCreateStageLayout(mContentLayout); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index 11f595185..a0c9455c4 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -16,35 +16,16 @@ package com.hippo.ehviewer.ui.scene; import android.annotation.SuppressLint; -import android.app.Activity; -import android.content.Intent; import android.content.res.Resources; -import android.database.Cursor; -import android.net.Uri; import android.os.Bundle; -import android.os.Parcelable; -import android.provider.MediaStore; -import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v4.view.PagerAdapter; -import android.support.v4.view.ViewPager; -import android.util.SparseArray; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; import com.hippo.ehviewer.R; -import com.hippo.ehviewer.data.ListUrlBuilder; import com.hippo.ehviewer.ui.ContentActivity; import com.hippo.ehviewer.widget.ContentLayout; -import com.hippo.ehviewer.widget.SearchLayout; import com.hippo.scene.Scene; -import com.hippo.scene.TransitionCurtain; -import com.hippo.widget.Appbar; -public class GalleryListScene extends Scene implements SearchLayout.SearhLayoutHelper, - Scene.ActivityResultListener, ContentLayout.OnGetFitPaddingListener { +public class GalleryListScene extends Scene { private final static int PAGE_INDEX_SEARCH = 0; private final static int PAGE_INDEX_LIST = 1; @@ -53,145 +34,23 @@ public class GalleryListScene extends Scene implements SearchLayout.SearhLayoutH private ContentActivity mActivity; private Resources mResources; - private View mSearchView; - private SearchLayout mSearchLayout; - - private View mListView; - - private Appbar mAppbar; - private ViewPager mViewPager; - - private PagerAdapter mPagerAdapter; + private ContentLayout mContentLayout; @SuppressLint("InflateParams") @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + setContentView(R.layout.scene_gallery_list); mActivity = (ContentActivity) getStageActivity(); mResources = mActivity.getResources(); - LayoutInflater inflater = mActivity.getLayoutInflater(); + mContentLayout = (ContentLayout) findViewById(R.id.content_layout); - // Search View - mSearchView = inflater.inflate(R.layout.fragment_search, null); - mSearchLayout = (SearchLayout) mSearchView.findViewById(R.id.search_layout); + mContentLayout.showText("无法连接网络"); + } - mSearchLayout.setHelper(this); - - // List View + protected void onGetFitPaddingBottom(int b) { // TODO - mListView = inflater.inflate(R.layout.fragment_list, null); - - Button bb = (Button) mListView.findViewById(R.id.test_button); - bb.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - startScene(TestScene.class, null, new TransitionCurtain(new TransitionCurtain.ViewPair[] { - new TransitionCurtain.ViewPair(R.id.haha, R.id.haha), - new TransitionCurtain.ViewPair(R.id.bbbbbb, R.id.bbbbbb) - })); - } - }); - - // Main View - setContentView(R.layout.scene_gallery_list); - mAppbar = (Appbar) findViewById(R.id.appbar); - mViewPager = (ViewPager) findViewById(R.id.viewPager); - - mAppbar.setTitle(mResources.getString(R.string.app_name)); - - mPagerAdapter = new SimplePagerAdapter(); - mViewPager.setAdapter(mPagerAdapter); - mViewPager.setCurrentItem(PAGE_INDEX_LIST); - - // Fit Padding Bottom - mActivity.setOnGetFitPaddingListener(this); - int fitPaddingBottom = mActivity.getFitPaddingBottom(); - if (fitPaddingBottom != -1) { - setFitPaddingBottom(fitPaddingBottom); - } - } - - private void setFitPaddingBottom(int fitPaddingBottom) { - mSearchLayout.setFitPaddingBottom(fitPaddingBottom); - } - - @Override - protected void onRestoreInstanceState(@NonNull SparseArray savedStates) { - super.onRestoreInstanceState(savedStates); - - // mSearchView and mListView may not in hierarchy - mSearchView.restoreHierarchyState(savedStates); - mListView.restoreHierarchyState(savedStates); - } - - @Override - public void onRequestSearch(ListUrlBuilder lub) { - // TODO - } - - @Override - public void onRequestSelectImage() { - Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); - startActivityForResult(intent, this); - } - - @Override - public void onGetResult(int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK && data != null) { - Uri selectedImage = data.getData(); - String[] filePathColumn = { MediaStore.Images.Media.DATA }; - - Cursor cursor = mActivity.getContentResolver().query(selectedImage, - filePathColumn, null, null, null); - cursor.moveToFirst(); - - int columnIndex = cursor.getColumnIndex(filePathColumn[0]); - String imagePath = cursor.getString(columnIndex); - cursor.close(); - - if (imagePath != null) { - mSearchLayout.onSelectImage(imagePath); - } - } - } - - @Override - public void onGetFitPadding(int l, int t, int r, int b) { - setFitPaddingBottom(b); - } - - private class SimplePagerAdapter extends PagerAdapter { - @Override - public int getCount() { - return PAGE_NUMBER; - } - - @Override - public boolean isViewFromObject(View view, Object object) { - return view == object; - } - - @Override - public Object instantiateItem(ViewGroup view, int position) { - View v; - switch (position) { - default: - case PAGE_INDEX_SEARCH: - v = mSearchView; - break; - case PAGE_INDEX_LIST: - v = mListView; - break; - } - view.addView(v); - return v; - } - - @Override - public void destroyItem(ViewGroup view, int position, Object object) { - view.removeView((View) object); - } } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchScene.java new file mode 100644 index 000000000..6d2c83b69 --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchScene.java @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2015 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 + * 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.scene; + +import android.app.Activity; +import android.content.Intent; +import android.content.res.Resources; +import android.database.Cursor; +import android.net.Uri; +import android.os.Bundle; +import android.provider.MediaStore; +import android.support.annotation.Nullable; + +import com.hippo.ehviewer.R; +import com.hippo.ehviewer.data.ListUrlBuilder; +import com.hippo.ehviewer.ui.ContentActivity; +import com.hippo.ehviewer.widget.SearchLayout; +import com.hippo.scene.Scene; + +public class SearchScene extends Scene implements SearchLayout.SearhLayoutHelper, + Scene.ActivityResultListener{ + + private ContentActivity mActivity; + private Resources mResources; + + private SearchLayout mSearchLayout; + + public void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.scene_search); + + mActivity = (ContentActivity) getStageActivity(); + mResources = mActivity.getResources(); + + mSearchLayout = (SearchLayout) findViewById(R.id.search_layout); + + mSearchLayout.setHelper(this); + } + + protected void onGetFitPaddingBottom(int b) { + mSearchLayout.setFitPaddingBottom(b); + } + + @Override + public void onRequestSearch(ListUrlBuilder lub) { + // TODO + } + + @Override + public void onRequestSelectImage() { + Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + startActivityForResult(intent, this); + } + + @Override + public void onGetResult(int resultCode, Intent data) { + if (resultCode == Activity.RESULT_OK && data != null) { + Uri selectedImage = data.getData(); + String[] filePathColumn = { MediaStore.Images.Media.DATA }; + + Cursor cursor = mActivity.getContentResolver().query(selectedImage, + filePathColumn, null, null, null); + cursor.moveToFirst(); + + int columnIndex = cursor.getColumnIndex(filePathColumn[0]); + String imagePath = cursor.getString(columnIndex); + cursor.close(); + + if (imagePath != null) { + mSearchLayout.onSelectImage(imagePath); + } + } + } +} diff --git a/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java b/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java index ced51527d..a478d35f7 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/ehviewer/widget/ContentLayout.java @@ -16,75 +16,177 @@ package com.hippo.ehviewer.widget; import android.content.Context; -import android.graphics.Rect; -import android.support.annotation.NonNull; +import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.StaggeredGridLayoutManager; import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.ProgressBar; +import android.widget.TextView; -import com.hippo.scene.StageLayout; +import com.hippo.ehviewer.R; +import com.hippo.util.IntIdGenerator; +import com.hippo.util.ViewUtils; +import com.hippo.widget.recyclerview.EasyRecyclerView; +import com.hippo.widget.refreshlayout.RefreshLayout; -public class ContentLayout extends StageLayout { +import java.util.ArrayList; +import java.util.List; - private OnGetFitPaddingListener mOnGetFitPaddingListener; +public class ContentLayout extends FrameLayout { - private int mFitPaddingLeft = -1; - private int mFitPaddingTop = -1; - private int mFitPaddingRight = -1; - private int mFitPaddingBottom = -1; + private ProgressBar mProgressBar; + private ViewGroup mItView; + private RefreshLayout mRefreshLayout; + private View mImageView; + private TextView mTextView; public ContentLayout(Context context) { super(context); + init(context); } public ContentLayout(Context context, AttributeSet attrs) { super(context, attrs); + init(context); } public ContentLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); + init(context); } - public ContentLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); + private void init(Context context) { + LayoutInflater.from(context).inflate(R.layout.widget_content_layout, this); + + mProgressBar = (ProgressBar) getChildAt(0); + mItView = (ViewGroup) getChildAt(1); + mRefreshLayout = (RefreshLayout) getChildAt(2); + mImageView = mItView.getChildAt(0); + mTextView = (TextView) mItView.getChildAt(1); } - @SuppressWarnings("deprecation") - @Override - protected boolean fitSystemWindows(@NonNull Rect insets) { - mFitPaddingLeft = 0; - mFitPaddingTop = 0; - mFitPaddingRight = 0; - mFitPaddingBottom = insets.bottom; - if (mOnGetFitPaddingListener != null) { - mOnGetFitPaddingListener.onGetFitPadding(mFitPaddingLeft, mFitPaddingTop, - mFitPaddingRight, mFitPaddingBottom); + public void showProgressBar() { + ViewUtils.setVisibility(mProgressBar, View.VISIBLE); + ViewUtils.setVisibility(mItView, View.GONE); + ViewUtils.setVisibility(mRefreshLayout, View.GONE); + } + + public void showText(CharSequence text) { + ViewUtils.setVisibility(mProgressBar, View.GONE); + ViewUtils.setVisibility(mItView, View.VISIBLE); + ViewUtils.setVisibility(mRefreshLayout, View.GONE); + + mTextView.setText(text); + } + + private abstract static class ContentHelper + extends EasyRecyclerView.Adapter + implements RefreshLayout.OnHeaderRefreshListener, + RefreshLayout.OnFooterRefreshListener { + + private RecyclerView mRecyclerView; + private StaggeredGridLayoutManager mLayoutManager; + + /** + * Store data + */ + private List mList; + + private IntIdGenerator mIdGenerator; + + /** + * First index index of current page + */ + private int mFirstIndex; + /** + * Last index index of current page + */ + private int mLastIndex; + /** + * Current page index + */ + private int mCurrentPage; + /** + * First shown page index + */ + private int mFirstPage; + /** + * Last shown page index + */ + private int mLastPage; + /** + * The number of page in sum + */ + private int mPageNum; + + private int mCurrentTaskId; + private int mCurrentTaskType; + + private ContentHelper(RecyclerView recyclerView, + StaggeredGridLayoutManager layoutManager) { + mRecyclerView = recyclerView; + mLayoutManager = layoutManager; + + mList = new ArrayList<>(); + mIdGenerator = IntIdGenerator.create(); } - insets.set(insets.left, insets.top, insets.right, 0); + /** + * + * @param location + * @return + * @throws IndexOutOfBoundsException + * if {@code location < 0 || location >= size()} + */ + public E getDataAt(int location) { + return mList.get(location); + } - return super.fitSystemWindows(insets); - } + public abstract E[] getPageData(int page); - public void setOnGetFitPaddingListener(OnGetFitPaddingListener listener) { - mOnGetFitPaddingListener = listener; - } + public void onGetPageData(int mTaskId, int page, E[] data) { - public int getFitPaddingLeft() { - return mFitPaddingLeft; - } + } - public int getFitPaddingTop() { - return mFitPaddingTop; - } + @Override + public boolean onFooterRefresh() { + return false; + } - public int getFitPaddingRight() { - return mFitPaddingRight; - } + @Override + public void onHeaderRefresh() { - public int getFitPaddingBottom() { - return mFitPaddingBottom; - } + } - public interface OnGetFitPaddingListener { - public void onGetFitPadding(int l, int t, int r, int b); + public void refresh() { + + } + + public void goTo(int page) { + if (page < 0 || page >= mPageNum) { + throw new IndexOutOfBoundsException("Page number is " + mPageNum + ", page is " + page); + } + + if (page > mFirstIndex) { + + } + + + + } + + abstract public void onScrollStateChanged(RecyclerView recyclerView, int newState); + + public class OnScrollListener extends RecyclerView.OnScrollListener { + @Override + public void onScrollStateChanged(RecyclerView recyclerView, int newState) { + ContentHelper.this.onScrollStateChanged(recyclerView, newState); + } + + + } } } diff --git a/app/src/main/java/com/hippo/scene/Scene.java b/app/src/main/java/com/hippo/scene/Scene.java index 27c6dd381..781fed563 100644 --- a/app/src/main/java/com/hippo/scene/Scene.java +++ b/app/src/main/java/com/hippo/scene/Scene.java @@ -56,6 +56,8 @@ public abstract class Scene { private static SceneManager sSceneManager; + private int mFitPaddingBottom = -1; + static void setSceneManager(SceneManager sceneManager) { sSceneManager = sceneManager; } @@ -156,6 +158,13 @@ public abstract class Scene { onOut(); } + void getFitPaddingBottom(int b) { + if (mFitPaddingBottom != b) { + mFitPaddingBottom = b; + onGetFitPaddingBottom(b); + } + } + public void setBackgroundColor(int bgColor) { if (mBackgroundColor != bgColor) { mBackgroundColor = bgColor; @@ -211,6 +220,10 @@ public abstract class Scene { protected void onOut() { } + protected void onGetFitPaddingBottom(int b) { + } + + public View onCreateStageBar() { return null; } diff --git a/app/src/main/java/com/hippo/scene/SceneManager.java b/app/src/main/java/com/hippo/scene/SceneManager.java index 55b7ccf4f..e18af68ab 100644 --- a/app/src/main/java/com/hippo/scene/SceneManager.java +++ b/app/src/main/java/com/hippo/scene/SceneManager.java @@ -18,7 +18,6 @@ package com.hippo.scene; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.view.View; import com.hippo.util.Log; @@ -33,6 +32,8 @@ class SceneManager { private Scene mLegacyScene; + private int[] mTemp = new int[2]; + // Should only be called by SceneApplication SceneManager() { } @@ -76,6 +77,12 @@ class SceneManager { scene.setState(Scene.SCENE_STATE_CREATE); scene.create(null); + // Update fit padding + int fitPaddingBottom = getStageActivity().getStageLayout().getFitPaddingBottom(); + if (fitPaddingBottom != -1) { + scene.getFitPaddingBottom(fitPaddingBottom); + } + if (curtain != null && previousState != null) { scene.setState(Scene.SCENE_STATE_OPEN); curtain.open(scene, previousState); @@ -138,9 +145,11 @@ class SceneManager { scene.detachFromeStage(); } + /* // Switch stage bar View stageBarContent = scene.onCreateStageBar(); getStageActivity().getStageBar().updateContent(stageBarContent); + */ } } else { Log.e(TAG, "The scene is not in stage"); @@ -182,6 +191,10 @@ class SceneManager { } } + Stack getSceneStack() { + return mSceneStack; + } + protected void onSaveInstanceState(Bundle outState) { for (Scene scene : mSceneStack) { scene.saveInstanceState(outState); diff --git a/app/src/main/java/com/hippo/scene/StageActivity.java b/app/src/main/java/com/hippo/scene/StageActivity.java index 702175298..d440ae08d 100644 --- a/app/src/main/java/com/hippo/scene/StageActivity.java +++ b/app/src/main/java/com/hippo/scene/StageActivity.java @@ -24,9 +24,9 @@ import android.view.View; import com.hippo.ehviewer.ui.AbsActionBarActivity; import com.hippo.util.IntIdGenerator; -import com.hippo.widget.StageBar; -public abstract class StageActivity extends AbsActionBarActivity { +public abstract class StageActivity extends AbsActionBarActivity + implements StageLayout.OnGetFitPaddingBottomListener { private IntIdGenerator mActivityResultIdGenerator = IntIdGenerator.create(); private SparseArray mActivityResultListenerMap = @@ -40,7 +40,7 @@ public abstract class StageActivity extends AbsActionBarActivity { public abstract @NonNull StageLayout getStageLayout(); - public abstract @NonNull StageBar getStageBar(); + // public abstract @NonNull StageBar getStageBar(); @Override protected void onCreate(@Nullable Bundle savedInstanceState) { @@ -49,6 +49,10 @@ public abstract class StageActivity extends AbsActionBarActivity { ((SceneApplication) getApplication()).getSceneManager().setStageActivity(this); } + protected void onCreateStageLayout(StageLayout stageLayout) { + stageLayout.setOnGetFitPaddingListener(this); + } + @Override protected void onDestroy() { super.onDestroy(); @@ -56,6 +60,13 @@ public abstract class StageActivity extends AbsActionBarActivity { ((SceneApplication) getApplication()).getSceneManager().setStageActivity(null); } + @Override + public void onGetFitPaddingBottom(int b) { + for (Scene scene : sSceneManager.getSceneStack()) { + scene.getFitPaddingBottom(b); + } + } + void attachSceneToStage(Scene scene) { View sceneView = scene.getSceneView(); if (sceneView != null) { diff --git a/app/src/main/java/com/hippo/widget/StageBar.java b/app/src/main/java/com/hippo/scene/StageBar.java similarity index 98% rename from app/src/main/java/com/hippo/widget/StageBar.java rename to app/src/main/java/com/hippo/scene/StageBar.java index 884e10277..77788872f 100644 --- a/app/src/main/java/com/hippo/widget/StageBar.java +++ b/app/src/main/java/com/hippo/scene/StageBar.java @@ -13,7 +13,7 @@ * limitations under the License. */ -package com.hippo.widget; +package com.hippo.scene; import android.content.Context; import android.support.v7.widget.CardView; @@ -58,7 +58,4 @@ public class StageBar extends CardView { // TODO return false; } - - - } diff --git a/app/src/main/java/com/hippo/scene/StageLayout.java b/app/src/main/java/com/hippo/scene/StageLayout.java index ec5f47569..12546548b 100644 --- a/app/src/main/java/com/hippo/scene/StageLayout.java +++ b/app/src/main/java/com/hippo/scene/StageLayout.java @@ -17,6 +17,7 @@ package com.hippo.scene; import android.annotation.TargetApi; import android.content.Context; +import android.graphics.Rect; import android.os.Build; import android.os.Parcelable; import android.support.annotation.NonNull; @@ -26,6 +27,10 @@ import android.widget.FrameLayout; public class StageLayout extends FrameLayout { + private OnGetFitPaddingBottomListener mOnGetFitPaddingBottomListener; + + private int mFitPaddingBottom = -1; + public StageLayout(Context context) { super(context); } @@ -52,4 +57,29 @@ public class StageLayout extends FrameLayout { protected void dispatchRestoreInstanceState(@NonNull SparseArray container) { // Do nothing } + + public void setOnGetFitPaddingListener(OnGetFitPaddingBottomListener listener) { + mOnGetFitPaddingBottomListener = listener; + } + + @SuppressWarnings("deprecation") + @Override + protected boolean fitSystemWindows(@NonNull Rect insets) { + mFitPaddingBottom = insets.bottom; + if (mOnGetFitPaddingBottomListener != null) { + mOnGetFitPaddingBottomListener.onGetFitPaddingBottom(mFitPaddingBottom); + } + + insets.set(insets.left, insets.top, insets.right, 0); + + return super.fitSystemWindows(insets); + } + + public int getFitPaddingBottom() { + return mFitPaddingBottom; + } + + public interface OnGetFitPaddingBottomListener { + void onGetFitPaddingBottom(int b); + } } diff --git a/app/src/main/java/com/hippo/scene/TransitionCurtain.java b/app/src/main/java/com/hippo/scene/TransitionCurtain.java index 91cee1fce..f4bd04ac7 100644 --- a/app/src/main/java/com/hippo/scene/TransitionCurtain.java +++ b/app/src/main/java/com/hippo/scene/TransitionCurtain.java @@ -76,7 +76,6 @@ public class TransitionCurtain extends Curtain { colorAnim.start(); - mAnimList.add(colorAnim); // Handle transit part diff --git a/app/src/main/java/com/hippo/util/PriorityThreadFactory.java b/app/src/main/java/com/hippo/util/PriorityThreadFactory.java index 8c33eb65d..8e3eda622 100644 --- a/app/src/main/java/com/hippo/util/PriorityThreadFactory.java +++ b/app/src/main/java/com/hippo/util/PriorityThreadFactory.java @@ -15,7 +15,6 @@ */ package com.hippo.util; - import android.os.Process; import java.util.concurrent.ThreadFactory; @@ -45,5 +44,4 @@ public class PriorityThreadFactory implements ThreadFactory { } }; } - } diff --git a/app/src/main/java/com/hippo/util/ViewUtils.java b/app/src/main/java/com/hippo/util/ViewUtils.java index 9a4219296..6fb5273f5 100644 --- a/app/src/main/java/com/hippo/util/ViewUtils.java +++ b/app/src/main/java/com/hippo/util/ViewUtils.java @@ -350,4 +350,25 @@ public final class ViewUtils { vto.removeOnGlobalLayoutListener(l); } } + + /** + * Get index in parent + * + * @param view The view + * @return The index + */ + public static int getIndexInParent(View view) { + ViewParent parent = view.getParent(); + if (parent instanceof ViewGroup) { + ViewGroup viewParent = (ViewGroup) parent; + int count = viewParent.getChildCount(); + for (int i = 0; i < count; i++) { + View v = viewParent.getChildAt(i); + if (v == view) { + return i; + } + } + } + return -1; + } } diff --git a/app/src/main/res/drawable/ic_sad.xml b/app/src/main/res/drawable/ic_sad.xml index eecdf5776..859c86d42 100644 --- a/app/src/main/res/drawable/ic_sad.xml +++ b/app/src/main/res/drawable/ic_sad.xml @@ -30,10 +30,10 @@ android:viewportHeight="24.0"> diff --git a/app/src/main/res/layout-sw600dp-v21/scene_gallery_list.xml b/app/src/main/res/layout-sw600dp-v21/scene_gallery_list.xml deleted file mode 100644 index 794c71658..000000000 --- a/app/src/main/res/layout-sw600dp-v21/scene_gallery_list.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - diff --git a/app/src/main/res/layout-sw600dp/scene_gallery_list.xml b/app/src/main/res/layout-sw600dp/scene_gallery_list.xml deleted file mode 100644 index 2b7504694..000000000 --- a/app/src/main/res/layout-sw600dp/scene_gallery_list.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/app/src/main/res/layout/activity_content.xml b/app/src/main/res/layout/activity_content.xml index f924ef7fa..172da0ae2 100644 --- a/app/src/main/res/layout/activity_content.xml +++ b/app/src/main/res/layout/activity_content.xml @@ -20,7 +20,7 @@ android:layout_height="match_parent" android:fitsSystemWindows="true"> - - - - - - - - - - - - - - + android:orientation="vertical"/> diff --git a/app/src/main/res/layout-v21/scene_gallery_list.xml b/app/src/main/res/layout/scene_search.xml similarity index 56% rename from app/src/main/res/layout-v21/scene_gallery_list.xml rename to app/src/main/res/layout/scene_search.xml index 46751c4db..7972affe9 100644 --- a/app/src/main/res/layout-v21/scene_gallery_list.xml +++ b/app/src/main/res/layout/scene_search.xml @@ -13,22 +13,8 @@ ~ See the License for the specific language governing permissions and ~ limitations under the License. --> - - - - - - - + android:layout_height="match_parent"/> diff --git a/app/src/main/res/layout/widget_content_layout.xml b/app/src/main/res/layout/widget_content_layout.xml new file mode 100644 index 000000000..5dfdf2065 --- /dev/null +++ b/app/src/main/res/layout/widget_content_layout.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + +