Loading res/drawable/action_bar_dropshadow.xml 0 → 100644 +26 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2017 The Android Open Source Project 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. --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:startColor="#4D000000" android:endColor="@android:color/transparent" android:type="linear" /> <size android:height="8dp" /> </shape> No newline at end of file res/layout/app_details.xml +20 −19 Original line number Diff line number Diff line Loading @@ -17,30 +17,24 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/app_snippet" style="@style/EntityHeader" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top" android:orientation="vertical" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:paddingTop="24dp" android:paddingBottom="24dp" android:clipChildren="false" android:clipToPadding="false"> android:orientation="vertical"> <!-- App snippet with buttons --> <RelativeLayout android:id="@+id/app_snippet" style="@style/EntityHeader" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="8dp" android:clipChildren="false" android:clipToPadding="false"> android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="0dp" android:paddingTop="24dp" android:paddingBottom="24dp"> <FrameLayout android:id="@+id/app_icon_frame" android:layout_width="80dp" android:layout_height="80dp" android:layout_width="56dp" android:layout_height="56dp" android:clipChildren="false" android:clipToPadding="false"> <ImageView Loading @@ -54,8 +48,7 @@ android:layout_width="22dp" android:layout_height="22dp" android:layout_gravity="end|bottom" android:layout_margin="8dp" android:visibility="gone" android:layout_margin="4dp" android:elevation="20dp" android:background="@drawable/ic_instant_apps_badge_bg" android:src="@drawable/ic_instant_apps_badge" /> Loading @@ -70,19 +63,22 @@ <ImageButton android:id="@+id/right_button" style="@android:style/Widget.Material.Button.Borderless" style="?android:attr/actionOverflowButtonStyle" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="0dp" android:minWidth="@dimen/min_tap_target_size" android:src="@drawable/ic_settings_24dp" android:tint="?android:attr/colorAccent"/> <ImageButton android:id="@+id/left_button" style="@android:style/Widget.Material.Button.Borderless" style="?android:attr/actionOverflowButtonStyle" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="0dp" android:minWidth="@dimen/min_tap_target_size" android:src="@null" android:tint="?android:attr/colorAccent"/> </LinearLayout> Loading Loading @@ -131,4 +127,9 @@ </RelativeLayout> <!-- Drop shadow --> <View android:layout_width="match_parent" android:layout_height="5dp" android:background="@drawable/action_bar_dropshadow"/> </LinearLayout> No newline at end of file res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ <dimen name="action_bar_switch_padding">16dip</dimen> <dimen name="app_icon_size">40dip</dimen> <dimen name="min_tap_target_size">48dp</dimen> <dimen name="screen_margin_sides">64dip</dimen> <dimen name="screen_margin_top">72dip</dimen> <dimen name="screen_margin_bottom">48dip</dimen> Loading res/values/styles.xml +1 −1 Original line number Diff line number Diff line Loading @@ -416,7 +416,7 @@ <style name="TextAppearance.EntityHeaderTitle" parent="@android:style/TextAppearance.Material.Subhead"> <item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:textSize">24sp</item> <item name="android:textSize">16sp</item> </style> <style name="AppActionPrimaryButton" parent="android:Widget.Material.Button.Colored"/> Loading src/com/android/settings/applications/AppHeaderController.java +40 −51 Original line number Diff line number Diff line Loading @@ -18,25 +18,25 @@ package com.android.settings.applications; import android.annotation.IdRes; import android.annotation.UserIdInt; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.Outline; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewOutlineProvider; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import com.android.settings.AppHeader; import com.android.settings.R; import com.android.settings.Utils; Loading Loading @@ -69,7 +69,6 @@ public class AppHeaderController { private final Fragment mFragment; private final int mMetricsCategory; private final View mAppHeader; private final int mIconElevation; private Drawable mIcon; private CharSequence mLabel; Loading @@ -96,8 +95,6 @@ public class AppHeaderController { mAppHeader = LayoutInflater.from(fragment.getContext()) .inflate(R.layout.app_details, null /* root */); } mIconElevation = mContext.getResources() .getDimensionPixelSize(R.dimen.launcher_icon_elevation); } public AppHeaderController setIcon(Drawable icon) { Loading Loading @@ -163,58 +160,23 @@ public class AppHeaderController { return this; } /** * Binds app header view and data from {@code PackageInfo} and {@code AppEntry}. */ public void bindAppHeader(PackageInfo packageInfo, ApplicationsState.AppEntry appEntry) { final String versionName = packageInfo == null ? null : packageInfo.versionName; final Resources res = mAppHeader.getResources(); // Set Icon final ImageView iconView = (ImageView) mAppHeader.findViewById(R.id.app_detail_icon); if (appEntry.icon != null) { iconView.setImageDrawable(appEntry.icon.getConstantState().newDrawable(res)); } // Set application name. final TextView labelView = (TextView) mAppHeader.findViewById(R.id.app_detail_title); labelView.setText(appEntry.label); // Version number of application final TextView appVersion = (TextView) mAppHeader.findViewById(R.id.app_detail_summary); if (!TextUtils.isEmpty(versionName)) { appVersion.setSelected(true); appVersion.setVisibility(View.VISIBLE); appVersion.setText(res.getString(R.string.version_text, String.valueOf(versionName))); } else { appVersion.setVisibility(View.INVISIBLE); } } /** * Done mutating appheader, rebinds everything and return a new {@link LayoutPreference}. */ public LayoutPreference done(Context context) { final LayoutPreference pref = new LayoutPreference(context, done()); public LayoutPreference done(Activity activity, Context uiContext) { final LayoutPreference pref = new LayoutPreference(uiContext, done(activity)); // Makes sure it's the first preference onscreen. pref.setOrder(-1000); pref.setKey(PREF_KEY_APP_HEADER); return pref; } /** * Done mutating appheader, rebinds everything. */ public View done() { return done(true); } /** * Done mutating appheader, rebinds everything (optionally skip rebinding buttons). */ public View done(boolean rebindActions) { ImageView iconView = (ImageView) mAppHeader.findViewById(R.id.app_detail_icon); public View done(Activity activity, boolean rebindActions) { styleActionBar(activity); ImageView iconView = mAppHeader.findViewById(R.id.app_detail_icon); if (iconView != null) { iconView.setImageDrawable(mIcon); ImageView badgeView = mAppHeader.findViewById(R.id.app_icon_instant_apps_badge); Loading @@ -239,12 +201,39 @@ public class AppHeaderController { /** * Only binds app header with button actions. */ public void bindAppHeaderButtons() { ImageButton leftButton = (ImageButton) mAppHeader.findViewById(R.id.left_button); ImageButton rightButton = (ImageButton) mAppHeader.findViewById(R.id.right_button); public AppHeaderController bindAppHeaderButtons() { ImageButton leftButton = mAppHeader.findViewById(R.id.left_button); ImageButton rightButton = mAppHeader.findViewById(R.id.right_button); bindButton(leftButton, mLeftAction); bindButton(rightButton, mRightAction); return this; } public AppHeaderController styleActionBar(Activity activity) { if (activity == null) { Log.w(TAG, "No activity, cannot style actionbar."); return this; } final ActionBar actionBar = activity.getActionBar(); if (actionBar == null) { Log.w(TAG, "No actionbar, cannot style actionbar."); return this; } final Drawable appHeaderBackground = mAppHeader.findViewById(R.id.app_snippet).getBackground(); actionBar.setBackgroundDrawable(appHeaderBackground); actionBar.setElevation(0); return this; } /** * Done mutating appheader, rebinds everything. */ @VisibleForTesting View done(Activity activity) { return done(activity, true /* rebindActions */); } private void bindButton(ImageButton button, @ActionType int action) { Loading Loading @@ -328,7 +317,7 @@ public class AppHeaderController { } private void setText(@IdRes int id, CharSequence text) { TextView textView = (TextView) mAppHeader.findViewById(id); TextView textView = mAppHeader.findViewById(id); if (textView != null) { textView.setText(text); textView.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE); Loading Loading
res/drawable/action_bar_dropshadow.xml 0 → 100644 +26 −0 Original line number Diff line number Diff line <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2017 The Android Open Source Project 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. --> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <gradient android:angle="270" android:startColor="#4D000000" android:endColor="@android:color/transparent" android:type="linear" /> <size android:height="8dp" /> </shape> No newline at end of file
res/layout/app_details.xml +20 −19 Original line number Diff line number Diff line Loading @@ -17,30 +17,24 @@ <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/app_snippet" style="@style/EntityHeader" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal|top" android:orientation="vertical" android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" android:paddingTop="24dp" android:paddingBottom="24dp" android:clipChildren="false" android:clipToPadding="false"> android:orientation="vertical"> <!-- App snippet with buttons --> <RelativeLayout android:id="@+id/app_snippet" style="@style/EntityHeader" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="8dp" android:clipChildren="false" android:clipToPadding="false"> android:paddingStart="?android:attr/listPreferredItemPaddingStart" android:paddingEnd="0dp" android:paddingTop="24dp" android:paddingBottom="24dp"> <FrameLayout android:id="@+id/app_icon_frame" android:layout_width="80dp" android:layout_height="80dp" android:layout_width="56dp" android:layout_height="56dp" android:clipChildren="false" android:clipToPadding="false"> <ImageView Loading @@ -54,8 +48,7 @@ android:layout_width="22dp" android:layout_height="22dp" android:layout_gravity="end|bottom" android:layout_margin="8dp" android:visibility="gone" android:layout_margin="4dp" android:elevation="20dp" android:background="@drawable/ic_instant_apps_badge_bg" android:src="@drawable/ic_instant_apps_badge" /> Loading @@ -70,19 +63,22 @@ <ImageButton android:id="@+id/right_button" style="@android:style/Widget.Material.Button.Borderless" style="?android:attr/actionOverflowButtonStyle" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="0dp" android:minWidth="@dimen/min_tap_target_size" android:src="@drawable/ic_settings_24dp" android:tint="?android:attr/colorAccent"/> <ImageButton android:id="@+id/left_button" style="@android:style/Widget.Material.Button.Borderless" style="?android:attr/actionOverflowButtonStyle" android:layout_width="wrap_content" android:layout_weight="1" android:layout_height="0dp" android:minWidth="@dimen/min_tap_target_size" android:src="@null" android:tint="?android:attr/colorAccent"/> </LinearLayout> Loading Loading @@ -131,4 +127,9 @@ </RelativeLayout> <!-- Drop shadow --> <View android:layout_width="match_parent" android:layout_height="5dp" android:background="@drawable/action_bar_dropshadow"/> </LinearLayout> No newline at end of file
res/values/dimens.xml +1 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ <dimen name="action_bar_switch_padding">16dip</dimen> <dimen name="app_icon_size">40dip</dimen> <dimen name="min_tap_target_size">48dp</dimen> <dimen name="screen_margin_sides">64dip</dimen> <dimen name="screen_margin_top">72dip</dimen> <dimen name="screen_margin_bottom">48dip</dimen> Loading
res/values/styles.xml +1 −1 Original line number Diff line number Diff line Loading @@ -416,7 +416,7 @@ <style name="TextAppearance.EntityHeaderTitle" parent="@android:style/TextAppearance.Material.Subhead"> <item name="android:textColor">?android:attr/textColorPrimary</item> <item name="android:textSize">24sp</item> <item name="android:textSize">16sp</item> </style> <style name="AppActionPrimaryButton" parent="android:Widget.Material.Button.Colored"/> Loading
src/com/android/settings/applications/AppHeaderController.java +40 −51 Original line number Diff line number Diff line Loading @@ -18,25 +18,25 @@ package com.android.settings.applications; import android.annotation.IdRes; import android.annotation.UserIdInt; import android.app.ActionBar; import android.app.Activity; import android.app.Fragment; import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.ResolveInfo; import android.content.res.Resources; import android.graphics.Outline; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.os.UserHandle; import android.support.annotation.IntDef; import android.support.annotation.VisibleForTesting; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewOutlineProvider; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; import com.android.settings.AppHeader; import com.android.settings.R; import com.android.settings.Utils; Loading Loading @@ -69,7 +69,6 @@ public class AppHeaderController { private final Fragment mFragment; private final int mMetricsCategory; private final View mAppHeader; private final int mIconElevation; private Drawable mIcon; private CharSequence mLabel; Loading @@ -96,8 +95,6 @@ public class AppHeaderController { mAppHeader = LayoutInflater.from(fragment.getContext()) .inflate(R.layout.app_details, null /* root */); } mIconElevation = mContext.getResources() .getDimensionPixelSize(R.dimen.launcher_icon_elevation); } public AppHeaderController setIcon(Drawable icon) { Loading Loading @@ -163,58 +160,23 @@ public class AppHeaderController { return this; } /** * Binds app header view and data from {@code PackageInfo} and {@code AppEntry}. */ public void bindAppHeader(PackageInfo packageInfo, ApplicationsState.AppEntry appEntry) { final String versionName = packageInfo == null ? null : packageInfo.versionName; final Resources res = mAppHeader.getResources(); // Set Icon final ImageView iconView = (ImageView) mAppHeader.findViewById(R.id.app_detail_icon); if (appEntry.icon != null) { iconView.setImageDrawable(appEntry.icon.getConstantState().newDrawable(res)); } // Set application name. final TextView labelView = (TextView) mAppHeader.findViewById(R.id.app_detail_title); labelView.setText(appEntry.label); // Version number of application final TextView appVersion = (TextView) mAppHeader.findViewById(R.id.app_detail_summary); if (!TextUtils.isEmpty(versionName)) { appVersion.setSelected(true); appVersion.setVisibility(View.VISIBLE); appVersion.setText(res.getString(R.string.version_text, String.valueOf(versionName))); } else { appVersion.setVisibility(View.INVISIBLE); } } /** * Done mutating appheader, rebinds everything and return a new {@link LayoutPreference}. */ public LayoutPreference done(Context context) { final LayoutPreference pref = new LayoutPreference(context, done()); public LayoutPreference done(Activity activity, Context uiContext) { final LayoutPreference pref = new LayoutPreference(uiContext, done(activity)); // Makes sure it's the first preference onscreen. pref.setOrder(-1000); pref.setKey(PREF_KEY_APP_HEADER); return pref; } /** * Done mutating appheader, rebinds everything. */ public View done() { return done(true); } /** * Done mutating appheader, rebinds everything (optionally skip rebinding buttons). */ public View done(boolean rebindActions) { ImageView iconView = (ImageView) mAppHeader.findViewById(R.id.app_detail_icon); public View done(Activity activity, boolean rebindActions) { styleActionBar(activity); ImageView iconView = mAppHeader.findViewById(R.id.app_detail_icon); if (iconView != null) { iconView.setImageDrawable(mIcon); ImageView badgeView = mAppHeader.findViewById(R.id.app_icon_instant_apps_badge); Loading @@ -239,12 +201,39 @@ public class AppHeaderController { /** * Only binds app header with button actions. */ public void bindAppHeaderButtons() { ImageButton leftButton = (ImageButton) mAppHeader.findViewById(R.id.left_button); ImageButton rightButton = (ImageButton) mAppHeader.findViewById(R.id.right_button); public AppHeaderController bindAppHeaderButtons() { ImageButton leftButton = mAppHeader.findViewById(R.id.left_button); ImageButton rightButton = mAppHeader.findViewById(R.id.right_button); bindButton(leftButton, mLeftAction); bindButton(rightButton, mRightAction); return this; } public AppHeaderController styleActionBar(Activity activity) { if (activity == null) { Log.w(TAG, "No activity, cannot style actionbar."); return this; } final ActionBar actionBar = activity.getActionBar(); if (actionBar == null) { Log.w(TAG, "No actionbar, cannot style actionbar."); return this; } final Drawable appHeaderBackground = mAppHeader.findViewById(R.id.app_snippet).getBackground(); actionBar.setBackgroundDrawable(appHeaderBackground); actionBar.setElevation(0); return this; } /** * Done mutating appheader, rebinds everything. */ @VisibleForTesting View done(Activity activity) { return done(activity, true /* rebindActions */); } private void bindButton(ImageButton button, @ActionType int action) { Loading Loading @@ -328,7 +317,7 @@ public class AppHeaderController { } private void setText(@IdRes int id, CharSequence text) { TextView textView = (TextView) mAppHeader.findViewById(id); TextView textView = mAppHeader.findViewById(id); if (textView != null) { textView.setText(text); textView.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE); Loading