From 0e4ded42316959bd7c730bb819751e5f6e4611c3 Mon Sep 17 00:00:00 2001 From: seven332 Date: Sun, 24 May 2015 21:06:49 +0800 Subject: [PATCH] Add AppbarScene --- .../ui/scene/SettingsHeaderScene.java | 11 ++- .../java/com/hippo/scene/AppbarScene.java | 92 +++++++++++++++++++ .../com/hippo/widget/SimpleImageView.java | 5 + app/src/main/res/drawable/drop_shadow.xml | 25 +++++ .../main/res/drawable/ic_arrow_left_dark.xml | 39 ++++++++ app/src/main/res/layout-v21/scene_appbar.xml | 53 +++++++++++ app/src/main/res/layout/scene_appbar.xml | 59 ++++++++++++ app/src/main/res/values/colors.xml | 2 + app/src/main/res/values/dimens.xml | 3 + app/src/main/res/values/pathdata.xml | 1 + 10 files changed, 288 insertions(+), 2 deletions(-) create mode 100644 app/src/main/java/com/hippo/scene/AppbarScene.java create mode 100644 app/src/main/res/drawable/drop_shadow.xml create mode 100644 app/src/main/res/drawable/ic_arrow_left_dark.xml create mode 100644 app/src/main/res/layout-v21/scene_appbar.xml create mode 100644 app/src/main/res/layout/scene_appbar.xml 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 index 3fceff27a..133fc05f1 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/SettingsHeaderScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SettingsHeaderScene.java @@ -26,12 +26,12 @@ import android.widget.TextView; import com.hippo.effect.ripple.RippleSalon; import com.hippo.ehviewer.R; -import com.hippo.scene.Scene; +import com.hippo.scene.AppbarScene; 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 { +public final class SettingsHeaderScene extends AppbarScene implements EasyRecyclerView.OnItemClickListener { private static final int[] HEADER_ICON_ARRAY = { R.drawable.ic_cellphone_android_theme_primary, @@ -52,6 +52,8 @@ public final class SettingsHeaderScene extends Scene implements EasyRecyclerView super.onCreate(savedInstanceState); mActivity = getStageActivity(); + setTitle(R.string.signout); + setIcon(R.drawable.ic_arrow_left_dark); mRecyclerView = new EasyRecyclerView(mActivity); setContentView(mRecyclerView); @@ -70,6 +72,11 @@ public final class SettingsHeaderScene extends Scene implements EasyRecyclerView mRecyclerView.getPaddingRight(), b); } + @Override + public void onIconClick() { + finish(); + } + @Override public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) { return false; diff --git a/app/src/main/java/com/hippo/scene/AppbarScene.java b/app/src/main/java/com/hippo/scene/AppbarScene.java new file mode 100644 index 000000000..a900deb8c --- /dev/null +++ b/app/src/main/java/com/hippo/scene/AppbarScene.java @@ -0,0 +1,92 @@ +/* + * 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.scene; + +import android.annotation.DrawableRes; +import android.annotation.Nullable; +import android.annotation.StringRes; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.TextView; + +import com.hippo.effect.ripple.RippleSalon; +import com.hippo.ehviewer.R; +import com.hippo.util.ViewUtils; +import com.hippo.widget.SimpleImageView; + +public class AppbarScene extends Scene { + + private SimpleImageView mIcon; + private TextView mTitle; + private FrameLayout mContent; + + @Override + protected void setContentView(int resId) { + getStageActivity().getLayoutInflater().inflate(resId, mContent); + } + + @Override + protected void setContentView(View view) { + mContent.addView(view, new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + } + + @Override + public View findViewById(int resId) { + return mContent.findViewById(resId); + } + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + super.setContentView(R.layout.scene_appbar); + + mIcon = (SimpleImageView) super.findViewById(R.id.appbar_icon); + mTitle = (TextView) super.findViewById(R.id.appbar_title); + mContent = (FrameLayout) super.findViewById(R.id.appbar_content); + + RippleSalon.addRipple(mIcon, true); + mIcon.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onIconClick(); + } + }); + } + + public void onIconClick() { + } + + public void setIcon(@DrawableRes int resId) { + mIcon.setDrawable(resId); + ViewUtils.setVisibility(mIcon, resId == -1 ? View.GONE : View.VISIBLE); + } + + public void setIcon(Drawable icon) { + mIcon.setDrawable(icon); + ViewUtils.setVisibility(mIcon, icon == null ? View.GONE : View.VISIBLE); + } + + public void setTitle(@StringRes int resId) { + mTitle.setText(resId); + } + + public void setTitle(String title) { + mTitle.setText(title); + } +} diff --git a/app/src/main/java/com/hippo/widget/SimpleImageView.java b/app/src/main/java/com/hippo/widget/SimpleImageView.java index 0a9f061d1..ac55e23b6 100644 --- a/app/src/main/java/com/hippo/widget/SimpleImageView.java +++ b/app/src/main/java/com/hippo/widget/SimpleImageView.java @@ -15,6 +15,7 @@ package com.hippo.widget; +import android.annotation.DrawableRes; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; @@ -47,6 +48,10 @@ public class SimpleImageView extends View implements Drawable.Callback { a.recycle(); } + public void setDrawable(@DrawableRes int resId) { + setDrawable(getContext().getResources().getDrawable(resId)); + } + public void setDrawable(Drawable drawable) { if (mDrawable != null) { mDrawable.setCallback(null); diff --git a/app/src/main/res/drawable/drop_shadow.xml b/app/src/main/res/drawable/drop_shadow.xml new file mode 100644 index 000000000..9fc2ed158 --- /dev/null +++ b/app/src/main/res/drawable/drop_shadow.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/app/src/main/res/drawable/ic_arrow_left_dark.xml b/app/src/main/res/drawable/ic_arrow_left_dark.xml new file mode 100644 index 000000000..53fbd7b8a --- /dev/null +++ b/app/src/main/res/drawable/ic_arrow_left_dark.xml @@ -0,0 +1,39 @@ + + + + + + + diff --git a/app/src/main/res/layout-v21/scene_appbar.xml b/app/src/main/res/layout-v21/scene_appbar.xml new file mode 100644 index 000000000..1c8fe4e28 --- /dev/null +++ b/app/src/main/res/layout-v21/scene_appbar.xml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/scene_appbar.xml b/app/src/main/res/layout/scene_appbar.xml new file mode 100644 index 000000000..c004ac296 --- /dev/null +++ b/app/src/main/res/layout/scene_appbar.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index b03a04dcc..a9a02d7d2 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -92,6 +92,8 @@ #ff333333 #ffeeff41 + #38000000 + #ffe53935 @color/material_purple_a700 #ff1d87e4 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 3b33a7ffd..ecba24f6f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -15,6 +15,9 @@ --> + + 56dp + 72dp 24dp diff --git a/app/src/main/res/values/pathdata.xml b/app/src/main/res/values/pathdata.xml index f107b0435..6c0abc6b4 100644 --- a/app/src/main/res/values/pathdata.xml +++ b/app/src/main/res/values/pathdata.xml @@ -18,6 +18,7 @@ M20,12A8,8 0 0,0 12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12M22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2A10,10 0 0,1 22,12M15.5,8C16.3,8 17,8.7 17,9.5C17,10.3 16.3,11 15.5,11C14.7,11 14,10.3 14,9.5C14,8.7 14.7,8 15.5,8M10,9.5C10,10.3 9.3,11 8.5,11C7.7,11 7,10.3 7,9.5C7,8.7 7.7,8 8.5,8C9.3,8 10,8.7 10,9.5M12,14C13.75,14 15.29,14.72 16.19,15.81L14.77,17.23C14.32,16.5 13.25,16 12,16C10.75,16 9.68,16.5 9.23,17.23L7.81,15.81C8.71,14.72 10.25,14 12,14Z M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z M15.07,11.25L14.17,12.17C13.45,12.89 13,13.5 13,15H11V14.5C11,13.39 11.45,12.39 12.17,11.67L13.41,10.41C13.78,10.05 14,9.55 14,9C14,7.89 13.1,7 12,7A2,2 0 0,0 10,9H8A4,4 0 0,1 12,5A4,4 0 0,1 16,9C16,9.88 15.64,10.67 15.07,11.25M13,19H11V17H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12C22,6.47 17.5,2 12,2Z + M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z M10.5,7A6.5,6.5 0 0,0 4,13.5A6.5,6.5 0 0,0 10.5,20H14V18H10.5C8,18 6,16 6,13.5C6,11 8,9 10.5,9H16.17L13.09,12.09L14.5,13.5L20,8L14.5,2.5L13.08,3.91L16.17,7H10.5M18,18H16V20H18V18Z M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z