Browse Source

color toolbar & progress bar

tobiasKaminsky 7 năm trước cách đây
mục cha
commit
b5643f90a2

+ 17 - 3
src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -23,6 +23,7 @@
 package com.owncloud.android.ui.activity;
 
 import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.support.annotation.ColorInt;
 import android.support.v4.content.ContextCompat;
@@ -92,11 +93,24 @@ public abstract class ToolbarActivity extends BaseActivity {
 
         // set the chosen title
         ActionBar actionBar = getSupportActionBar();
-        actionBar.setTitle(titleToSet);
+
+        // color folder name
+        DisplayUtils.setColoredTitle(actionBar, title);
+
+        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
+
+        toolbar.setBackgroundColor(DisplayUtils.primaryColor());
+
+        Drawable icon = toolbar.getNavigationIcon();
+        if (icon != null) {
+            icon.setColorFilter(DisplayUtils.fontColor(), PorterDuff.Mode.SRC_ATOP);
+        }
 
         // set home button properties
-        actionBar.setDisplayHomeAsUpEnabled(true);
-        actionBar.setDisplayShowTitleEnabled(true);
+        if (actionBar != null) {
+            actionBar.setDisplayHomeAsUpEnabled(true);
+            actionBar.setDisplayShowTitleEnabled(true);
+        }
     }
 
     /**

+ 9 - 0
src/main/java/com/owncloud/android/ui/fragment/ExtendedListFragment.java

@@ -281,8 +281,17 @@ public class ExtendedListFragment extends Fragment
             }
         });
 
+        int fontColor = DisplayUtils.fontColor();
 
         LinearLayout searchBar = (LinearLayout) searchView.findViewById(R.id.search_bar);
+        TextView searchBadge = (TextView) searchView.findViewById(R.id.search_badge);
+
+        searchBadge.setTextColor(fontColor);
+        searchBadge.setHintTextColor(fontColor);
+
+        ImageView searchButton = (ImageView) searchView.findViewById(R.id.search_button);
+        searchButton.setImageDrawable(DisplayUtils.tintDrawable(R.drawable.ic_search, fontColor));
+
         searchBar.setLayoutTransition(new LayoutTransition());
     }
 

+ 4 - 3
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -176,7 +176,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
         setHasOptionsMenu(true);
         mSystemBarActionModeColor = getResources().getColor(R.color.action_mode_status_bar_background);
         mSystemBarColor = DisplayUtils.primaryDarkColor();
-        mProgressBarActionModeColor = getResources().getColor(R.color.action_mode_background);
+        mProgressBarActionModeColor = DisplayUtils.primaryDarkColor();
         mProgressBarColor = DisplayUtils.primaryColor();
         mMultiChoiceModeListener = new MultiChoiceModeListener();
 
@@ -1534,7 +1534,8 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             @Override
             public void run() {
                 if (getActivity() != null && ((FileDisplayActivity) getActivity()).getSupportActionBar() != null) {
-                    ((FileDisplayActivity) getActivity()).getSupportActionBar().setTitle(title);
+                    DisplayUtils.setColoredTitle(((FileDisplayActivity) getActivity()).getSupportActionBar(),
+                            title, getContext());
                 }
             }
         });
@@ -1545,7 +1546,7 @@ public class OCFileListFragment extends ExtendedListFragment implements OCFileLi
             @Override
             public void run() {
                 if (getActivity() != null && ((FileDisplayActivity) getActivity()).getSupportActionBar() != null) {
-                    ((FileDisplayActivity) getActivity()).getSupportActionBar().setTitle(title);
+                    DisplayUtils.setColoredTitle(((FileDisplayActivity) getActivity()).getSupportActionBar(), title);
                 }
             }
         });

+ 54 - 0
src/main/java/com/owncloud/android/utils/DisplayUtils.java

@@ -48,6 +48,8 @@ import android.support.v4.content.ContextCompat;
 import android.support.v4.content.res.ResourcesCompat;
 import android.support.v4.graphics.ColorUtils;
 import android.support.v4.graphics.drawable.DrawableCompat;
+import android.support.v7.app.ActionBar;
+import android.text.Html;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.format.DateUtils;
@@ -731,6 +733,35 @@ public class DisplayUtils {
         return ColorUtils.HSLToColor(hsl);
     }
 
+    /**
+     * @return int font color to use
+     * adapted from https://github.com/nextcloud/server/blob/master/apps/theming/lib/Util.php#L90-L102
+     */
+    public static int fontColor() {
+        int primaryColor = primaryColor();
+
+        int red = Color.red(primaryColor);
+        int green = Color.green(primaryColor);
+        int blue = Color.blue(primaryColor);
+
+        if (((0.299 * red + 0.587 * green + 0.114 * blue) / 255) > 0.5) {
+            return Color.BLACK;
+        } else {
+            return Color.WHITE;
+        }
+    }
+
+    public static String fontColorHexString() {
+        switch (fontColor()) {
+            case Color.BLACK:
+                return "#000000";
+            case Color.WHITE:
+                return "#ffffff";
+            default:
+                return "#ffffff";
+        }
+    }
+
     public static int primaryDarkColor() {
         OCCapability capability = getCapability();
 
@@ -751,4 +782,27 @@ public class DisplayUtils {
         }
     }
 
+    /**
+     * Set color of title to white/black depending on background color
+     *
+     * @param actionBar actionBar to be used
+     * @param title     title to be shown
+     */
+    public static void setColoredTitle(ActionBar actionBar, String title) {
+        String colorHex = DisplayUtils.fontColorHexString();
+        actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
+    }
+
+    /**
+     * Set color of title to white/black depending on background color
+     *
+     * @param actionBar actionBar to be used
+     * @param titleId   title to be shown
+     */
+    public static void setColoredTitle(ActionBar actionBar, int titleId, Context context) {
+        String colorHex = DisplayUtils.fontColorHexString();
+        String title = context.getString(titleId);
+        actionBar.setTitle(Html.fromHtml("<font color='" + colorHex + "'>" + title + "</font>"));
+    }
+
 }