From 505a0414b884711d00c19f08573d701029962c9f Mon Sep 17 00:00:00 2001
From: yezhiqiu <983577727@qq.com>
Date: Fri, 24 Apr 2026 10:29:15 +0800
Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8D=E9=83=A8=E5=88=86=E6=9C=BA?=
=?UTF-8?q?=E5=9E=8B=E8=BF=98=E4=BC=9A=E5=87=BA=E7=8E=B0=E8=BE=93=E5=85=A5?=
=?UTF-8?q?=E6=A1=86=E8=A2=AB=E9=94=AE=E7=9B=98=E6=8C=A1=E4=BD=8F=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 2 +-
app/src/main/AndroidManifest.xml | 3 +-
.../adapter/SubscriptionHistoryAdapter.kt | 11 ++---
.../com/abbidot/tracker/base/BaseActivity.kt | 48 +++++++++++++++----
.../activity/account/AddEmailValidActivity.kt | 3 +-
.../AddAndEditFencesZoneBaseActivity.kt | 13 +++--
.../device/wifi/EditWifiPowerZoneActivity.kt | 2 +-
.../ui/activity/help/FeedbackActivity.kt | 7 ++-
.../ui/activity/pet/PetProfileActivity.kt | 5 +-
.../map/googlemap/BaseGoogleMapFragment.kt | 25 +++++-----
.../layout/activity_add_edit_fences_zone.xml | 2 +
app/src/main/res/layout/activity_feedback.xml | 2 +-
12 files changed, 81 insertions(+), 42 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 49c1ce6..9c71b9b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -30,7 +30,7 @@ android {
targetSdkVersion 35
versionCode 2202
// versionName "2.2.2"
- versionName "2.2.2-Beta6"
+ versionName "2.2.2-Beta7"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 497e206..004501c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -385,7 +385,8 @@
+ android:screenOrientation="portrait"
+ android:windowSoftInputMode="adjustPan" />
(R.id.tv_subscription_history_annual_care).apply {
diff --git a/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt b/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt
index e631005..a386a14 100644
--- a/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/base/BaseActivity.kt
@@ -86,8 +86,8 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl
// 监听因输入框弹出,遮挡输入框,界面移动,需要移动的view
private var mTranslateView: View? = null
- /*****************************监听软键盘弹出,输入框上移start************************************/
- private var isKeyboardTranslate = true
+ /*****************************监听软键盘弹出,输入框上移 ************************************/
+ var isKeyboardTranslate = true
//是否需要适配底部EdgeToEdge
var isEdgeToEdgeAdapterNavigationBars = true
@@ -231,16 +231,25 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl
/**
* 监听键盘弹出和隐藏,解决键盘弹出挡住输入框的问题
*/
- fun setListenKeyboardChange(windowTranslateY: Int = 500, view: View = window.decorView) {
+ fun setListenKeyboardChange(
+ windowTranslateY: Int = 500,
+ view: View = window.decorView,
+ methodType: Int = ConstantInt.Type0
+ ) {
val metrics = getResources().displayMetrics
val screenWidth = metrics.widthPixels
// val screenHeight = metrics.heightPixels
val scaleFactor = screenWidth / 1080 // 假设 1080 是设计宽度
- window.decorView.viewTreeObserver.addOnGlobalLayoutListener {
- onLayoutChange(view, windowTranslateY * scaleFactor)
+ view.viewTreeObserver.addOnGlobalLayoutListener {
+ if (methodType == ConstantInt.Type0) {
+ onLayoutChange(view, windowTranslateY * scaleFactor)
+ } else {
+ onGlobalLayoutChange(view, windowTranslateY * scaleFactor)
+ }
}
}
+
/**
* 设置其他包含的view点击。隐藏软键盘,如ScrollView
*/
@@ -834,10 +843,10 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl
private fun onLayoutChange(translateView: View, translateY: Int) {
mTranslateView = translateView
//获取当前屏幕内容的高度
- val screenHeight = window.decorView.height
+ val screenHeight = translateView.height
//获取View可见区域的bottom
val rect = Rect()
- window.decorView.getWindowVisibleDisplayFrame(rect)
+ translateView.getWindowVisibleDisplayFrame(rect)
if (screenHeight - getNavigatorBarHeight() > rect.bottom) {
// 获取按钮的左上角,按钮高度为40dp
// val location = IntArray(2)
@@ -845,7 +854,7 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl
// val bottom = location[1] + resources.getDimensionPixelSize(R.dimen.dp_80)
//// 如果按钮被覆盖,移动整个界面向上移动
// if (bottom > rect.bottom) {
-// window.decorView.scrollBy(0, bottom - rect.bottom)
+// translateView.scrollBy(0, bottom - rect.bottom)
// isKeyboardTranslate = true
// }
if (!isKeyboardTranslate) {
@@ -864,5 +873,28 @@ abstract class BaseActivity(val inflater: (inflater: LayoutInfl
hideSoftKeyboardCallback()
}
}
+
+ private fun onGlobalLayoutChange(translateView: View, translateY: Int) {
+ mTranslateView = translateView
+ val r = Rect()
+ translateView.getWindowVisibleDisplayFrame(r)
+ val heightDiff = translateView.getRootView().height - (r.bottom - r.top)
+ if (heightDiff > 200) { // 如果高度差大于200,说明键盘是弹出的
+ // 进行布局调整
+ if (!isKeyboardTranslate) {
+ //移动到指定位置点坐标
+ translateView.scrollBy(0, translateY)
+ isKeyboardTranslate = true
+ }
+ LogUtil.e("如果高度差大于200,说明键盘是弹出的")
+ showSoftKeyboardCallback()
+ } else {
+ // 键盘隐藏,恢复布局
+ isKeyboardTranslate = false
+ LogUtil.e("键盘隐藏,恢复布局")
+ translateView.scrollTo(0, 0)
+ hideSoftKeyboardCallback()
+ }
+ }
/*****************************监听软键盘弹出,输入框上移end************************************/
}
\ No newline at end of file
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt
index 34cdb07..59d698d 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/account/AddEmailValidActivity.kt
@@ -7,6 +7,7 @@ import coil.transform.BlurTransformation
import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseActivity
+import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.databinding.ActivityAddEmailValidBinding
import com.abbidot.tracker.ui.fragment.account.EmailValidFragment
@@ -31,7 +32,7 @@ open class AddEmailValidActivity :
ivForgotPasswordV2BlurBg.load(R.drawable.icon_login_v2_bg) {
transformations(BlurTransformation(mContext, 25f))
}
- setListenKeyboardChange(750)
+ setListenKeyboardChange(750, methodType = ConstantInt.Type1)
}
switchFragment(mIndex)
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt
index c9967d0..f2b89f2 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/fences/AddAndEditFencesZoneBaseActivity.kt
@@ -181,6 +181,7 @@ open class AddAndEditFencesZoneBaseActivity :
rlAddEditFencesZoneInfoLayout.setOnTouchListener { v, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
+ hideInputMethod(v)
oldY = event.y
}
@@ -188,10 +189,12 @@ open class AddAndEditFencesZoneBaseActivity :
}
MotionEvent.ACTION_UP -> {
- if (event.y - oldY > slideDis) {
- downLayout()
- } else if (event.y - oldY < -slideDis) {
- slideUpLayout()
+ if (!isKeyboardTranslate) {
+ if (event.y - oldY > slideDis) {
+ downLayout()
+ } else if (event.y - oldY < -slideDis) {
+ slideUpLayout()
+ }
}
}
}
@@ -203,7 +206,7 @@ open class AddAndEditFencesZoneBaseActivity :
}
}
- setListenKeyboardChange()
+ setListenKeyboardChange(methodType = ConstantInt.Type1)
setFenceName()
}
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt
index c396e42..acf68c5 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/EditWifiPowerZoneActivity.kt
@@ -118,7 +118,7 @@ class EditWifiPowerZoneActivity :
add(R.id.fc_edit_power_zone_map_fragment, mFragment)
}
- setListenKeyboardChange(600)
+// setListenKeyboardChange(600)
if (null != mBleTrackDeviceBean) {
ilEditPowerZoneBluetoothTips.trbBleConnectState.let {
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt
index fe8a83d..6f0b454 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/help/FeedbackActivity.kt
@@ -88,19 +88,18 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB
setOnClickListenerViews(btnSubmitSettingFeedback, llSelectImageBtnLayout)
setViewClickHideInputMethod(llSettingFeedbackLayout)
+ setListenKeyboardChange(300, svSettingFeedbackScroll)
}
-
- setListenKeyboardChange(300)
}
//添加图片后,再输入邮箱,输入框被挡住
override fun showSoftKeyboardCallback() {
mViewBinding.apply {
if (ilFeedbackPhoneLayout.etInputContent.hasFocus()) {
- if (mUploadImageUrlList.size > 0) svSettingFeedbackScroll.postDelayed({
+ if (mUploadImageUrlList.size > 0) svSettingFeedbackScroll.postDelayed({
svSettingFeedbackScroll.scrollY = 1000
}, 400)
- else svSettingFeedbackScroll.scrollY = 600
+ else svSettingFeedbackScroll.scrollY = 500
}
}
}
diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt
index 78e3332..2c26d51 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/activity/pet/PetProfileActivity.kt
@@ -156,7 +156,7 @@ class PetProfileActivity :
setPetData()
mPetViewModel.getPetLabels(this)
- setListenKeyboardChange()
+ setListenKeyboardChange(methodType = ConstantInt.Type1)
}
override fun liveDataObserve() {
@@ -572,7 +572,8 @@ class PetProfileActivity :
override fun onClick(v: View?) {
mViewBinding.apply {
- when (v!!) {
+ hideInputMethod(v!!)
+ when (v) {
ilPetProfileHeadLayout.ilPetProfileHead.appHeadImage -> ViewUtil.instance.goSelectPhoto(
this@PetProfileActivity, ResultCode.ResultCode_1
)
diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt
index ce43970..f51ff9f 100644
--- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt
+++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt
@@ -71,7 +71,7 @@ abstract class BaseGoogleMapFragment :
BaseFragment(FragmentGoogleMapBinding::inflate), OnMapReadyCallback {
var mGoogleMap: GoogleMap? = null
- private lateinit var mGoogleMapView: MapView
+ private var mGoogleMapView: MapView? = null
/**地图样式类型:卫星/标准
* GoogleMap.MAP_TYPE_NONE 不显示地图
@@ -142,7 +142,7 @@ abstract class BaseGoogleMapFragment :
camera(position)
}
mGoogleMapView = MapView(this.requireActivity(), options)
- mGoogleMapView.onCreate(mapViewBundle)
+ mGoogleMapView?.onCreate(mapViewBundle)
mViewBinding.root.addView(mGoogleMapView)
return mViewBinding.root
@@ -150,12 +150,12 @@ abstract class BaseGoogleMapFragment :
override fun initData() {
super.initData()
- mGoogleMapView.getMapAsync(this)
+ mGoogleMapView?.getMapAsync(this)
}
override fun onResume() {
super.onResume()
- mGoogleMapView.onResume()
+ mGoogleMapView?.onResume()
mGoogleMap?.apply {
val mapTypeSp = Util.getMapTypeSp()
@@ -169,7 +169,7 @@ abstract class BaseGoogleMapFragment :
override fun onStart() {
super.onStart()
- mGoogleMapView.onStart()
+ mGoogleMapView?.onStart()
}
override fun onSaveInstanceState(outState: Bundle) {
@@ -180,18 +180,18 @@ abstract class BaseGoogleMapFragment :
mapViewBundle = Bundle()
outState.putBundle(mMapviewBundleKey, mapViewBundle)
}
- mGoogleMapView.onSaveInstanceState(mapViewBundle)
+ mGoogleMapView?.onSaveInstanceState(mapViewBundle)
}
override fun onPause() {
super.onPause()
- mGoogleMapView.onPause()
+ mGoogleMapView?.onPause()
}
override fun onLowMemory() {
super.onLowMemory()
- mGoogleMapView.onLowMemory()
+ mGoogleMapView?.onLowMemory()
}
/**
@@ -322,7 +322,8 @@ abstract class BaseGoogleMapFragment :
}
}
}
- else->{
+
+ else -> {
}
@@ -478,7 +479,7 @@ abstract class BaseGoogleMapFragment :
// } else {
// onRefreshPetCurrentLocationOk(mGoogleMap!!)
// }
- mGoogleMapView.postDelayed({
+ mGoogleMapView?.postDelayed({
onRefreshPetCurrentLocationOk(mGoogleMap!!)
}, 500)
}
@@ -1249,13 +1250,13 @@ abstract class BaseGoogleMapFragment :
override fun onStop() {
super.onStop()
mCancellationTokenSource?.cancel()
- mGoogleMapView.onStop()
+ mGoogleMapView?.onStop()
}
override fun onDestroy() {
super.onDestroy()
mPetHeadIconBitmap?.recycle()
- mGoogleMapView.onDestroy()
+ mGoogleMapView?.onDestroy()
}
}
diff --git a/app/src/main/res/layout/activity_add_edit_fences_zone.xml b/app/src/main/res/layout/activity_add_edit_fences_zone.xml
index 97d1cdf..fd0d755 100644
--- a/app/src/main/res/layout/activity_add_edit_fences_zone.xml
+++ b/app/src/main/res/layout/activity_add_edit_fences_zone.xml
@@ -65,6 +65,8 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/shape20_white_half_bottom_bg"
+ android:clickable="true"
+ android:focusable="true"
android:paddingHorizontal="@dimen/dp_22"
android:paddingBottom="@dimen/dp_22">
diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml
index adff781..29ea402 100644
--- a/app/src/main/res/layout/activity_feedback.xml
+++ b/app/src/main/res/layout/activity_feedback.xml
@@ -20,7 +20,7 @@
android:id="@+id/ll_setting_feedback_layout"
style="@style/root_layout_style"
android:layout_marginHorizontal="@dimen/dp_16"
- android:layout_marginVertical="@dimen/dp_18"
+ android:layout_marginBottom="@dimen/dp_18"
android:fitsSystemWindows="true"
android:orientation="vertical">