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

Commit d06aaa8f authored by Antony Sargent's avatar Antony Sargent
Browse files

New design for instant apps in app details header

Bug: 35098444
Test: make RunSettingsRoboTests

In the previous design for instant apps, some metadata about the app
such as developer title, maturity rating, etc. was going to be shown
in the app header. In the latest design, we instead are just showing
a little label that says "Instant app".

The two CL's for this topic work together to change this:

frameworks/base : adds code to work around the problem that
robolectric doesn't know about the new isInstantApp method of the
ApplicationInfo class, so we need to avoid calling it during tests.

pacakges/apps/Settings: removes the code that previously displayed
the instant app metadata, and instead just insert the "Instant app"
label.

Change-Id: I2cbc70bf4827c401e862c58ea4ca7f8f9ba1cf58
parent bee2554f
Loading
Loading
Loading
Loading
+11 −34
Original line number Diff line number Diff line
@@ -88,7 +88,8 @@
                android:paddingTop="8dp"/>

            <TextView
                android:id="@+id/app_detail_summary"
                android:id="@+id/install_type"
                android:visibility="gone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="start"
@@ -97,42 +98,18 @@
                android:textAppearance="@android:style/TextAppearance.Material.Body1"
                android:textColor="?android:attr/textColorSecondary"/>

        </LinearLayout>

    </RelativeLayout>

            <TextView
        android:id="@+id/instant_app_developer_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:visibility="gone"/>

    <LinearLayout
        android:id="@+id/instant_app_maturity"
        android:layout_width="wrap_content"
                android:id="@+id/app_detail_summary"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_vertical"
        android:visibility="gone">

        <ImageView
            android:id="@+id/instant_app_maturity_icon"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:scaleType="fitXY"/>
        <TextView
            android:id="@+id/instant_app_maturity_text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
                android:gravity="start"
                android:singleLine="true"
                android:ellipsize="marquee"
                android:textAppearance="@android:style/TextAppearance.Material.Body1"
                android:textColor="?android:attr/textColorSecondary"/>

        </LinearLayout>

    <TextView
        android:id="@+id/instant_app_monetization"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:visibility="gone"/>
    </RelativeLayout>

</LinearLayout>
 No newline at end of file
+3 −0
Original line number Diff line number Diff line
@@ -8220,6 +8220,9 @@
    <!-- On status for the automatic storage manager. [CHAR_LIMIT=10] -->
    <string name="storage_manager_indicator_on">On</string>
    <!-- Added as the value of a header field indicating this is an instant app (as opposed to installed normally) -->
    <string name="install_type_instant">Instant app</string>
    <!-- Title of games app storage screen [CHAR LIMIT=30] -->
    <string name="game_storage_settings">Games</string>
+6 −24
Original line number Diff line number Diff line
@@ -37,7 +37,6 @@ import android.widget.TextView;
import com.android.settings.AppHeader;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.applications.instantapps.InstantAppDetails;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.ApplicationsState;

@@ -81,7 +80,7 @@ public class AppHeaderController {
    @ActionType
    private int mRightAction;

    private InstantAppDetails mInstantAppDetails;
    private boolean mIsInstantApp;

    public AppHeaderController(Context context, Fragment fragment, View appHeader) {
        mContext = context;
@@ -154,8 +153,8 @@ public class AppHeaderController {
        return this;
    }

    public AppHeaderController setInstantAppDetails(InstantAppDetails instantAppDetails) {
        mInstantAppDetails = instantAppDetails;
    public AppHeaderController setIsInstantApp(boolean isInstantApp) {
        this.mIsInstantApp = isInstantApp;
        return this;
    }

@@ -220,26 +219,9 @@ public class AppHeaderController {
            bindAppHeaderButtons();
        }

        if (mInstantAppDetails != null) {
            setText(R.id.instant_app_developer_title, mInstantAppDetails.developerTitle);
            View maturity = mAppHeader.findViewById(R.id.instant_app_maturity);

            if (maturity != null) {
                String maturityText = mInstantAppDetails.maturityRatingString;
                Drawable maturityIcon = mInstantAppDetails.maturityRatingIcon;
                if (!TextUtils.isEmpty(maturityText) || maturityIcon != null) {
                    maturity.setVisibility(View.VISIBLE);
                }
                setText(R.id.instant_app_maturity_text, maturityText);
                if (maturityIcon != null) {
                    ImageView maturityIconView = (ImageView) mAppHeader.findViewById(
                            R.id.instant_app_maturity_icon);
                    if (maturityIconView != null) {
                        maturityIconView.setImageDrawable(maturityIcon);
                    }
                }
            }
            setText(R.id.instant_app_monetization, mInstantAppDetails.monetizationNotice);
        if (mIsInstantApp) {
            setText(R.id.install_type,
                    mAppHeader.getResources().getString(R.string.install_type_instant));
        }

        return mAppHeader;
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.util.Log;

import com.android.settings.AppHeader;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.applications.AppUtils;

import static com.android.settings.applications.AppHeaderController.ActionType;

@@ -52,6 +53,7 @@ public abstract class AppInfoWithHeader extends AppInfoBase {
                    .setIcon(mPackageInfo.applicationInfo.loadIcon(mPm))
                    .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
                    .setSummary(mPackageInfo)
                    .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
                    .setPackageName(mPackageName)
                    .setUid(mPackageInfo.applicationInfo.uid)
                    .setButtonActions(ActionType.ACTION_APP_INFO, ActionType.ACTION_NONE)
+1 −0
Original line number Diff line number Diff line
@@ -563,6 +563,7 @@ public class InstalledAppDetails extends AppInfoBase
                    .setLabel(mAppEntry)
                    .setIcon(mAppEntry)
                    .setSummary(getString(getInstallationStatus(mAppEntry.info)))
                    .setIsInstantApp(AppUtils.isInstant(mPackageInfo.applicationInfo))
                    .done(false /* rebindActions */);
            mVersionPreference.setSummary(getString(R.string.version_text, pkgInfo.versionName));
        } else {
Loading