From 209d5a0df27363267e28ef563747f41cec9c4a31 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 16:43:14 +0800 Subject: [PATCH 1/9] Set layoutParams --- .../java/com/andrognito/flashbar/FlashbarContainerView.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt index a6ea1e7..e4dd7cb 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt @@ -56,6 +56,10 @@ internal class FlashbarContainerView(context: Context) private var showOverlay: Boolean = false private var overlayBlockable: Boolean = false + init { + layoutParams = RelativeLayout.LayoutParams(MATCH_PARENT, MATCH_PARENT) + } + override fun onInterceptTouchEvent(event: MotionEvent): Boolean { when (event.action) { ACTION_DOWN -> { From d1f4f7b61ff8f0a3bec6aa8b1710468c22cf8ddb Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 16:43:20 +0800 Subject: [PATCH 2/9] no need adjust orientation --- flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt b/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt index d81f4f2..d773f83 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt @@ -52,7 +52,6 @@ class Flashbar private constructor(private var builder: Builder) { private fun construct() { flashbarContainerView = FlashbarContainerView(builder.activity) - flashbarContainerView.adjustOrientation(builder.activity) flashbarContainerView.addParent(this) flashbarView = FlashbarView(builder.activity) From 3ba3e2a7704adeedbf82b568aedd5bcaecf2acc5 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 16:44:17 +0800 Subject: [PATCH 3/9] Activity rootView use contentView --- .../src/main/java/com/andrognito/flashbar/util/CommonUtils.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt b/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt index bd21f65..705dc6d 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt @@ -50,7 +50,7 @@ internal fun Activity?.getRootView(): ViewGroup? { if (this == null || window == null || window.decorView == null) { return null } - return window.decorView as ViewGroup + return window.decorView.findViewById(android.R.id.content) as? ViewGroup } internal fun Context.convertDpToPx(dp: Int): Int { From debb7d188f6769f7bd314012412aa7adbff91e68 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 17:23:31 +0800 Subject: [PATCH 4/9] Add Activity?.getContentView() method --- .../main/java/com/andrognito/flashbar/util/CommonUtils.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt b/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt index 705dc6d..1d4562f 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/util/CommonUtils.kt @@ -47,6 +47,13 @@ internal fun Activity.getNavigationBarSizeInPx(): Int { } internal fun Activity?.getRootView(): ViewGroup? { + if (this == null || window == null || window.decorView == null) { + return null + } + return window.decorView as? ViewGroup +} + +internal fun Activity?.getContentView(): ViewGroup? { if (this == null || window == null || window.decorView == null) { return null } From 9f0beea03f0867c74802c4992d2744a02243cfa7 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 17:24:12 +0800 Subject: [PATCH 5/9] Change the parameter to anchorViewGroup --- .../com/andrognito/flashbar/FlashbarContainerView.kt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt index e4dd7cb..3a4f308 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt @@ -20,6 +20,7 @@ import com.andrognito.flashbar.anim.FlashAnimBarBuilder import com.andrognito.flashbar.anim.FlashAnimIconBuilder import com.andrognito.flashbar.util.NavigationBarPosition.* import com.andrognito.flashbar.util.afterMeasured +import com.andrognito.flashbar.util.getContentView import com.andrognito.flashbar.util.getNavigationBarPosition import com.andrognito.flashbar.util.getNavigationBarSizeInPx import com.andrognito.flashbar.util.getRootView @@ -139,16 +140,14 @@ internal class FlashbarContainerView(context: Context) layoutParams = flashbarContainerViewLp } - - internal fun show(activity: Activity) { + internal fun show(anchorViewGroup: ViewGroup) { if (isBarShowing || isBarShown) return - val activityRootView = activity.getRootView() ?: return // Only add the withView to the parent once - if (this.parent == null) activityRootView.addView(this) + if (this.parent == null) anchorViewGroup.addView(this) - activityRootView.afterMeasured { + anchorViewGroup.afterMeasured { val enterAnim = enterAnimBuilder.withView(flashbarView).build() enterAnim.start(object : FlashAnim.InternalAnimListener { override fun onStart() { From 879b0587ca8553e235ab3b10d6fd410f539b0a04 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 17:25:21 +0800 Subject: [PATCH 6/9] if gravity == top use rootView otherwise use contentView --- .../src/main/java/com/andrognito/flashbar/Flashbar.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt b/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt index d773f83..d286d05 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/Flashbar.kt @@ -15,6 +15,8 @@ import com.andrognito.flashbar.Flashbar.Gravity.TOP import com.andrognito.flashbar.anim.FlashAnim import com.andrognito.flashbar.anim.FlashAnimBarBuilder import com.andrognito.flashbar.anim.FlashAnimIconBuilder +import com.andrognito.flashbar.util.getContentView +import com.andrognito.flashbar.util.getRootView private const val DEFAULT_SHADOW_STRENGTH = 4 private const val DEFAUT_ICON_SCALE = 1.0f @@ -28,7 +30,13 @@ class Flashbar private constructor(private var builder: Builder) { * Shows a flashbar */ fun show() { - flashbarContainerView.show(builder.activity) + val anchorViewGroup = if (builder.gravity == TOP) { + builder.activity.getRootView() + } else { + builder.activity.getContentView() + } ?: return + + flashbarContainerView.show(anchorViewGroup) } /** From 2e9aa8c4eedcf7e1decfc871c9204425cef838e5 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Thu, 20 May 2021 17:36:06 +0800 Subject: [PATCH 7/9] Remove useless references --- .../main/java/com/andrognito/flashbar/FlashbarContainerView.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt index 3a4f308..72eaeda 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarContainerView.kt @@ -20,10 +20,8 @@ import com.andrognito.flashbar.anim.FlashAnimBarBuilder import com.andrognito.flashbar.anim.FlashAnimIconBuilder import com.andrognito.flashbar.util.NavigationBarPosition.* import com.andrognito.flashbar.util.afterMeasured -import com.andrognito.flashbar.util.getContentView import com.andrognito.flashbar.util.getNavigationBarPosition import com.andrognito.flashbar.util.getNavigationBarSizeInPx -import com.andrognito.flashbar.util.getRootView /** * Container withView matching the height and width of the parent to hold a FlashbarView. From 7c0069b841bc2857045dbce231a89065f85021ab Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Tue, 29 Jun 2021 10:08:48 +0800 Subject: [PATCH 8/9] Remove bottom compensation margin --- .../com/andrognito/flashbar/FlashbarView.kt | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt index 46d7108..ad847e0 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt @@ -44,28 +44,12 @@ import kotlinx.android.synthetic.main.flash_bar_view.view.* internal class FlashbarView(context: Context) : LinearLayout(context) { private val TOP_COMPENSATION_MARGIN = resources.getDimension(R.dimen.fb_top_compensation_margin).toInt() - private val BOTTOM_COMPENSATION_MARGIN = resources.getDimension(R.dimen.fb_bottom_compensation_margin).toInt() private lateinit var parentFlashbarContainer: FlashbarContainerView private lateinit var gravity: Gravity private var isMarginCompensationApplied: Boolean = false - override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { - super.onMeasure(widthMeasureSpec, heightMeasureSpec) - - if (!isMarginCompensationApplied) { - isMarginCompensationApplied = true - - val params = layoutParams as ViewGroup.MarginLayoutParams - when (gravity) { - TOP -> params.topMargin = -TOP_COMPENSATION_MARGIN - BOTTOM -> params.bottomMargin = -BOTTOM_COMPENSATION_MARGIN - } - requestLayout() - } - } - internal fun init( gravity: Gravity, castShadow: Boolean, @@ -101,7 +85,6 @@ internal class FlashbarView(context: Context) : LinearLayout(context) { flashbarViewLp.addRule(ALIGN_PARENT_TOP) } BOTTOM -> { - flashbarViewContentLp.bottomMargin = BOTTOM_COMPENSATION_MARGIN flashbarViewLp.addRule(ALIGN_PARENT_BOTTOM) } } From 04f35da0ec82053f4a1d9b195e4e36324bfab334 Mon Sep 17 00:00:00 2001 From: Zhiwei Deng Date: Tue, 29 Jun 2021 10:11:11 +0800 Subject: [PATCH 9/9] Remove isMarginCompensationApplied --- flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt index ad847e0..cbf4274 100644 --- a/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt +++ b/flashbar/src/main/java/com/andrognito/flashbar/FlashbarView.kt @@ -48,8 +48,6 @@ internal class FlashbarView(context: Context) : LinearLayout(context) { private lateinit var parentFlashbarContainer: FlashbarContainerView private lateinit var gravity: Gravity - private var isMarginCompensationApplied: Boolean = false - internal fun init( gravity: Gravity, castShadow: Boolean,