summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Prevot <nprevot@google.com>2016-01-21 13:58:57 +0000
committerNicolas Prevot <nprevot@google.com>2016-02-08 16:03:33 +0000
commit3d68a3d2985367feecb1e1dd8da5d219e9e23d3e (patch)
tree78d8bef8946403829d7f1a69d4c687d3834db466
parentfc98d5780a1ce96277b8a962e10a35401af2ef78 (diff)
downloadandroid_packages_apps_ManagedProvisioning-3d68a3d2985367feecb1e1dd8da5d219e9e23d3e.tar.gz
android_packages_apps_ManagedProvisioning-3d68a3d2985367feecb1e1dd8da5d219e9e23d3e.tar.bz2
android_packages_apps_ManagedProvisioning-3d68a3d2985367feecb1e1dd8da5d219e9e23d3e.zip
Update layout of ManagedProvisioning.
Show the logo inside the illustration. BUG:26899656 BUG:27025982 Change-Id: I0e18244ece41cfd5dedaf3368fa83edefc56b490
-rw-r--r--res/drawable-hdpi/ic_corp_icon.pngbin0 -> 2851 bytes
-rw-r--r--res/drawable-mdpi/ic_corp_icon.pngbin0 -> 2079 bytes
-rw-r--r--res/drawable-xhdpi/ic_corp_icon.pngbin0 -> 3999 bytes
-rw-r--r--res/drawable-xxhdpi/ic_corp_icon.pngbin0 -> 6220 bytes
-rw-r--r--res/drawable-xxxhdpi/ic_corp_icon.pngbin0 -> 6417 bytes
-rw-r--r--res/layout/progress.xml18
-rw-r--r--res/layout/user_consent_main_text.xml10
-rw-r--r--res/values/dimens.xml4
-rw-r--r--res/values/styles.xml16
-rw-r--r--src/com/android/managedprovisioning/DeviceOwnerPreProvisioningActivity.java7
-rw-r--r--src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java3
-rw-r--r--src/com/android/managedprovisioning/LogoUtils.java19
-rw-r--r--src/com/android/managedprovisioning/MessageParser.java4
-rw-r--r--src/com/android/managedprovisioning/ProfileOwnerPreProvisioningActivity.java7
-rw-r--r--src/com/android/managedprovisioning/ProfileOwnerProvisioningActivity.java3
-rw-r--r--src/com/android/managedprovisioning/SetupLayoutActivity.java121
16 files changed, 163 insertions, 49 deletions
diff --git a/res/drawable-hdpi/ic_corp_icon.png b/res/drawable-hdpi/ic_corp_icon.png
new file mode 100644
index 00000000..d83a862d
--- /dev/null
+++ b/res/drawable-hdpi/ic_corp_icon.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_corp_icon.png b/res/drawable-mdpi/ic_corp_icon.png
new file mode 100644
index 00000000..79372b21
--- /dev/null
+++ b/res/drawable-mdpi/ic_corp_icon.png
Binary files differ
diff --git a/res/drawable-xhdpi/ic_corp_icon.png b/res/drawable-xhdpi/ic_corp_icon.png
new file mode 100644
index 00000000..3626c7d0
--- /dev/null
+++ b/res/drawable-xhdpi/ic_corp_icon.png
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_corp_icon.png b/res/drawable-xxhdpi/ic_corp_icon.png
new file mode 100644
index 00000000..d33319f3
--- /dev/null
+++ b/res/drawable-xxhdpi/ic_corp_icon.png
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_corp_icon.png b/res/drawable-xxxhdpi/ic_corp_icon.png
new file mode 100644
index 00000000..359e210e
--- /dev/null
+++ b/res/drawable-xxxhdpi/ic_corp_icon.png
Binary files differ
diff --git a/res/layout/progress.xml b/res/layout/progress.xml
index a011b787..49c40d3d 100644
--- a/res/layout/progress.xml
+++ b/res/layout/progress.xml
@@ -17,12 +17,12 @@
*/
-->
<com.android.setupwizardlib.SetupWizardLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:id="@+id/setup_wizard_layout"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <TextView
- style="@style/MainTextContainer"
- android:id="@+id/prog_text" />
-</com.android.setupwizardlib.SetupWizardLayout> \ No newline at end of file
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/setup_wizard_layout"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <TextView
+ style="@style/MainTextContainer"
+ android:id="@+id/prog_text" />
+</com.android.setupwizardlib.SetupWizardLayout>
diff --git a/res/layout/user_consent_main_text.xml b/res/layout/user_consent_main_text.xml
index 99ae8639..0d6d15a9 100644
--- a/res/layout/user_consent_main_text.xml
+++ b/res/layout/user_consent_main_text.xml
@@ -19,16 +19,6 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/MainTextContainer"
android:orientation="vertical">
- <!-- This ImageView is a mock -->
- <ImageView
- android:id="@+id/organisation_logo_view"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:adjustViewBounds="true"
- android:maxWidth="60dp"
- android:maxHeight="60dp"
- android:scaleType="centerInside"
- android:visibility="gone"/>
<TextView
android:id="@+id/user_consent_message"
style="@style/MainText"
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index a77dc65f..8f90d473 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -44,4 +44,8 @@
<!-- MDM app info -->
<dimen name="mdm_app_name_padding_start">16dp</dimen>
<dimen name="icon_width_height">56dp</dimen>
+
+ <dimen name="logo_padding_bottom">24dp</dimen>
+ <dimen name="max_logo_width">140dp</dimen>
+ <dimen name="max_logo_height">86dp</dimen>
</resources>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 39e244bb..3138116f 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -19,13 +19,15 @@
<resources>
<style name="SetupWorkSpaceTheme" parent="SuwThemeMaterial.Light" >
- <item name="android:windowActionBar">false</item>
- <item name="android:windowNoTitle">true</item>
- <item name="android:colorPrimary">@color/orange</item>
- <item name="android:colorAccent">@color/accent</item>
- <item name="android:colorPrimaryDark">@color/orange</item>
- <item name="android:windowBackground">@color/light_gray</item>
- <item name="android:indeterminateTint">@color/teal</item>
+ <item name="android:windowActionBar">false</item>
+ <item name="android:windowNoTitle">true</item>
+ <item name="android:colorPrimary">@color/orange</item>
+ <item name="android:colorAccent">@color/accent</item>
+ <item name="android:colorPrimaryDark">@color/orange</item>
+ <item name="android:windowBackground">@color/light_gray</item>
+ <item name="android:indeterminateTint">@color/teal</item>
+ <item name="android:windowLightStatusBar">true</item>
+ <item name="android:statusBarColor">@color/white</item>
</style>
<style name="TextOrCheckBox">
<item name="android:textColor">@color/text_black</item>
diff --git a/src/com/android/managedprovisioning/DeviceOwnerPreProvisioningActivity.java b/src/com/android/managedprovisioning/DeviceOwnerPreProvisioningActivity.java
index 32348dad..f348d3dd 100644
--- a/src/com/android/managedprovisioning/DeviceOwnerPreProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/DeviceOwnerPreProvisioningActivity.java
@@ -135,6 +135,9 @@ public class DeviceOwnerPreProvisioningActivity extends SetupLayoutActivity
e.getMessage());
return;
}
+ if (mParams != null) {
+ maybeSetLogoAndMainColor(mParams.mainColor);
+ }
// Ask to encrypt the device before proceeding
if (!(EncryptDeviceActivity.isPhysicalDeviceEncrypted()
@@ -170,9 +173,6 @@ public class DeviceOwnerPreProvisioningActivity extends SetupLayoutActivity
@Override
protected void onResume() {
super.onResume();
- if (mParams != null) {
- setStatusBarColor(mParams.mainColor);
- }
setTitle(R.string.setup_device_start_setup);
}
@@ -247,7 +247,6 @@ public class DeviceOwnerPreProvisioningActivity extends SetupLayoutActivity
TextView mdmInfoTextView = (TextView) findViewById(R.id.mdm_info_message);
mdmInfoTextView.setText(R.string.the_following_is_your_mdm_for_device);
setMdmInfo();
- LogoUtils.setOrganisationLogo(R.id.organisation_logo_view, this);
}
}
diff --git a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
index 012dbcc3..32f58955 100644
--- a/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/DeviceOwnerProvisioningActivity.java
@@ -103,6 +103,9 @@ public class DeviceOwnerProvisioningActivity extends SetupLayoutActivity {
// Load the ProvisioningParams (from message in Intent).
mParams = (ProvisioningParams) getIntent().getParcelableExtra(
ProvisioningParams.EXTRA_PROVISIONING_PARAMS);
+ if (mParams != null) {
+ maybeSetLogoAndMainColor(mParams.mainColor);
+ }
startDeviceOwnerProvisioningService();
}
diff --git a/src/com/android/managedprovisioning/LogoUtils.java b/src/com/android/managedprovisioning/LogoUtils.java
index bd457cdf..33685092 100644
--- a/src/com/android/managedprovisioning/LogoUtils.java
+++ b/src/com/android/managedprovisioning/LogoUtils.java
@@ -19,6 +19,8 @@ package com.android.managedprovisioning;
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore;
import android.view.View;
@@ -53,24 +55,23 @@ public class LogoUtils {
}
}
- public static void setOrganisationLogo(int resourceId, Activity activity) {
- ImageView imageView = (ImageView) activity.findViewById(resourceId);
- File logoFile = getOrganisationLogoFile(activity);
+ public static Drawable getOrganisationLogo(Context context) {
+ final File logoFile = getOrganisationLogoFile(context);
try {
if (logoFile.exists()) {
- Bitmap bitmap = MediaStore.Images.Media.getBitmap(activity.getContentResolver(),
+ Bitmap bitmap = MediaStore.Images.Media.getBitmap(context.getContentResolver(),
Uri.fromFile(logoFile));
if (bitmap != null) {
- imageView.setImageBitmap(bitmap);
- imageView.setVisibility(View.VISIBLE);
- ProvisionLogger.logi("Displayed organisation logo from " + logoFile);
+ ProvisionLogger.logi("Obtained organisation logo from " + logoFile);
+ return new BitmapDrawable(context.getResources(), bitmap);
} else {
- ProvisionLogger.loge("Could not display organisation logo from " + logoFile);
+ ProvisionLogger.loge("Could not get organisation logo from " + logoFile);
}
}
} catch (IOException e) {
- ProvisionLogger.loge("Could not display organisation logo from " + logoFile, e);
+ ProvisionLogger.loge("Could not get organisation logo from " + logoFile, e);
}
+ return context.getDrawable(R.drawable.ic_corp_icon);
}
public static void cleanUp(Context context) {
diff --git a/src/com/android/managedprovisioning/MessageParser.java b/src/com/android/managedprovisioning/MessageParser.java
index 3daad432..f4173037 100644
--- a/src/com/android/managedprovisioning/MessageParser.java
+++ b/src/com/android/managedprovisioning/MessageParser.java
@@ -323,9 +323,7 @@ public class MessageParser {
if (intent.hasExtra(EXTRA_PROVISIONING_MAIN_COLOR)) {
params.mainColor = intent.getIntExtra(EXTRA_PROVISIONING_MAIN_COLOR, 0 /* not used */);
} else {
- final TypedArray typedArray = context.obtainStyledAttributes(new int[]{
- android.R.attr.statusBarColor});
- params.mainColor = typedArray.getColor(0, 0);
+ params.mainColor = context.getResources().getColor(R.color.accent);
}
params.provisioningAction = Utils.mapIntentToDpmAction(intent);
try {
diff --git a/src/com/android/managedprovisioning/ProfileOwnerPreProvisioningActivity.java b/src/com/android/managedprovisioning/ProfileOwnerPreProvisioningActivity.java
index 2edbc5dc..7530f698 100644
--- a/src/com/android/managedprovisioning/ProfileOwnerPreProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/ProfileOwnerPreProvisioningActivity.java
@@ -151,7 +151,9 @@ public class ProfileOwnerPreProvisioningActivity extends SetupLayoutActivity
showErrorAndClose(R.string.managed_provisioning_error_text, e.getMessage());
return;
}
- LogoUtils.setOrganisationLogo(R.id.organisation_logo_view, this);
+ if (mParams != null) {
+ maybeSetLogoAndMainColor(mParams.mainColor);
+ }
setMdmIcon(mParams.deviceAdminPackageName);
// If the caller started us via ALIAS_NO_CHECK_CALLER then they must have permission to
@@ -188,9 +190,6 @@ public class ProfileOwnerPreProvisioningActivity extends SetupLayoutActivity
@Override
protected void onResume() {
super.onResume();
- if (mParams != null) {
- setStatusBarColor(mParams.mainColor);
- }
setTitle(R.string.setup_profile_start_setup);
if (Utils.alreadyHasManagedProfile(this) != -1) {
maybeShowDeleteManagedProfileDialog();
diff --git a/src/com/android/managedprovisioning/ProfileOwnerProvisioningActivity.java b/src/com/android/managedprovisioning/ProfileOwnerProvisioningActivity.java
index 849af628..d341e2d4 100644
--- a/src/com/android/managedprovisioning/ProfileOwnerProvisioningActivity.java
+++ b/src/com/android/managedprovisioning/ProfileOwnerProvisioningActivity.java
@@ -112,6 +112,9 @@ public class ProfileOwnerProvisioningActivity extends SetupLayoutActivity {
}
mParams = (ProvisioningParams) getIntent().getParcelableExtra(
ProvisioningParams.EXTRA_PROVISIONING_PARAMS);
+ if (mParams != null) {
+ maybeSetLogoAndMainColor(mParams.mainColor);
+ }
}
@Override
diff --git a/src/com/android/managedprovisioning/SetupLayoutActivity.java b/src/com/android/managedprovisioning/SetupLayoutActivity.java
index b96c094d..e381ad67 100644
--- a/src/com/android/managedprovisioning/SetupLayoutActivity.java
+++ b/src/com/android/managedprovisioning/SetupLayoutActivity.java
@@ -17,8 +17,18 @@
package com.android.managedprovisioning;
import android.app.Activity;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.PixelFormat;
+import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
+import android.util.DisplayMetrics;
import android.util.TypedValue;
+import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
@@ -38,13 +48,15 @@ public abstract class SetupLayoutActivity extends Activity implements Navigation
public static final int NEXT_BUTTON_EMPTY_LABEL = 0;
- protected void setStatusBarColor(int color) {
- // This code to colorize the status bar is just temporary.
+ protected void maybeSetLogoAndMainColor(int mainColor) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
- window.setStatusBarColor(color);
+ SetupWizardLayout layout = (SetupWizardLayout) findViewById(R.id.setup_wizard_layout);
+
+ layout.setIllustration(new HeaderDrawable(this, mainColor));
+ layout.setLayoutBackground(new ColorDrawable(mainColor));
}
public void initializeLayoutParams(int layoutResourceId, int headerResourceId,
@@ -81,4 +93,107 @@ public abstract class SetupLayoutActivity extends Activity implements Navigation
@Override
public void onNavigateNext() {
}
+
+ private class HeaderDrawable extends Drawable {
+ private Activity mActivity;
+ private int mMainColor;
+
+ HeaderDrawable(Activity a, int mainColor) {
+ mActivity = a;
+ mMainColor = mainColor;
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ Drawable logo = LogoUtils.getOrganisationLogo(mActivity);
+ int logoWidth = logo.getIntrinsicWidth();
+ int logoHeight = logo.getIntrinsicHeight();
+ Resources resources = mActivity.getResources();
+
+ // Resize the logo if too big.
+ float maxWidth =
+ resources.getDimension(R.dimen.max_logo_width);
+ float maxHeight =
+ resources.getDimension(R.dimen.max_logo_height);
+ double ratio = Math.max(logoWidth / maxWidth, logoHeight / maxHeight);
+ if (ratio > 1) {
+ logoWidth /= ratio;
+ logoHeight /= ratio;
+ }
+
+ int mainTextPaddingLeftRight = (int) resources
+ .getDimension(R.dimen.main_text_padding_left_right);
+ int logoPaddingBottom = (int) resources
+ .getDimension(R.dimen.logo_padding_bottom);
+ int totalWidth = getIntrinsicWidth();
+ int totalHeight = getIntrinsicHeight();
+
+ // By default, the drawable is materialized: it is not a solid color. Draw a white
+ // rectangle over the whole drawable so that it is a solid color.
+ Paint paint = new Paint();
+ paint.setColor(resources.getColor(R.color.white));
+ canvas.drawRect(0, 0, totalWidth, totalHeight, paint);
+
+ // Draw the logo.
+ if (shouldDrawLogoOnLeftSide()) {
+ logo.setBounds(mainTextPaddingLeftRight,
+ totalHeight - logoPaddingBottom - logoHeight,
+ mainTextPaddingLeftRight + logoWidth,
+ totalHeight - logoPaddingBottom);
+ } else {
+ logo.setBounds(totalWidth - mainTextPaddingLeftRight - logoWidth,
+ totalHeight - logoPaddingBottom - logoHeight,
+ totalWidth - mainTextPaddingLeftRight,
+ totalHeight - logoPaddingBottom);
+ }
+ logo.draw(canvas);
+
+ }
+
+ @Override
+ public int getIntrinsicHeight() {
+ if (mActivity.getResources().getBoolean(R.bool.suwUseTabletLayout)) {
+ return (int) mActivity.getResources()
+ .getDimension(R.dimen.suw_tablet_illustration_height);
+ }
+ return getScreenWidth() * 9 / 20;
+ }
+
+ @Override
+ public int getIntrinsicWidth() {
+ return getScreenWidth();
+ }
+
+ @Override
+ public int getOpacity() {
+ return PixelFormat.OPAQUE;
+ }
+
+ @Override
+ public void setAlpha(int alpha) {
+ //ignore
+ }
+
+ @Override
+ public void setColorFilter(ColorFilter cf) {
+ // ignore
+ }
+
+ private int getScreenWidth() {
+ DisplayMetrics metrics = new DisplayMetrics();
+ mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
+ return metrics.widthPixels;
+ }
+
+ private boolean shouldDrawLogoOnLeftSide() {
+ // for a tablet layout, the logo should be in the bottom left
+ boolean result = mActivity.getResources().getBoolean(R.bool.suwUseTabletLayout);
+ // for a right-to-left language, reverse it.
+ if (mActivity.getResources().getConfiguration().getLayoutDirection()
+ == View.LAYOUT_DIRECTION_RTL) {
+ result = !result;
+ }
+ return result;
+ }
+ }
}