浏览代码

Merge pull request #6207 from nextcloud/pixelPerfectAndBugFix

Appbar - Pixel perfect and bug fix
Andy Scherzinger 4 年之前
父节点
当前提交
80d4dd5908

+ 22 - 13
src/main/java/com/owncloud/android/ui/activity/ToolbarActivity.java

@@ -25,6 +25,7 @@ package com.owncloud.android.ui.activity;
 import android.animation.AnimatorInflater;
 import android.annotation.SuppressLint;
 import android.graphics.Bitmap;
+import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Bundle;
@@ -61,6 +62,7 @@ public abstract class ToolbarActivity extends BaseActivity {
 
     private AppBarLayout mAppBar;
     private RelativeLayout mDefaultToolbar;
+    private Toolbar mToolbar;
     private MaterialCardView mHomeSearchToolbar;
     private ImageView mPreviewImage;
     private FrameLayout mPreviewImageContainer;
@@ -81,8 +83,8 @@ public abstract class ToolbarActivity extends BaseActivity {
     private void setupToolbar(boolean isHomeSearchToolbarShow) {
         int fontColor = ThemeUtils.appBarPrimaryFontColor(this);
 
-        Toolbar toolbar = findViewById(R.id.toolbar);
-        setSupportActionBar(toolbar);
+        mToolbar = findViewById(R.id.toolbar);
+        setSupportActionBar(mToolbar);
         ThemeUtils.colorStatusBar(this);
 
         mAppBar = findViewById(R.id.appbar);
@@ -103,12 +105,12 @@ public abstract class ToolbarActivity extends BaseActivity {
 
         mToolbarSpinner = findViewById(R.id.toolbar_spinner);
 
-        if (toolbar.getOverflowIcon() != null) {
-            ThemeUtils.tintDrawable(toolbar.getOverflowIcon(), fontColor);
+        if (mToolbar.getOverflowIcon() != null) {
+            ThemeUtils.tintDrawable(mToolbar.getOverflowIcon(), fontColor);
         }
 
-        if (toolbar.getNavigationIcon() != null) {
-            ThemeUtils.tintDrawable(toolbar.getNavigationIcon(), fontColor);
+        if (mToolbar.getNavigationIcon() != null) {
+            ThemeUtils.tintDrawable(mToolbar.getNavigationIcon(), fontColor);
         }
     }
 
@@ -224,17 +226,22 @@ public abstract class ToolbarActivity extends BaseActivity {
         mInfoBox.setVisibility(View.GONE);
     }
 
-    /**
-     * Change the visibility for the toolbar's preview image.
-     *
-     * @param visibility visibility of the preview image
-     */
-    public void setPreviewImageVisibility(int visibility) {
+    public void setPreviewImageVisibility(boolean isVisibility) {
         if (mPreviewImage != null && mPreviewImageContainer != null) {
-            mPreviewImageContainer.setVisibility(visibility);
+            if (isVisibility) {
+                mToolbar.setTitle(null);
+                mToolbar.setBackgroundColor(Color.TRANSPARENT);
+            } else {
+                mToolbar.setBackgroundResource(R.color.appbar);
+            }
+            mPreviewImageContainer.setVisibility(isVisibility ? View.VISIBLE : View.GONE);
         }
     }
 
+    public void hidePreviewImage() {
+        setPreviewImageVisibility(false);
+    }
+
     /**
      * Change the bitmap for the toolbar's preview image.
      *
@@ -243,6 +250,7 @@ public abstract class ToolbarActivity extends BaseActivity {
     public void setPreviewImageBitmap(Bitmap bitmap) {
         if (mPreviewImage != null) {
             mPreviewImage.setImageBitmap(bitmap);
+            setPreviewImageVisibility(true);
         }
     }
 
@@ -254,6 +262,7 @@ public abstract class ToolbarActivity extends BaseActivity {
     public void setPreviewImageDrawable(Drawable drawable) {
         if (mPreviewImage != null) {
             mPreviewImage.setImageDrawable(drawable);
+            setPreviewImageVisibility(true);
         }
     }
 

+ 31 - 40
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -142,12 +142,12 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
 
     private int layout;
     private View view;
-    private boolean previewLoaded;
     private Account account;
     private Unbinder unbinder;
+    private boolean previewLoaded;
 
     private ProgressListener progressListener;
-    private ToolbarActivity activity;
+    private ToolbarActivity toolbarActivity;
     private int activeTab;
 
     @Inject AppPreferences preferences;
@@ -229,26 +229,6 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
         super.onAttach(activity);
     }
 
-    @Override
-    public void onResume() {
-        super.onResume();
-
-        if (previewLoaded && getFile() != null && MimeTypeUtil.isImage(getFile())) {
-            activatePreviewImage();
-        }
-    }
-
-    private void activatePreviewImage() {
-        if (activity != null) {
-            activity.setPreviewImageVisibility(View.VISIBLE);
-            ThemeUtils.setStatusBarColor(activity, activity.getResources().getColor(R.color.background_color_inverse));
-            if (activity.getSupportActionBar() != null) {
-                activity.getSupportActionBar().setTitle(null);
-                activity.getSupportActionBar().setBackgroundDrawable(null);
-            }
-        }
-    }
-
     @Override
     public void onActivityCreated(Bundle savedInstanceState) {
         super.onActivityCreated(savedInstanceState);
@@ -370,25 +350,36 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
         listenForTransferProgress();
     }
 
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        if (toolbarActivity != null && previewLoaded) {
+            toolbarActivity.setPreviewImageVisibility(true);
+        }
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+    }
+
     @Override
     public void onStop() {
         leaveTransferProgress();
 
-        if(activity != null) {
-            activity.setupToolbar();
-            activity.setPreviewImageVisibility(View.GONE);
+        if (toolbarActivity != null) {
+            toolbarActivity.hidePreviewImage();
         }
 
         super.onStop();
     }
 
     @Override
-    public void onAttach(Context context) {
+    public void onAttach(@NonNull Context context) {
         super.onAttach(context);
         if (context instanceof ToolbarActivity) {
-            activity = (ToolbarActivity) context;
-        } else {
-            activity = null;
+            toolbarActivity = (ToolbarActivity) context;
         }
     }
 
@@ -626,13 +617,12 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private void setFilePreview(OCFile file) {
         Bitmap resizedImage;
 
-        if (activity != null && MimeTypeUtil.isImage(file)) {
+        if (toolbarActivity != null && MimeTypeUtil.isImage(file)) {
             String tagId = String.valueOf(ThumbnailsCacheManager.PREFIX_RESIZED_IMAGE + getFile().getRemoteId());
             resizedImage = ThumbnailsCacheManager.getBitmapFromDiskCache(tagId);
 
             if (resizedImage != null && !file.isUpdateThumbnailNeeded()) {
-                activity.setPreviewImageBitmap(resizedImage);
-                activatePreviewImage();
+                toolbarActivity.setPreviewImageBitmap(resizedImage);
                 previewLoaded = true;
             } else {
                 // show thumbnail while loading resized image
@@ -640,20 +630,20 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
                         String.valueOf(ThumbnailsCacheManager.PREFIX_THUMBNAIL + getFile().getRemoteId()));
 
                 if (thumbnail != null) {
-                    activity.setPreviewImageBitmap(thumbnail);
+                    toolbarActivity.setPreviewImageBitmap(thumbnail);
                 } else {
                     thumbnail = ThumbnailsCacheManager.mDefaultImg;
                 }
 
                 // generate new resized image
-                if (ThumbnailsCacheManager.cancelPotentialThumbnailWork(getFile(), activity.getPreviewImageView()) &&
+                if (ThumbnailsCacheManager.cancelPotentialThumbnailWork(getFile(), toolbarActivity.getPreviewImageView()) &&
                         containerActivity.getStorageManager() != null) {
                     final ThumbnailsCacheManager.ResizedImageGenerationTask task =
                             new ThumbnailsCacheManager.ResizedImageGenerationTask(this,
-                                    activity.getPreviewImageView(),
-                                    containerActivity.getStorageManager(),
-                                    connectivityService,
-                                    containerActivity.getStorageManager().getAccount());
+                                                                                  toolbarActivity.getPreviewImageView(),
+                                                                                  containerActivity.getStorageManager(),
+                                                                                  connectivityService,
+                                                                                  containerActivity.getStorageManager().getAccount());
 
                     if (resizedImage == null) {
                         resizedImage = thumbnail;
@@ -666,12 +656,13 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
                                     task
                             );
 
-                    activity.setPreviewImageDrawable(asyncDrawable);
-                    activatePreviewImage();
+                    toolbarActivity.setPreviewImageDrawable(asyncDrawable);
                     previewLoaded = true;
                     task.execute(getFile());
                 }
             }
+        } else {
+            previewLoaded = false;
         }
     }
 

+ 12 - 10
src/main/res/layout/toolbar_standard.xml

@@ -23,7 +23,7 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:id="@+id/appbar"
     android:layout_width="match_parent"
-    android:layout_height="?attr/actionBarSize"
+    android:layout_height="wrap_content"
     android:background="@color/bg_default"
     tools:viewBindingIgnore="true">
 
@@ -54,8 +54,9 @@
         <androidx.appcompat.widget.Toolbar
             android:id="@+id/toolbar"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="?attr/actionBarSize"
             android:background="@color/appbar"
+            android:theme="@style/ThemeOverlay.MaterialComponents.Dark.ActionBar"
             app:popupTheme="@style/Theme.AppCompat.DayNight.NoActionBar">
 
             <androidx.appcompat.widget.AppCompatSpinner
@@ -63,7 +64,8 @@
                 android:layout_width="wrap_content"
                 android:layout_height="match_parent"
                 android:visibility="gone"
-                app:backgroundTint="@color/fontAppbar" />
+                app:backgroundTint="@color/fontAppbar"
+                app:popupTheme="@style/Theme.AppCompat.DayNight.NoActionBar" />
         </androidx.appcompat.widget.Toolbar>
 
     </RelativeLayout>
@@ -71,15 +73,15 @@
     <com.google.android.material.card.MaterialCardView
         android:id="@+id/home_toolbar"
         android:layout_width="match_parent"
-        android:layout_height="match_parent"
+        android:layout_height="50dp"
         android:layout_marginStart="16dp"
-        android:layout_marginTop="4dp"
+        android:layout_marginTop="8dp"
         android:layout_marginEnd="16dp"
         android:layout_marginBottom="4dp"
         android:visibility="gone"
         app:background="@color/appbar"
         app:cardCornerRadius="8dp"
-        app:cardElevation="6dp"
+        app:cardElevation="2dp"
         app:strokeWidth="0dp">
 
         <androidx.constraintlayout.widget.ConstraintLayout
@@ -119,11 +121,11 @@
             <com.google.android.material.button.MaterialButton
                 android:id="@+id/switch_account_button"
                 style="@style/Widget.AppTheme.Button.IconButton"
-                android:layout_width="38dp"
-                android:layout_height="38dp"
-                android:layout_marginEnd="8dp"
+                android:layout_width="42dp"
+                android:layout_height="42dp"
+                android:layout_marginEnd="6dp"
                 app:cornerRadius="@dimen/button_corner_radius"
-                app:iconSize="28dp"
+                app:iconSize="30dp"
                 app:layout_constraintBottom_toBottomOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />