diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml index d009c7a2b..7843cd88d 100644 --- a/Habitica/AndroidManifest.xml +++ b/Habitica/AndroidManifest.xml @@ -31,6 +31,7 @@ diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 290a3f94f..80c2fde71 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -65,13 +65,13 @@ dependencies { apt 'com.google.dagger:dagger-compiler:2.8' provided 'org.glassfish:javax.annotation:10.0-b28' //App Compatibility and Material Design - compile('com.mikepenz:materialdrawer:5.3.6@aar') { + compile('com.mikepenz:materialdrawer:5.8.3@aar') { transitive = true } - compile 'com.android.support:appcompat-v7:25.3.0' - compile 'com.android.support:design:25.3.0' - compile 'com.android.support:recyclerview-v7:25.3.0' - compile 'com.android.support:preference-v14:25.3.0' + compile 'com.android.support:appcompat-v7:25.3.1' + compile 'com.android.support:design:25.3.1' + compile 'com.android.support:recyclerview-v7:25.3.1' + compile 'com.android.support:preference-v14:25.3.1' compile 'com.android.support:multidex:1.0.1' //QR Code diff --git a/Habitica/res/drawable-hdpi/login_background.png b/Habitica/res/drawable-hdpi/login_background.png deleted file mode 100644 index 8f9ec6870..000000000 Binary files a/Habitica/res/drawable-hdpi/login_background.png and /dev/null differ diff --git a/Habitica/res/drawable-mdpi/login_background.png b/Habitica/res/drawable-mdpi/login_background.png index dcc6047da..5da3913eb 100644 Binary files a/Habitica/res/drawable-mdpi/login_background.png and b/Habitica/res/drawable-mdpi/login_background.png differ diff --git a/Habitica/res/drawable-xhdpi/login_background.png b/Habitica/res/drawable-xhdpi/login_background.png deleted file mode 100644 index f8daf89a4..000000000 Binary files a/Habitica/res/drawable-xhdpi/login_background.png and /dev/null differ diff --git a/Habitica/res/drawable-xxhdpi/login_background.png b/Habitica/res/drawable-xxhdpi/login_background.png deleted file mode 100644 index bc2c207fc..000000000 Binary files a/Habitica/res/drawable-xxhdpi/login_background.png and /dev/null differ diff --git a/Habitica/res/layout/activity_main.xml b/Habitica/res/layout/activity_main.xml index dba9844ce..c3719b435 100644 --- a/Habitica/res/layout/activity_main.xml +++ b/Habitica/res/layout/activity_main.xml @@ -1,108 +1,96 @@ - - + android:fitsSystemWindows="false"> - + app:layout_behavior="@string/appbar_scrolling_view_behavior" /> - + - + app:titleEnabled="false" + app:contentScrim="?attr/colorPrimary" + app:expandedTitleMarginEnd="?attr/actionBarSize" + app:expandedTitleMarginStart="0dp" + app:layout_scrollFlags="scroll|exitUntilCollapsed"> - + android:layout_marginTop="?attr/actionBarSize" + app:layout_collapseMode="parallax" /> - - - - - - - + app:popupTheme="@style/Theme.AppCompat.Light" + android:fitsSystemWindows="true"/> + - + + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" + app:layout_anchor="@+id/collapsing_toolbar" + app:layout_anchorGravity="bottom" + app:layout_collapseMode="pin" + app:tabGravity="fill" + app:tabIndicatorColor="@android:color/white" + app:tabMode="fixed" + android:fitsSystemWindows="true" /> + - - - \ No newline at end of file + + + + diff --git a/Habitica/res/layout/fragment_recyclerview.xml b/Habitica/res/layout/fragment_recyclerview.xml index 1f7a99e39..ffcb6a7bb 100644 --- a/Habitica/res/layout/fragment_recyclerview.xml +++ b/Habitica/res/layout/fragment_recyclerview.xml @@ -11,7 +11,10 @@ android:layout_height="match_parent" android:scrollbarSize="3dp" android:scrollbarThumbVertical="@color/md_grey_500" - android:scrollbars="vertical" /> + android:scrollbars="vertical" + android:fitsSystemWindows="true" + android:clipToPadding="false" + android:paddingBottom="?attr/actionBarSize"/> - @@ -16,12 +16,15 @@ android:layout_height="match_parent" android:scrollbarSize="3dp" android:scrollbarThumbVertical="@color/md_grey_500" - android:scrollbars="vertical" /> + android:scrollbars="vertical" + android:fitsSystemWindows="true" + android:clipToPadding="false" + android:paddingBottom="?attr/actionBarSize" /> - + diff --git a/Habitica/res/layout/material_drawer.xml b/Habitica/res/layout/material_drawer.xml new file mode 100644 index 000000000..21d4bb3ed --- /dev/null +++ b/Habitica/res/layout/material_drawer.xml @@ -0,0 +1,6 @@ + + \ No newline at end of file diff --git a/Habitica/res/values-v21/styles.xml b/Habitica/res/values-v21/styles.xml index 348e9ce31..a04e2b059 100644 --- a/Habitica/res/values-v21/styles.xml +++ b/Habitica/res/values-v21/styles.xml @@ -14,10 +14,17 @@ @android:color/transparent true true + true + @null + true + true \ No newline at end of file diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml index 289fabfe0..1d9600754 100644 --- a/Habitica/res/values/colors.xml +++ b/Habitica/res/values/colors.xml @@ -116,6 +116,7 @@ #bfffffff #7fffffff #26ffffff + #16000000 #33000000 #F6F4F8 diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java index 782ddfc9e..194483cd9 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/MainActivity.java @@ -8,6 +8,7 @@ import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.content.res.Configuration; +import android.content.res.Resources; import android.database.sqlite.SQLiteDoneException; import android.databinding.DataBindingUtil; import android.graphics.Bitmap; @@ -18,10 +19,15 @@ import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.annotation.Nullable; +import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.TabLayout; import android.support.v4.app.FragmentTransaction; +import android.support.v4.content.ContextCompat; import android.support.v4.content.FileProvider; import android.support.v4.view.GravityCompat; +import android.support.v4.view.OnApplyWindowInsetsListener; +import android.support.v4.view.ViewCompat; +import android.support.v4.view.WindowInsetsCompat; import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AlertDialog; import android.support.v7.widget.Toolbar; @@ -29,6 +35,8 @@ import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.View; +import android.view.Window; +import android.view.WindowManager; import android.widget.FrameLayout; import com.facebook.drawee.view.SimpleDraweeView; @@ -201,7 +209,7 @@ public class MainActivity extends BaseActivity implements Action1, Ha @BindView(R.id.avatar_with_bars) View avatar_with_bars; @BindView(R.id.overlayFrameLayout) - FrameLayout overlayFrameLayout; + CoordinatorLayout overlayFrameLayout; PushNotificationManager pushNotificationManager; // region UseCases @@ -302,9 +310,36 @@ public class MainActivity extends BaseActivity implements Action1, Ha drawer.setSelectionAtPosition(1, false); sideAvatarView = new AvatarView(this, true, false, false); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = getWindow(); + window.setStatusBarColor(ContextCompat.getColor(this, R.color.black_10_alpha)); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + toolbar.setPadding(0, getStatusBarHeight(), 0, 0); + avatar_with_bars.setPadding(0, getStatusBarHeight(), 0, 0); + floatingMenuWrapper.setPadding(0, 0, 0, getNavigationBarHeight()); + } + EventBus.getDefault().register(this); } + public int getStatusBarHeight() { + int result = 0; + int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); + if (resourceId > 0) { + result = getResources().getDimensionPixelSize(resourceId); + } + return result; + } + + private int getNavigationBarHeight() { + int result = 0; + int resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android"); + if (resourceId > 0) { + result = getResources().getDimensionPixelSize(resourceId); + } + return result; + } + @Override protected void injectActivity(AppComponent component) { component.inject(this); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/RecyclerViewEmptySupport.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/RecyclerViewEmptySupport.java index c92a4e054..8353967d0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/RecyclerViewEmptySupport.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/helpers/RecyclerViewEmptySupport.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.View; +import android.view.WindowInsets; //http://stackoverflow.com/a/27801394/1315039 public class RecyclerViewEmptySupport extends RecyclerView { @@ -37,6 +38,11 @@ public class RecyclerViewEmptySupport extends RecyclerView { super(context, attrs, defStyle); } + @Override + public WindowInsets onApplyWindowInsets(WindowInsets insets) { + return super.onApplyWindowInsets(insets); + } + void checkIfEmpty() { if (emptyView != null && getAdapter() != null) { final boolean emptyViewVisible = getAdapter().getItemCount() == 0; diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java index 0fd7ded68..db12d14bc 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/MainDrawerBuilder.java @@ -70,7 +70,8 @@ public class MainDrawerBuilder { public static DrawerBuilder CreateDefaultBuilderSettings(final MainActivity activity, SharedPreferences sharedPreferences, Toolbar toolbar, final AccountHeader accountHeader) { DrawerBuilder builder = new DrawerBuilder() - .withActivity(activity); + .withActivity(activity) + .withFullscreen(true); if (toolbar != null) { builder.withToolbar(toolbar); diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/SectionIconDrawerItem.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/SectionIconDrawerItem.java index 78e89cd83..787797fcd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/SectionIconDrawerItem.java +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/menu/SectionIconDrawerItem.java @@ -16,6 +16,8 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.TextView; +import java.util.List; + /** * Created by mikepenz on 03.02.15. */ @@ -75,29 +77,30 @@ public class SectionIconDrawerItem extends AbstractDrawerItem payloads) { + super.bindView(holder, payloads); + Context ctx = holder.itemView.getContext(); //set the identifier from the drawerItem here. It can be used to run tests - viewHolder.itemView.setId(hashCode()); + holder.itemView.setId(hashCode()); //define this item to be not clickable nor enabled - viewHolder.view.setClickable(false); - viewHolder.view.setEnabled(false); + holder.view.setClickable(false); + holder.view.setEnabled(false); //define the text color - viewHolder.name.setTextColor(ContextCompat.getColor(ctx, R.color.white)); + holder.name.setTextColor(ContextCompat.getColor(ctx, R.color.white)); //set the text for the name - StringHolder.applyTo(this.getName(), viewHolder.name); + StringHolder.applyTo(this.getName(), holder.name); //define the typeface for our textViews if (getTypeface() != null) { - viewHolder.name.setTypeface(getTypeface()); + holder.name.setTypeface(getTypeface()); } //call the onPostBindView method to trigger post bind view actions (like the listener to modify the item if required) - onPostBindView(this, viewHolder.itemView); + onPostBindView(this, holder.itemView); } @Override