Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 00a09782 authored by Fan Zhang's avatar Fan Zhang Committed by android-build-merger
Browse files

Update action bar style in app header UI.

am: be6fab01

Change-Id: I51f4b7900fb1be6631b686915e02333db2df2e9f
parents 8b182839 be6fab01
Loading
Loading
Loading
Loading
+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
+20 −19
Original line number Diff line number Diff line
@@ -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
@@ -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" />
@@ -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>
@@ -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
+1 −0
Original line number Diff line number Diff line
@@ -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>
+1 −1
Original line number Diff line number Diff line
@@ -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"/>
+40 −51
Original line number Diff line number Diff line
@@ -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;
@@ -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;
@@ -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) {
@@ -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);
@@ -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) {
@@ -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