Jelajahi Sumber

Merge pull request #1767 from nextcloud/drawerBackgroundColor

Tint background on drawer/user info as fallback
Mario Đanić 7 tahun lalu
induk
melakukan
60f597095f

+ 21 - 2
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -30,7 +30,9 @@ import android.accounts.AccountManagerFuture;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
+import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
@@ -1044,16 +1046,33 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
 
             if (navigationHeader != null) {
                 String background = getStorageManager().getCapability(getAccount().name).getServerBackground();
+                int primaryColor = ThemeUtils.primaryColor(getAccount());
 
                 if (URLUtil.isValidUrl(background) || background.isEmpty()) {
                     // background image
                     SimpleTarget target = new SimpleTarget<Drawable>() {
                         @Override
                         public void onResourceReady(Drawable resource, GlideAnimation glideAnimation) {
+                            Drawable[] drawables = {new ColorDrawable(primaryColor), resource};
+                            LayerDrawable layerDrawable = new LayerDrawable(drawables);
+                            
                             if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
-                                navigationHeader.setBackgroundDrawable(resource);
+                                navigationHeader.setBackgroundDrawable(layerDrawable);
                             } else {
-                                navigationHeader.setBackground(resource);
+                                navigationHeader.setBackground(layerDrawable);
+                            }
+                        }
+
+                        @Override
+                        public void onLoadFailed(Exception e, Drawable errorDrawable) {
+                            Drawable[] drawables = {new ColorDrawable(primaryColor),
+                                    getResources().getDrawable(R.drawable.background)};
+                            LayerDrawable layerDrawable = new LayerDrawable(drawables);
+
+                            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
+                                navigationHeader.setBackgroundDrawable(layerDrawable);
+                            } else {
+                                navigationHeader.setBackground(layerDrawable);
                             }
                         }
                     };

+ 21 - 2
src/main/java/com/owncloud/android/ui/activity/UserInfoActivity.java

@@ -33,7 +33,9 @@ import android.content.ContentResolver;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.graphics.PorterDuff;
+import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.LayerDrawable;
 import android.os.Build;
 import android.os.Bundle;
 import android.support.annotation.ColorInt;
@@ -279,16 +281,33 @@ public class UserInfoActivity extends FileActivity {
 
             if (appBar != null) {
                 String background = getStorageManager().getCapability(account.name).getServerBackground();
+                int primaryColor = ThemeUtils.primaryColor(getAccount());
 
                 if (URLUtil.isValidUrl(background)) {
                     // background image
                     SimpleTarget target = new SimpleTarget<Drawable>() {
                         @Override
                         public void onResourceReady(Drawable resource, GlideAnimation glideAnimation) {
+                            Drawable[] drawables = {new ColorDrawable(primaryColor), resource};
+                            LayerDrawable layerDrawable = new LayerDrawable(drawables);
+                            
                             if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
-                                appBar.setBackgroundDrawable(resource);
+                                appBar.setBackgroundDrawable(layerDrawable);
                             } else {
-                                appBar.setBackground(resource);
+                                appBar.setBackground(layerDrawable);
+                            }
+                        }
+
+                        @Override
+                        public void onLoadFailed(Exception e, Drawable errorDrawable) {
+                            Drawable[] drawables = {new ColorDrawable(primaryColor),
+                                    getResources().getDrawable(R.drawable.background)};
+                            LayerDrawable layerDrawable = new LayerDrawable(drawables);
+
+                            if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
+                                appBar.setBackgroundDrawable(layerDrawable);
+                            } else {
+                                appBar.setBackground(layerDrawable);
                             }
                         }
                     };