From a698fb188aa0ccb2be9342c6ecea8e3c4d7b84a0 Mon Sep 17 00:00:00 2001 From: "a.marchuk" Date: Wed, 15 Jul 2015 20:38:39 +0300 Subject: [PATCH] [android] fix: Dynamic shadow for BottomSheet. --- android/3rd_party/BottomSheet/build.gradle | 4 ++ .../3rd_party/BottomSheet/gradle.properties | 1 - .../com/cocosw/bottomsheet/BottomSheet.java | 36 +++++++++++++++++- .../main/res/drawable-hdpi/bs_shadow.9.png | Bin 0 -> 116 bytes .../main/res/drawable-mdpi/bs_shadow.9.png | Bin 0 -> 108 bytes .../main/res/drawable-xhdpi/bs_shadow.9.png | Bin 0 -> 115 bytes .../main/res/drawable-xxhdpi/bs_shadow.9.png | Bin 0 -> 119 bytes .../main/res/drawable-xxxhdpi/bs_shadow.9.png | Bin 0 -> 133 bytes .../main/res/layout/bottom_sheet_dialog.xml | 25 ++++++++---- .../src/main/res/values/styles.xml | 1 - android/gradle.properties | 3 +- .../drawable/bg_toolbar_bottom_shadow.9.png | Bin 184 -> 0 bytes android/res/values/styles.xml | 2 +- 13 files changed, 57 insertions(+), 15 deletions(-) delete mode 100644 android/3rd_party/BottomSheet/gradle.properties create mode 100644 android/3rd_party/BottomSheet/src/main/res/drawable-hdpi/bs_shadow.9.png create mode 100644 android/3rd_party/BottomSheet/src/main/res/drawable-mdpi/bs_shadow.9.png create mode 100644 android/3rd_party/BottomSheet/src/main/res/drawable-xhdpi/bs_shadow.9.png create mode 100644 android/3rd_party/BottomSheet/src/main/res/drawable-xxhdpi/bs_shadow.9.png create mode 100644 android/3rd_party/BottomSheet/src/main/res/drawable-xxxhdpi/bs_shadow.9.png delete mode 100644 android/res/drawable/bg_toolbar_bottom_shadow.9.png diff --git a/android/3rd_party/BottomSheet/build.gradle b/android/3rd_party/BottomSheet/build.gradle index 375b7ce36c..777c623dad 100644 --- a/android/3rd_party/BottomSheet/build.gradle +++ b/android/3rd_party/BottomSheet/build.gradle @@ -20,4 +20,8 @@ dependencies { android { compileSdkVersion propTargetSdkVersion.toInteger() buildToolsVersion propBuildToolsVersion + + defaultConfig { + minSdkVersion propMinSdkVersion.toInteger() + } } \ No newline at end of file diff --git a/android/3rd_party/BottomSheet/gradle.properties b/android/3rd_party/BottomSheet/gradle.properties deleted file mode 100644 index c29e2d0984..0000000000 --- a/android/3rd_party/BottomSheet/gradle.properties +++ /dev/null @@ -1 +0,0 @@ -manifestmerger.enabled=false diff --git a/android/3rd_party/BottomSheet/src/main/java/com/cocosw/bottomsheet/BottomSheet.java b/android/3rd_party/BottomSheet/src/main/java/com/cocosw/bottomsheet/BottomSheet.java index 0fd5cbe07f..7711c24786 100644 --- a/android/3rd_party/BottomSheet/src/main/java/com/cocosw/bottomsheet/BottomSheet.java +++ b/android/3rd_party/BottomSheet/src/main/java/com/cocosw/bottomsheet/BottomSheet.java @@ -50,8 +50,10 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.view.Window; import android.view.WindowManager; +import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.BaseAdapter; +import android.widget.FrameLayout; import android.widget.GridView; import android.widget.ImageView; import android.widget.LinearLayout; @@ -79,6 +81,7 @@ public class BottomSheet extends Dialog implements DialogInterface { private boolean collapseListIcons; private int mStatusBarHeight; private GridView list; + private View listShadow; private SimpleSectionedGridAdapter adapter; private Builder builder; @@ -316,6 +319,8 @@ public class BottomSheet extends Dialog implements DialogInterface { list.setNumColumns(1); } + listShadow = mDialogView.findViewById(R.id.bottom_sheet_list_shadow); + if (builder.grid) { for (int i = 0; i < getMenu().size(); i++) { if (getMenu().getItem(i).getIcon() == null) @@ -475,6 +480,19 @@ public class BottomSheet extends Dialog implements DialogInterface { } } + public boolean shouldShowShadow() { + int first = list.getFirstVisiblePosition(); + if (first > 0) + return true; + + View child = list.getChildAt(0); + return (child.getTop() < 0); + } + + private void updateListShadow() { + listShadow.setVisibility(shouldShowShadow() ? View.VISIBLE : View.GONE); + } + private void showFullItems() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Transition changeBounds = new ChangeBounds(); @@ -484,7 +502,7 @@ public class BottomSheet extends Dialog implements DialogInterface { actions = fullMenuItem; updateSection(); adapter.notifyDataSetChanged(); - list.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT)); + list.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT)); icon.setVisibility(View.VISIBLE); icon.setImageDrawable(close); icon.setOnClickListener(new View.OnClickListener() { @@ -494,6 +512,17 @@ public class BottomSheet extends Dialog implements DialogInterface { } }); setListLayout(); + + list.setOnScrollListener(new AbsListView.OnScrollListener() { + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { + updateListShadow(); + } + }); } private void showShortItems() { @@ -508,6 +537,9 @@ public class BottomSheet extends Dialog implements DialogInterface { icon.setVisibility(View.VISIBLE); icon.setImageDrawable(builder.icon); } + + list.setOnScrollListener(null); + listShadow.setVisibility(View.GONE); } private boolean hasDivider() { @@ -529,7 +561,7 @@ public class BottomSheet extends Dialog implements DialogInterface { } View lastChild = list.getChildAt(list.getChildCount() - 1); if (lastChild != null) - list.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, lastChild.getBottom() + lastChild.getPaddingBottom() + list.getPaddingBottom())); + list.setLayoutParams(new FrameLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, lastChild.getBottom() + lastChild.getPaddingBottom() + list.getPaddingBottom())); } }); } diff --git a/android/3rd_party/BottomSheet/src/main/res/drawable-hdpi/bs_shadow.9.png b/android/3rd_party/BottomSheet/src/main/res/drawable-hdpi/bs_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..00696aa75702f92f2f2a0a20eb8dcb392703561b GIT binary patch literal 116 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh0wlLOK8*rW)}AhoAr*{UFKlOQFc3K4z;;TPkd-G2CR=Ho{jKO8;jTK;f0 QKw}s@UHx3vIVCg!0OE`(t^fc4 literal 0 HcmV?d00001 diff --git a/android/3rd_party/BottomSheet/src/main/res/drawable-mdpi/bs_shadow.9.png b/android/3rd_party/BottomSheet/src/main/res/drawable-mdpi/bs_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1a784f3c12dfd6b0a38023ab42fef97d8fbe7a02 GIT binary patch literal 108 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V3y@T|W;X*;#-1*YAso@k2?+^5`q>U1VBl?P z4ZWxk5g^3d#QO7sLc|1KAYh!TQ1V5Eymod6|2dJIF)78&qol`;+ E02{p>E&u=k literal 0 HcmV?d00001 diff --git a/android/3rd_party/BottomSheet/src/main/res/drawable-xhdpi/bs_shadow.9.png b/android/3rd_party/BottomSheet/src/main/res/drawable-xhdpi/bs_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..62083b02e8b93ecf4693f0f8c75f609c0dbdc6c0 GIT binary patch literal 115 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|mtUO&DLn;`P6B81CoNtgfXcCbW z4)`L!=jzSoK0QpI|IM;dv*OYHV{e{Vzw1E6!I%!n0txe`~JMn9-t`< Mp00i_>zopr0KJVO9{>OV literal 0 HcmV?d00001 diff --git a/android/3rd_party/BottomSheet/src/main/res/drawable-xxhdpi/bs_shadow.9.png b/android/3rd_party/BottomSheet/src/main/res/drawable-xxhdpi/bs_shadow.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4dcf1830ca234efda36932df293cdd529bc15f8d GIT binary patch literal 119 zcmeAS@N?(olHy`uVBq!ia0vp^QXtI10wkH8TU>#Zou`Xqh{fr*R}S(rC~zFTkR);P zue$Jl;{yi;lHb3NVs_ChPEeaD)1k7c=bHQWz%OpUrGnx^6s1I}1S3j)(5;V7aV9 - + + + + \ No newline at end of file diff --git a/android/3rd_party/BottomSheet/src/main/res/values/styles.xml b/android/3rd_party/BottomSheet/src/main/res/values/styles.xml index 4644e2b4a3..8b1321bb70 100644 --- a/android/3rd_party/BottomSheet/src/main/res/values/styles.xml +++ b/android/3rd_party/BottomSheet/src/main/res/values/styles.xml @@ -159,7 +159,6 @@ ?bs_dividerColor fill_parent 1dp - 8dp \ No newline at end of file diff --git a/android/gradle.properties b/android/gradle.properties index 29944072e8..9b61e6e40c 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -6,5 +6,4 @@ propVersionName=4.4.3 propDebugNdkFlags=V=1 NDK_DEBUG=1 DEBUG=1 propReleaseNdkFlags=V=1 NDK_DEBUG=0 PRODUCTION=1 -propStatisticsUrl="http://localhost:8080" -manifestmerger.enabled=false +propStatisticsUrl="http://localhost:8080" \ No newline at end of file diff --git a/android/res/drawable/bg_toolbar_bottom_shadow.9.png b/android/res/drawable/bg_toolbar_bottom_shadow.9.png deleted file mode 100644 index 7dd85936ba13f0727c74555d770d6dfe82917093..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^Vn8g!!3HGbRrPd%RK2H*V@SoVtyir1njHk16Fn+) zLMGT9kYu{zz`XN+tB0WRrWawaw|)s#{`*wrWc~6PZ?y{!ocpMIfr~q$qUq*k7q=e; zJK7Hh`&(5M|4_Z)boilFfU8XV-M23ePZZLL;SxD=$aTS=V~1wWXq}%VR@V_}A!@z; kyqNBqxH|w;UHx3vIVCg!06T6;f&c&j diff --git a/android/res/values/styles.xml b/android/res/values/styles.xml index cfbc013f26..3418c66548 100644 --- a/android/res/values/styles.xml +++ b/android/res/values/styles.xml @@ -163,7 +163,7 @@