diff options
-rw-r--r-- | app/src/main/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/view/CardView.java | 54 | ||||
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/view/FastScroller.java | 2 | ||||
-rw-r--r-- | app/src/main/java/github/daneren2005/dsub/view/GridSpacingDecoration.java | 45 | ||||
-rw-r--r-- | app/src/main/res/drawable/card_rounded_corners.xml | 6 | ||||
-rw-r--r-- | app/src/main/res/layout/abstract_recycler_fragment.xml | 3 | ||||
-rw-r--r-- | app/src/main/res/layout/album_cell_item.xml | 143 | ||||
-rw-r--r-- | app/src/main/res/layout/basic_cell_item.xml | 65 | ||||
-rw-r--r-- | app/src/main/res/layout/fast_scroller.xml | 4 | ||||
-rw-r--r-- | app/src/main/res/values/dimens.xml | 3 | ||||
-rw-r--r-- | app/src/main/res/values/styles.xml | 2 |
11 files changed, 219 insertions, 110 deletions
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index be941740..2f3b1a5f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,7 +2,7 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="github.daneren2005.dsub" android:installLocation="internalOnly" - android:versionCode="167" + android:versionCode="168" android:versionName="5.1.2"> <instrumentation android:name="android.test.InstrumentationTestRunner" diff --git a/app/src/main/java/github/daneren2005/dsub/view/CardView.java b/app/src/main/java/github/daneren2005/dsub/view/CardView.java new file mode 100644 index 00000000..973e63fa --- /dev/null +++ b/app/src/main/java/github/daneren2005/dsub/view/CardView.java @@ -0,0 +1,54 @@ +package github.daneren2005.dsub.view; + +import android.annotation.TargetApi; +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Path; +import android.graphics.RectF; +import android.os.Build; +import android.util.AttributeSet; +import android.util.Log; +import android.widget.FrameLayout; + +import github.daneren2005.dsub.R; + +public class CardView extends FrameLayout{ + public CardView(Context context) { + super(context); + init(context); + } + + public CardView(Context context, AttributeSet attrs) { + super(context, attrs); + init(context); + } + + public CardView(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + init(context); + } + + @TargetApi(Build.VERSION_CODES.LOLLIPOP) + public CardView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + init(context); + } + + @Override + public void onDraw(Canvas canvas) { + Path clipPath = new Path(); + + float roundedDp = getResources().getDimension(R.dimen.Card_Radius); + clipPath.addRoundRect(new RectF(canvas.getClipBounds()), roundedDp, roundedDp, Path.Direction.CW); + canvas.clipPath(clipPath); + super.onDraw(canvas); + } + + private void init(Context context) { + setClipChildren(true); + setBackgroundResource(R.drawable.card_rounded_corners); + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + setElevation(10.0f); + } + } +} diff --git a/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java b/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java index 7cb29835..d3eacefc 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java +++ b/app/src/main/java/github/daneren2005/dsub/view/FastScroller.java @@ -95,7 +95,7 @@ public class FastScroller extends LinearLayout { switch(action) { case MotionEvent.ACTION_DOWN: - if(event.getX() < (handle.getX() - 20)) { + if(event.getX() < (handle.getX() - 30)) { return false; } diff --git a/app/src/main/java/github/daneren2005/dsub/view/GridSpacingDecoration.java b/app/src/main/java/github/daneren2005/dsub/view/GridSpacingDecoration.java index b59e7157..a33746c4 100644 --- a/app/src/main/java/github/daneren2005/dsub/view/GridSpacingDecoration.java +++ b/app/src/main/java/github/daneren2005/dsub/view/GridSpacingDecoration.java @@ -18,10 +18,17 @@ package github.daneren2005.dsub.view; import android.graphics.Rect; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; +import android.util.Log; import android.util.TypedValue; import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +import static android.widget.LinearLayout.*; public class GridSpacingDecoration extends RecyclerView.ItemDecoration { + private static final String TAG = GridSpacingDecoration.class.getSimpleName(); public static final int SPACING = 10; @Override @@ -39,30 +46,52 @@ public class GridSpacingDecoration extends RecyclerView.ItemDecoration { } int spanCount = getTotalSpan(view, parent); int spanIndex = childIndex % spanCount; + + // If we can, use the SpanSizeLookup since headers screw up the index calculation + RecyclerView.LayoutManager layoutManager = parent.getLayoutManager(); + if(layoutManager instanceof GridLayoutManager) { + GridLayoutManager gridLayoutManager = (GridLayoutManager) layoutManager; + GridLayoutManager.SpanSizeLookup spanSizeLookup = gridLayoutManager.getSpanSizeLookup(); + if(spanSizeLookup != null) { + spanIndex = spanSizeLookup.getSpanIndex(childIndex, spanCount); + } + } int spanSize = getSpanSize(parent, childIndex); /* INVALID SPAN */ if (spanCount < 1 || spanSize > 1) return; - outRect.top = halfSpacing; - outRect.bottom = halfSpacing; - outRect.left = halfSpacing; - outRect.right = halfSpacing; + int margins = 0; + if(view instanceof UpdateView) { + View firstChild = ((ViewGroup) view).getChildAt(0); + ViewGroup.LayoutParams layoutParams = firstChild.getLayoutParams(); + if (layoutParams instanceof LinearLayout.LayoutParams) { + margins = ((LinearLayout.LayoutParams) layoutParams).bottomMargin; + } else if (layoutParams instanceof FrameLayout.LayoutParams) { + margins = ((FrameLayout.LayoutParams) layoutParams).bottomMargin; + } + } + int doubleMargins = margins * 2; + + outRect.top = halfSpacing - margins; + outRect.bottom = halfSpacing - margins; + outRect.left = halfSpacing - margins; + outRect.right = halfSpacing - margins; if (isTopEdge(childIndex, spanCount)) { - outRect.top = spacing; + outRect.top = spacing - doubleMargins; } if (isLeftEdge(spanIndex, spanCount)) { - outRect.left = spacing; + outRect.left = spacing - doubleMargins; } if (isRightEdge(spanIndex, spanCount)) { - outRect.right = spacing; + outRect.right = spacing - doubleMargins; } if (isBottomEdge(childIndex, childCount, spanCount)) { - outRect.bottom = spacing; + outRect.bottom = spacing - doubleMargins; } } diff --git a/app/src/main/res/drawable/card_rounded_corners.xml b/app/src/main/res/drawable/card_rounded_corners.xml new file mode 100644 index 00000000..5475c3d6 --- /dev/null +++ b/app/src/main/res/drawable/card_rounded_corners.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <solid android:color="@android:color/white"/> + <corners android:radius="@dimen/Card.Radius"/> + <padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" /> +</shape>
\ No newline at end of file diff --git a/app/src/main/res/layout/abstract_recycler_fragment.xml b/app/src/main/res/layout/abstract_recycler_fragment.xml index 0e0c87f4..2537d222 100644 --- a/app/src/main/res/layout/abstract_recycler_fragment.xml +++ b/app/src/main/res/layout/abstract_recycler_fragment.xml @@ -19,7 +19,8 @@ android:id="@+id/fragment_recycler" android:layout_width="fill_parent" android:layout_height="fill_parent" - android:scrollbars="vertical"/> + android:scrollbars="vertical" + android:paddingRight="6dp"/> <github.daneren2005.dsub.view.FastScroller android:id="@+id/fragment_fast_scroller" diff --git a/app/src/main/res/layout/album_cell_item.xml b/app/src/main/res/layout/album_cell_item.xml index f6693a7f..524727a0 100644 --- a/app/src/main/res/layout/album_cell_item.xml +++ b/app/src/main/res/layout/album_cell_item.xml @@ -1,90 +1,99 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" +<github.daneren2005.dsub.view.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/selectableItemBackground"> + android:layout_margin="2dp"> - <RelativeLayout + <LinearLayout + android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="0dp" - android:layout_weight="1"> + android:layout_height="match_parent" + android:background="?attr/selectableItemBackground"> - <github.daneren2005.dsub.view.SquareImageView - android:id="@+id/album_coverart" + <RelativeLayout android:layout_width="match_parent" - android:layout_height="match_parent"/> + android:layout_height="0dp" + android:layout_weight="1"> - <RatingBar - android:id="@+id/album_rating" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:isIndicator="true" - android:layout_centerHorizontal="true" - android:numStars="5" - style="@android:style/Widget.Holo.RatingBar.Small" - android:layout_alignParentBottom="true" - android:visibility="gone"/> - </RelativeLayout> + <github.daneren2005.dsub.view.SquareImageView + android:id="@+id/album_coverart" + android:layout_width="match_parent" + android:layout_height="match_parent"/> - <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:paddingTop="4dp" - android:paddingLeft="2dp"> + <RatingBar + android:id="@+id/album_rating" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:isIndicator="true" + android:layout_centerHorizontal="true" + android:numStars="5" + style="@android:style/Widget.Holo.RatingBar.Small" + android:layout_alignParentBottom="true" + android:visibility="gone"/> + </RelativeLayout> <LinearLayout - android:layout_width="0dp" + android:layout_width="fill_parent" android:layout_height="wrap_content" - android:layout_weight="1" - android:gravity="center_vertical" - android:orientation="vertical"> - - <TextView - android:id="@+id/album_title" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:textAppearance="?android:attr/textAppearanceSmall" - android:singleLine="true" - android:ellipsize="marquee" - android:text="@string/search.albums" - android:textColor="?android:textColorPrimary"/> + android:orientation="horizontal" + android:paddingTop="4dp" + android:paddingBottom="4dp" + android:paddingLeft="2dp"> <LinearLayout - android:layout_width="fill_parent" - android:layout_height="wrap_content"> + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:gravity="center_vertical" + android:orientation="vertical"> <TextView - android:id="@+id/album_artist" - android:layout_width="0dp" - android:layout_weight="1" + android:id="@+id/album_title" + android:layout_width="wrap_content" android:layout_height="wrap_content" - android:textSize="12sp" - android:textColor="?android:textColorSecondary" + android:textAppearance="?android:attr/textAppearanceSmall" android:singleLine="true" - android:text="@string/search.artists"/> + android:ellipsize="marquee" + android:text="@string/search.albums" + android:textColor="?android:textColorPrimary" + android:paddingLeft="@dimen/Card.TextLeftPadding"/> + + <LinearLayout + android:layout_width="fill_parent" + android:layout_height="wrap_content"> - <ImageButton - android:id="@+id/album_star" - android:layout_width="@dimen/Star.Small" - android:layout_height="@dimen/Star.Small" - android:scaleType="fitCenter" - android:layout_gravity="right|center_vertical" - android:background="@android:color/transparent" - android:focusable="false" - android:visibility="gone"/> + <TextView + android:id="@+id/album_artist" + android:layout_width="0dp" + android:layout_weight="1" + android:layout_height="wrap_content" + android:textSize="12sp" + android:textColor="?android:textColorSecondary" + android:singleLine="true" + android:text="@string/search.artists" + android:paddingLeft="@dimen/Card.TextLeftPadding"/> + + <ImageButton + android:id="@+id/album_star" + android:layout_width="@dimen/Star.Small" + android:layout_height="@dimen/Star.Small" + android:scaleType="fitCenter" + android:layout_gravity="right|center_vertical" + android:background="@android:color/transparent" + android:focusable="false" + android:visibility="gone"/> + </LinearLayout> </LinearLayout> + + <ImageView + android:id="@+id/item_more" + android:src="?attr/download_none" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right|center_vertical" + android:paddingRight="2dp" + style="@style/BasicButton"/> </LinearLayout> - <ImageView - android:id="@+id/item_more" - android:src="?attr/download_none" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_gravity="right|center_vertical" - android:paddingRight="2dp" - style="@style/BasicButton"/> </LinearLayout> - -</LinearLayout>
\ No newline at end of file +</github.daneren2005.dsub.view.CardView>
\ No newline at end of file diff --git a/app/src/main/res/layout/basic_cell_item.xml b/app/src/main/res/layout/basic_cell_item.xml index f522b196..fcfb6da5 100644 --- a/app/src/main/res/layout/basic_cell_item.xml +++ b/app/src/main/res/layout/basic_cell_item.xml @@ -1,39 +1,46 @@ <?xml version="1.0" encoding="utf-8"?> -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:orientation="vertical" +<github.daneren2005.dsub.view.CardView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="?attr/selectableItemBackground"> - - <github.daneren2005.dsub.view.SquareImageView - android:id="@+id/item_art" - android:layout_width="match_parent" - android:layout_height="match_parent"/> + android:layout_margin="2dp"> <LinearLayout + android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:paddingTop="4dp" - android:paddingLeft="2dp"> + android:layout_height="match_parent" + android:background="?attr/selectableItemBackground"> - <TextView - android:id="@+id/item_name" - android:layout_width="0dp" - android:layout_height="wrap_content" - android:layout_weight="1" - android:textAppearance="?android:attr/textAppearanceMedium" - android:singleLine="true" - android:ellipsize="marquee" - android:textColor="?android:textColorPrimary"/> + <github.daneren2005.dsub.view.SquareImageView + android:id="@+id/item_art" + android:layout_width="match_parent" + android:layout_height="match_parent"/> - <ImageView - android:id="@+id/item_more" - android:src="?attr/download_none" - android:layout_width="wrap_content" + <LinearLayout + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_gravity="right|center_vertical" - android:paddingRight="2dp" - style="@style/BasicButton"/> + android:orientation="horizontal" + android:paddingTop="4dp" + android:paddingLeft="2dp"> + + <TextView + android:id="@+id/item_name" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:textAppearance="?android:attr/textAppearanceMedium" + android:singleLine="true" + android:ellipsize="marquee" + android:textColor="?android:textColorPrimary" + android:paddingLeft="@dimen/Card.TextLeftPadding"/> + + <ImageView + android:id="@+id/item_more" + android:src="?attr/download_none" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="right|center_vertical" + android:paddingRight="2dp" + style="@style/BasicButton"/> + </LinearLayout> </LinearLayout> -</LinearLayout>
\ No newline at end of file +</github.daneren2005.dsub.view.CardView>
\ No newline at end of file diff --git a/app/src/main/res/layout/fast_scroller.xml b/app/src/main/res/layout/fast_scroller.xml index b2e244e3..bfe990dd 100644 --- a/app/src/main/res/layout/fast_scroller.xml +++ b/app/src/main/res/layout/fast_scroller.xml @@ -18,8 +18,8 @@ <ImageView android:id="@+id/fastscroller_handle" android:layout_width="wrap_content" - android:layout_marginRight="8dp" - android:layout_marginLeft="8dp" + android:layout_marginRight="4dp" + android:layout_marginLeft="12dp" android:layout_height="wrap_content" android:src="@drawable/fast_scroller_handle"/> </merge>
\ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 23a3f4a3..3431de0c 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,4 +6,7 @@ <dimen name="AlbumArt.Small">78dip</dimen> <dimen name="AlbumArt.Header">120dip</dimen> <dimen name="Star.Small">20dp</dimen> + <dimen name="Card.Radius">4dp</dimen> + <dimen name="Card.TextLeftPadding">8dp</dimen> + <dimen name="Card.MarginsForShadow">2dp</dimen> </resources>
\ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0b45b69e..ea6eb0d1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -38,7 +38,7 @@ </style> <style name="MoreButton" parent="BasicButton"> - <item name="android:paddingRight">14dip</item> + <item name="android:paddingRight">8dip</item> </style> <style name="PlaybackControl" parent="@style/BasicButton"> |