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 fe16d21b6..645ef4386 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/ContentActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/ContentActivity.java @@ -30,6 +30,7 @@ import com.hippo.content.VectorContext; import com.hippo.ehviewer.Constants; import com.hippo.ehviewer.R; import com.hippo.ehviewer.ui.scene.GalleryListScene; +import com.hippo.ehviewer.ui.scene.SettingsHeaderScene; import com.hippo.ehviewer.ui.scene.SignInScene; import com.hippo.ehviewer.util.Config; import com.hippo.ehviewer.widget.DrawerLeftPanel; @@ -84,6 +85,8 @@ public final class ContentActivity extends StageActivity case DRAWER_LIST_DOWNLOAD: break; case DRAWER_LIST_SETTINGS: + mDrawerLayout.closeDrawers(); + startScene(SettingsHeaderScene.class, null, new SimpleCurtain(SimpleCurtain.DIRECTION_BOTTOM)); break; } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/SettingsHeaderScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/SettingsHeaderScene.java new file mode 100644 index 000000000..3fceff27a --- /dev/null +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SettingsHeaderScene.java @@ -0,0 +1,114 @@ +/* + * 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.os.Bundle; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import com.hippo.effect.ripple.RippleSalon; +import com.hippo.ehviewer.R; +import com.hippo.scene.Scene; +import com.hippo.scene.StageActivity; +import com.hippo.util.ViewUtils; +import com.hippo.widget.recyclerview.EasyRecyclerView; + +public final class SettingsHeaderScene extends Scene implements EasyRecyclerView.OnItemClickListener { + + private static final int[] HEADER_ICON_ARRAY = { + R.drawable.ic_cellphone_android_theme_primary, + R.drawable.ic_eh_theme_primary + }; + + private static final int[] HEADER_TITLE_ARRAY = { + R.string._goto, + R.string.username + }; + + private StageActivity mActivity; + + private EasyRecyclerView mRecyclerView; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + mActivity = getStageActivity(); + + mRecyclerView = new EasyRecyclerView(mActivity); + setContentView(mRecyclerView); + + mRecyclerView.setAdapter(new HeaderAdapter()); + mRecyclerView.setLayoutManager(new LinearLayoutManager(mActivity, LinearLayoutManager.VERTICAL, false)); + mRecyclerView.setClipToPadding(false); + mRecyclerView.setOnItemClickListener(this); + mRecyclerView.setSelector(RippleSalon.generateRippleDrawable(mActivity, false)); + } + + @Override + protected void onGetFitPaddingBottom(int b) { + mRecyclerView.setPadding(mRecyclerView.getPaddingLeft(), + mRecyclerView.getPaddingTop(), + mRecyclerView.getPaddingRight(), b); + } + + @Override + public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) { + return false; + } + + private static class HeaderHolder extends RecyclerView.ViewHolder { + + public final ImageView icon; + public final TextView title; + public final View tileDivider; + + public HeaderHolder(View itemView) { + super(itemView); + + icon = (ImageView) itemView.findViewById(R.id.icon); + title = (TextView) itemView.findViewById(R.id.title); + tileDivider = itemView.findViewById(R.id.tile_divider); + } + } + + private class HeaderAdapter extends RecyclerView.Adapter { + + @Override + public HeaderHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = LayoutInflater.from(mActivity).inflate(R.layout.settings_header, parent, false); + return new HeaderHolder(view); + } + + @Override + public void onBindViewHolder(HeaderHolder holder, int position) { + holder.icon.setImageResource(HEADER_ICON_ARRAY[position]); + holder.title.setText(HEADER_TITLE_ARRAY[position]); + ViewUtils.setVisibility(holder.tileDivider, + position == getItemCount() - 1 ? View.INVISIBLE : View.VISIBLE); + } + + @Override + public int getItemCount() { + return HEADER_ICON_ARRAY.length; + } + } +} diff --git a/app/src/main/res/drawable/ic_cellphone_android_theme_primary.xml b/app/src/main/res/drawable/ic_cellphone_android_theme_primary.xml new file mode 100644 index 000000000..191f8b6e7 --- /dev/null +++ b/app/src/main/res/drawable/ic_cellphone_android_theme_primary.xml @@ -0,0 +1,39 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_eh_theme_primary.xml b/app/src/main/res/drawable/ic_eh_theme_primary.xml new file mode 100644 index 000000000..3295ac609 --- /dev/null +++ b/app/src/main/res/drawable/ic_eh_theme_primary.xml @@ -0,0 +1,39 @@ + + + + + + + diff --git a/app/src/main/res/layout/item_gallery_list_detail.xml b/app/src/main/res/layout/item_gallery_list_detail.xml index 3ebe76094..c4d7d2d4f 100644 --- a/app/src/main/res/layout/item_gallery_list_detail.xml +++ b/app/src/main/res/layout/item_gallery_list_detail.xml @@ -29,7 +29,11 @@ android:id="@+id/thumb" android:layout_width="@dimen/list_thumb_width" android:layout_height="@dimen/list_thumb_height" - auto:actualImageScaleType="fitCenter"/> + auto:actualImageScaleType="fitCenter" + auto:failureImage="@drawable/ic_home" + auto:failureImageScaleType="fitCenter" + auto:retryImage="@drawable/ic_settings" + auto:retryImageScaleType="fitCenter"/> + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values-land/dimens.xml b/app/src/main/res/values-land/dimens.xml new file mode 100644 index 000000000..e15c05094 --- /dev/null +++ b/app/src/main/res/values-land/dimens.xml @@ -0,0 +1,22 @@ + + + + + + 72dp + 12dp + + diff --git a/app/src/main/res/values-sw600dp/dimens.xml b/app/src/main/res/values-sw600dp/dimens.xml index e766ed9ee..35a410999 100644 --- a/app/src/main/res/values-sw600dp/dimens.xml +++ b/app/src/main/res/values-sw600dp/dimens.xml @@ -15,6 +15,11 @@ --> + + 72dp + 8dp + 32dp + 48dp diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 7723d50a8..3b33a7ffd 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -15,6 +15,12 @@ --> + + 72dp + 24dp + 16dp + 32dp + 24dp diff --git a/app/src/main/res/values/pathdata.xml b/app/src/main/res/values/pathdata.xml index e8989e337..4f650f88d 100644 --- a/app/src/main/res/values/pathdata.xml +++ b/app/src/main/res/values/pathdata.xml @@ -28,5 +28,7 @@ M12,21.35L10.55,20.03C5.4,15.36 2,12.27 2,8.5C2,5.41 4.42,3 7.5,3C9.24,3 10.91,3.81 12,5.08C13.09,3.81 14.76,3 16.5,3C19.58,3 22,5.41 22,8.5C22,12.27 18.6,15.36 13.45,20.03L12,21.35Z M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z M12,15.5A3.5,3.5 0 0,1 8.5,12A3.5,3.5 0 0,1 12,8.5A3.5,3.5 0 0,1 15.5,12A3.5,3.5 0 0,1 12,15.5M19.43,12.97C19.47,12.65 19.5,12.33 19.5,12C19.5,11.67 19.47,11.34 19.43,11L21.54,9.37C21.73,9.22 21.78,8.95 21.66,8.73L19.66,5.27C19.54,5.05 19.27,4.96 19.05,5.05L16.56,6.05C16.04,5.66 15.5,5.32 14.87,5.07L14.5,2.42C14.46,2.18 14.25,2 14,2H10C9.75,2 9.54,2.18 9.5,2.42L9.13,5.07C8.5,5.32 7.96,5.66 7.44,6.05L4.95,5.05C4.73,4.96 4.46,5.05 4.34,5.27L2.34,8.73C2.21,8.95 2.27,9.22 2.46,9.37L4.57,11C4.53,11.34 4.5,11.67 4.5,12C4.5,12.33 4.53,12.65 4.57,12.97L2.46,14.63C2.27,14.78 2.21,15.05 2.34,15.27L4.34,18.73C4.46,18.95 4.73,19.03 4.95,18.95L7.44,17.94C7.96,18.34 8.5,18.68 9.13,18.93L9.5,21.58C9.54,21.82 9.75,22 10,22H14C14.25,22 14.46,21.82 14.5,21.58L14.87,18.93C15.5,18.67 16.04,18.34 16.56,17.94L19.05,18.95C19.27,19.03 19.54,18.95 19.66,18.73L21.66,15.27C21.78,15.05 21.73,14.78 21.54,14.63L19.43,12.97Z + M17.25,18H6.75V4H17.25M14,21H10V20H14M16,1H8A3,3 0 0,0 5,4V20A3,3 0 0,0 8,23H16A3,3 0 0,0 19,20V4A3,3 0 0,0 16,1Z + M11,5h-8v14h8v-2h-6v-4h6v-2h-6v-4h6V5M13,5h2v6h4V5h2v14h-2v-6h-4v6h-2V5z