Skip to content

Commit 58eb89f

Browse files
authored
Merge pull request #60 from Petterpx/fix_gravity_disorderly
fix:修复gravity移除逻辑
2 parents 70bb99c + 56ee052 commit 58eb89f

13 files changed

Lines changed: 107 additions & 51 deletions

File tree

app/build.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,7 @@ dependencies {
4949
implementation 'androidx.appcompat:appcompat:1.2.0'
5050
implementation 'com.google.android.material:material:1.4.0'
5151
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
52-
implementation project(path: ':floatingx')
5352
implementation "androidx.lifecycle:lifecycle-common-java8:2.3.1"
5453
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.7'
55-
54+
implementation isDev ? project(path: ':floatingx') : "com.github.Petterpx:FloatingX:$version_name"
5655
}

app/src/main/java/com/petterp/floatingx/app/MainActivity.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.petterp.floatingx.util.createFx
1313

1414
class MainActivity : AppCompatActivity() {
1515

16-
private lateinit var viewGroup: ViewGroup
16+
private lateinit var viewGroup: FrameLayout
1717

1818
private val activityFx by createFx {
1919
setLayout(R.layout.item_floating)
@@ -31,7 +31,7 @@ class MainActivity : AppCompatActivity() {
3131
override fun onCreate(savedInstanceState: Bundle?) {
3232
super.onCreate(savedInstanceState)
3333
createLinearLayoutToParent {
34-
viewGroup = addScopeViewGroup()
34+
viewGroup = addScopeFrameViewGroup()
3535
addItemView("隐藏全局悬浮窗") {
3636
FloatingX.control().hide()
3737
}
@@ -92,7 +92,7 @@ class MainActivity : AppCompatActivity() {
9292
}
9393
}
9494

95-
private fun ViewGroup.addScopeViewGroup(): ViewGroup {
95+
private fun ViewGroup.addScopeFrameViewGroup(): FrameLayout {
9696
val viewGroup = FrameLayout(context).apply {
9797
layoutParams = FrameLayout.LayoutParams(
9898
FrameLayout.LayoutParams.MATCH_PARENT,

app/src/main/java/com/petterp/floatingx/app/ScopeActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import android.view.ViewGroup
88
import android.widget.*
99
import androidx.appcompat.app.AppCompatActivity
1010
import com.petterp.floatingx.app.simple.FxAnimationImpl
11+
import com.petterp.floatingx.assist.FxGravity
1112
import com.petterp.floatingx.util.createFx
1213

1314
/** @author petterp */
@@ -32,6 +33,7 @@ class ScopeActivity : AppCompatActivity() {
3233
setLayout(R.layout.item_floating)
3334
setEnableScrollOutsideScreen(false)
3435
setEnableEdgeAdsorption(false)
36+
setGravity(FxGravity.RIGHT_OR_TOP)
3537
setEdgeOffset(40f)
3638
setBottomBorderMargin(40f)
3739
setAnimationImpl(FxAnimationImpl())

app/src/main/java/com/petterp/floatingx/app/utils.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,17 @@ inline fun ViewGroup.addLinearLayout(obj: LinearLayout.() -> Unit) =
4444
}
4545
)
4646

47+
inline fun ViewGroup.addFrameLayout(obj: FrameLayout.() -> Unit) =
48+
addView(
49+
FrameLayout(context).apply {
50+
layoutParams = FrameLayout.LayoutParams(
51+
FrameLayout.LayoutParams.MATCH_PARENT,
52+
FrameLayout.LayoutParams.MATCH_PARENT
53+
)
54+
obj.invoke(this)
55+
}
56+
)
57+
4758
inline fun ViewGroup.addNestedScrollView(obj: NestedScrollView.() -> Unit) {
4859
addView(
4960
NestedScrollView(context).apply {

build.gradle

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,6 @@
11
// Top-level build file where you can add configuration options common to all sub-projects/modules.
22
buildscript {
3-
ext {
4-
kotlin_version = "1.5.21"
5-
minsdk_version = 21
6-
targetsdk_version = 31
7-
compilesdk_version = 31
8-
version_name = '1.1.2'
9-
versionCode = {
10-
def cmd = 'git rev-list HEAD --count'
11-
cmd.execute().text.trim().toInteger()
12-
}
13-
group_id = 'com.petterp'
14-
artifactId = 'floatingx'
15-
}
3+
apply from: "config.gradle"
164
repositories {
175
google()
186
mavenCentral()

config.gradle

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
ext {
2+
isDev = gradle.ext.IS_DEV
3+
kotlin_version = "1.5.21"
4+
minsdk_version = 21
5+
targetsdk_version = 31
6+
compilesdk_version = 31
7+
version_name = isDev ? '9.9.9' : gitVersionTag()
8+
versionCode = isDev ? "999" : gitVersionCode()
9+
group_id = 'com.petterp'
10+
artifactId = 'floatingx'
11+
}
12+
println "isDev:$isDev,versionName:$version_name,versionCode:$versionCode"
13+
14+
static def gitVersionTag() {
15+
def commit = 'git rev-list --tags --max-count=1'
16+
def cmd = "git describe --tags ${commit.execute().text}"
17+
def version = cmd.execute().text.trim()
18+
return version
19+
}
20+
21+
static def gitVersionCode() {
22+
def cmd = 'git rev-list HEAD --count'
23+
return cmd.execute().text.trim().toInteger()
24+
}

floatingx/src/main/java/com/petterp/floatingx/assist/FxGravity.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,16 @@ package com.petterp.floatingx.assist
22

33
import android.view.Gravity
44

5-
/**
6-
* 对于位置而言,至少需要两个方向才能确定位置,如果单纯一个方向,那么另一个方向将无法确定,即x或y其中一个将无法计算
7-
* */
5+
/** 对于位置而言,至少需要两个方向才能确定位置,如果单纯一个方向,那么另一个方向将无法确定,即x或y其中一个将无法计算 */
86
enum class FxGravity(val value: Int) {
97
DEFAULT(Gravity.START or Gravity.TOP),
108
LEFT_OR_TOP(Gravity.START or Gravity.TOP),
119
LEFT_OR_CENTER(Gravity.START or Gravity.CENTER),
1210
LEFT_OR_BOTTOM(Gravity.START or Gravity.BOTTOM),
1311
RIGHT_OR_TOP(Gravity.END or Gravity.TOP),
1412
RIGHT_OR_CENTER(Gravity.END or Gravity.CENTER),
15-
RIGHT_OR_BOTTOM(Gravity.END or Gravity.BOTTOM)
13+
RIGHT_OR_BOTTOM(Gravity.END or Gravity.BOTTOM);
14+
15+
/** 是否为默认位置 */
16+
fun isDefault() = this == DEFAULT
1617
}

floatingx/src/main/java/com/petterp/floatingx/assist/helper/BasisHelper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -420,8 +420,8 @@ open class BasisHelper {
420420

421421
/** 辅助坐标的实现 采用坐标偏移位置,框架自行计算合适的x,y */
422422
private fun adtSizeViewDirection() {
423-
// 如果坐标规则不符合要求,则按照默认规则
424-
if (!enableAssistLocation && gravity == FxGravity.DEFAULT) return
423+
// 如果坐标规则不符合要求,且未开启辅助定位,则直接返回
424+
if (!enableAssistLocation && !gravity.isDefault()) return
425425
val edgeOffset = if (enableEdgeRebound) edgeOffset else 0f
426426
val b = assistLocation.b + edgeOffset + borderMargin.b
427427
val t = assistLocation.t + edgeOffset + borderMargin.t

floatingx/src/main/java/com/petterp/floatingx/assist/helper/ScopeHelper.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.petterp.floatingx.assist.helper
22

33
import android.app.Activity
4-
import android.view.ViewGroup
4+
import android.widget.FrameLayout
55
import androidx.fragment.app.Fragment
66
import com.petterp.floatingx.impl.control.FxScopeControl
77
import com.petterp.floatingx.listener.control.IFxControl
@@ -19,7 +19,7 @@ class ScopeHelper : BasisHelper() {
1919
toControl().init(fragment)
2020

2121
/** 插入到ViewGroup中 */
22-
fun toControl(group: ViewGroup): IFxControl =
22+
fun toControl(group: FrameLayout): IFxControl =
2323
toControl().init(group)
2424

2525
private fun toControl(): IFxScopeControl<IFxControl> = FxScopeControl(this)

floatingx/src/main/java/com/petterp/floatingx/impl/control/FxScopeControl.kt

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.petterp.floatingx.impl.control
33
import android.app.Activity
44
import android.app.Application
55
import android.view.View
6-
import android.view.ViewGroup
6+
import android.widget.FrameLayout
77
import androidx.fragment.app.Fragment
88
import com.petterp.floatingx.assist.helper.BasisHelper
99
import com.petterp.floatingx.listener.control.IFxControl
@@ -24,24 +24,27 @@ class FxScopeControl(private val helper: BasisHelper) :
2424
getManagerView()?.show()
2525
}
2626

27-
override fun init(viewGroup: ViewGroup): IFxControl {
27+
override fun init(group: FrameLayout): IFxControl {
2828
helper.initLog(FxScopeEnum.VIEW_GROUP_SCOPE.tag)
29-
setContainerGroup(viewGroup)
29+
setContainerGroup(group)
3030
return this
3131
}
3232

3333
override fun init(fragment: Fragment): IFxControl {
3434
helper.initLog(FxScopeEnum.FRAGMENT_SCOPE.tag)
35-
val parent = fragment.requireView() as ViewGroup
36-
init(parent)
35+
val rootView = fragment.view as? FrameLayout
36+
checkNotNull(rootView) {
37+
"Check if your root layout is FrameLayout, or if the init call timing is after onCreateView()!"
38+
}
39+
setContainerGroup(rootView)
3740
return this
3841
}
3942

4043
override fun init(activity: Activity): IFxControl {
4144
helper.initLog(FxScopeEnum.ACTIVITY_SCOPE.tag)
4245
activity.contentView?.let {
43-
init(it)
44-
}
46+
setContainerGroup(it)
47+
} ?: helper.fxLog?.e("install to Activity the Error,current contentView(R.id.content) = null!")
4548
return this
4649
}
4750

0 commit comments

Comments
 (0)