From 5381a21c63db821712f22dedc66bc56e79e55f24 Mon Sep 17 00:00:00 2001 From: yezhiqiu <983577727@qq.com> Date: Tue, 6 Jan 2026 09:41:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=91=A8=E6=9C=9F3=E5=A4=A9,?= =?UTF-8?q?5=E5=A4=A9=E7=9A=84=E8=AE=A2=E9=98=85,=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=B7=B2=E5=90=8C=E6=AD=A5=E4=BB=A5=E5=A4=A9=E4=B8=BA=E5=8D=95?= =?UTF-8?q?=E4=BD=8D=E7=9A=84=E8=AE=A2=E9=98=85=EF=BC=9B=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=9B=BE=E7=89=87=E5=90=8E=EF=BC=8C=E5=86=8D=E8=BE=93?= =?UTF-8?q?=E5=85=A5=E9=82=AE=E7=AE=B1=EF=BC=8C=E8=BE=93=E5=85=A5=E6=A1=86?= =?UTF-8?q?=E8=A2=AB=E6=8C=A1=E4=BD=8F=EF=BC=9B=20=E8=AE=A2=E9=98=85?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E5=A5=97=E9=A4=90=E8=AF=A6=E6=83=85=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=BF=9D=E9=99=A9=E6=9C=89=E4=B8=AA=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E5=80=BC64.8=E5=85=83=EF=BC=8C=E5=AF=BC=E8=87=B4=E4=B9=B03?= =?UTF-8?q?=E4=B8=AA=E6=9C=88=E5=A5=97=E9=A4=90=E5=8D=B4=E6=94=AF=E4=BB=98?= =?UTF-8?q?=E4=BA=863=E5=B9=B4=E7=9A=84=E4=BF=9D=E9=99=A9=EF=BC=9B=20wifi?= =?UTF-8?q?=20=E8=AE=BE=E7=BD=AE=E8=B7=B3=E8=BF=87=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E8=BE=93=E5=85=A5=E9=A1=B5=E9=9D=A2=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../tracker/adapter/ChoosePlanAdapter.kt | 5 ++ .../tracker/adapter/MySubscriptionAdapter.kt | 9 ++-- .../adapter/SubscriptionHistoryAdapter.kt | 7 ++- .../tracker/constant/ConstantString.kt | 2 + .../activity/device/AddNewTracker3Activity.kt | 2 +- .../device/wifi/AddWifiPowerZone3Activity.kt | 5 +- .../ui/activity/help/FeedbackActivity.kt | 33 +++++++++++-- .../subscribe/SureSubscriptionPlanActivity.kt | 48 +++++++++++++------ .../ui/common/map/FencesAddEditMapCommon.kt | 12 +---- .../java/com/abbidot/tracker/util/ViewUtil.kt | 7 +-- app/src/main/res/layout/activity_feedback.xml | 7 ++- .../activity_sure_subscription_plan.xml | 4 +- .../res/layout/item_choose_plan_layout.xml | 1 + app/src/main/res/values/strings.xml | 5 ++ 15 files changed, 106 insertions(+), 43 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index d76902d..88768ff 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,7 +30,7 @@ android { targetSdkVersion 35 versionCode 2101 // versionName "2.1.1" - versionName "2.1.1-Beta13" + versionName "2.1.1-Beta15" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt index f9ba63f..e93d84c 100644 --- a/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt +++ b/app/src/main/java/com/abbidot/tracker/adapter/ChoosePlanAdapter.kt @@ -8,6 +8,7 @@ import com.abbidot.baselibrary.util.Utils import com.abbidot.tracker.R import com.abbidot.tracker.bean.PackageBean import com.abbidot.tracker.constant.ConstantInt +import com.abbidot.tracker.constant.ConstantString /** *Created by .yzq on 2024/8/6/006. @@ -42,6 +43,10 @@ class ChoosePlanAdapter( mContext.getString(R.string.txt_money_unit), "${item.planPrice}" ) + getTextView(R.id.tv_choose_plan_item_unit).text = + if (item.mealUnit == ConstantString.PackageUnitDay) mContext.getString(R.string.txt_per_day) + else mContext.getString(R.string.txt_per_month) + getTextView(R.id.tv_choose_plan_item_billed_money).text = item.billedMode diff --git a/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt index aa45712..7f08398 100644 --- a/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt +++ b/app/src/main/java/com/abbidot/tracker/adapter/MySubscriptionAdapter.kt @@ -50,14 +50,17 @@ class MySubscriptionAdapter( mContext.getString(R.string.txt_auto_subscription_year), item.autoRenewPrice.toString() ) + else if (item.mealUnit == ConstantString.PackageUnitDay) String.format( + mContext.getString(R.string.txt_auto_subscription_day), + "${item.autoRenewPrice}", + "${item.mealPeriod}" + ) else String.format( mContext.getString(R.string.txt_auto_subscription_month), item.autoRenewPrice.toString() ) View.VISIBLE - } else { - View.GONE - } + } else View.GONE } holder.setText( R.id.tv_my_subscription_active_time, diff --git a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt index bd01919..ce42394 100644 --- a/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt +++ b/app/src/main/java/com/abbidot/tracker/adapter/SubscriptionHistoryAdapter.kt @@ -62,16 +62,19 @@ class SubscriptionHistoryAdapter( R.id.tv_subscription_annual_care_active_time, Utils.stringToDate(item.createTime, resultFormat = Utils.DATE_FORMAT_PATTERN_EN7) ) + //保险时长,不足一年按12个月算 + val insuranceTime = + if (item.planTimeMonthsCount > 12) item.mealPeriod else 1 holder.setText( R.id.tv_subscription_annual_care_expiry_time, Utils.formatTime( Utils.getAfterHowTimestamp( - Utils.stringToTimestamp(item.createTime), item.mealPeriod * 365L + Utils.stringToTimestamp(item.createTime), insuranceTime * 365L ), Utils.DATE_FORMAT_PATTERN_EN7 ) ) holder.setText( R.id.tv_subscription_annual_care_package, - String.format(context.getString(R.string.txt_year_care), "${item.mealPeriod}") + String.format(context.getString(R.string.txt_year_care), "$insuranceTime") ) holder.setText( R.id.tv_subscription_annual_care_price, diff --git a/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt b/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt index fd2287a..eb81a93 100644 --- a/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt +++ b/app/src/main/java/com/abbidot/tracker/constant/ConstantString.kt @@ -54,6 +54,7 @@ import androidx.annotation.StringDef ConstantString.PetWeight, ConstantString.Upgrade, ConstantString.Password, + ConstantString.PackageUnitDay, ConstantString.PackageUnitMonth, ConstantString.PackageUnitYear, ConstantString.SetMealIndex @@ -111,6 +112,7 @@ annotation class ConstantString { //套餐单位 const val PackageUnitMonth = "MONTH" const val PackageUnitYear = "YEAR" + const val PackageUnitDay = "DAY" //只是用来区分类型 const val Type = "type" diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt index 10cec97..67910c9 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/AddNewTracker3Activity.kt @@ -214,7 +214,7 @@ class AddNewTracker3Activity : private fun scanFinished() { mAnimatorSet?.cancel() mViewBinding.ivAddNewTracker3RefreshBtn.isEnabled = true - if (mScanDeviceAdapter.getData().size == 0) { + if (isFrontRunning && mScanDeviceAdapter.getData().size == 0) { ViewUtil.instance.showDialog( mContext, R.string.txt_no_search_device, diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt index 63f2ecb..858a5bc 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/device/wifi/AddWifiPowerZone3Activity.kt @@ -107,7 +107,7 @@ class AddWifiPowerZone3Activity : showLoading(true, R.string.txt_please_wait) mRightImageButton?.let { it.isEnabled = false - mAnimatorSet = ViewUtil.instance.viewAlphaAndRotationObjectAnimator(it, true) + mAnimatorSet = ViewUtil.instance.viewRotationAnimator(it, true) } mWiFiListAdapter.setData(null) SRBleUtil.instance.writeData( @@ -148,7 +148,8 @@ class AddWifiPowerZone3Activity : private fun goSetWifiPassword(pos: Int) { if (mWiFiListAdapter.getData().isNotEmpty()) { val wiFiBean = mWiFiListAdapter.getData()[pos] - val intent = Intent(mContext, AddWifiPasswordActivity::class.java) + val intent = Intent(mContext, EditWifiPowerZoneActivity::class.java) +// val intent = Intent(mContext, AddWifiPasswordActivity::class.java) intent.putExtra(ConstantString.WiFi, wiFiBean) mDecWiFiAddressData?.let { intent.putExtra(ConstantString.HistoryDataBean, it) 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 d900746..fe8a83d 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 @@ -16,6 +16,7 @@ import com.abbidot.tracker.R import com.abbidot.tracker.adapter.FeedbackImageAdapter import com.abbidot.tracker.base.BaseActivity import com.abbidot.tracker.bean.MenuTxtBean +import com.abbidot.tracker.constant.ConstantInt import com.abbidot.tracker.constant.GetResultCallback import com.abbidot.tracker.databinding.ActivityFeedbackBinding import com.abbidot.tracker.util.ViewUtil @@ -89,7 +90,19 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB setViewClickHideInputMethod(llSettingFeedbackLayout) } - setListenKeyboardChange() + setListenKeyboardChange(300) + } + + //添加图片后,再输入邮箱,输入框被挡住 + override fun showSoftKeyboardCallback() { + mViewBinding.apply { + if (ilFeedbackPhoneLayout.etInputContent.hasFocus()) { + if (mUploadImageUrlList.size > 0) svSettingFeedbackScroll.postDelayed({ + svSettingFeedbackScroll.scrollY = 1000 + }, 400) + else svSettingFeedbackScroll.scrollY = 600 + } + } } override fun liveDataObserve() { @@ -119,6 +132,11 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB mUploadImageIndex++ uploadImageList() } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + setButtonEnabled(mViewBinding.btnSubmitSettingFeedback, ConstantInt.Type1) + } }) } @@ -127,6 +145,11 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB override fun onResult(any: Any) { showToast(R.string.txt_feedback_success, isFinish = true) } + + override fun onRequestError(exceptionCode: String?) { + super.onRequestError(exceptionCode) + setButtonEnabled(mViewBinding.btnSubmitSettingFeedback, ConstantInt.Type1) + } }) } } @@ -198,6 +221,7 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB mUploadImageIndex = 0 mUploadImageUrlList.clear() + setButtonEnabled(mViewBinding.btnSubmitSettingFeedback, ConstantInt.Type0) uploadImageList() } @@ -239,6 +263,7 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB //相机或相册回调 if (requestCode == ResultCode.ResultCode_1) { if (null != data) { + hideInputMethod(mViewBinding.root) //返回对象集合:如果你需要了解图片的宽、高、大小、用户是否选中原图选项等信息,可以用这个 val resultPhotos: ArrayList = data.getParcelableArrayListExtra(EasyPhotos.RESULT_PHOTOS)!! @@ -249,11 +274,11 @@ class FeedbackActivity : BaseActivity(ActivityFeedbackB } override fun onClick(v: View?) { + if (isLimitClick()) return mViewBinding.apply { when (v!!) { - mViewBinding.btnSubmitSettingFeedback -> startSubmitFeedback() - - mViewBinding.llSelectImageBtnLayout -> { + btnSubmitSettingFeedback -> startSubmitFeedback() + llSelectImageBtnLayout -> { if (mFeedbackImageAdapter.getData().size == mLimitPhotoCount) { showToast( String.format( diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt index 2e475c4..c8eb714 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/subscribe/SureSubscriptionPlanActivity.kt @@ -275,6 +275,8 @@ class SureSubscriptionPlanActivity : private fun sureSubscriptionDetail() { mViewBinding.apply { showNoCancelableLoading(false) + ViewUtil.instance.viewShow(svSubscribePlanLayout) + ViewUtil.instance.viewShow(btnSureSubscribePlan1Continue) setButtonEnabled(btnSureSubscribePlan1Continue, ConstantInt.Type1) mOrderBean?.let { if (isUpgrade) { @@ -295,17 +297,19 @@ class SureSubscriptionPlanActivity : val nowTimestamp = System.currentTimeMillis() mPackageBean?.let { p -> - ilSubscribePlanDetail.tvSureSubscribePlanPer.text = String.format( - getString(R.string.txt_month_unit), "${p.planTimeMonthsCount}" - ) + ilSubscribePlanDetail.tvSureSubscribePlanPer.text = + if (p.mealUnit == ConstantString.PackageUnitDay) String.format( + getString(R.string.txt_day_unit), "${p.planTimeMonthsCount}" + ) + else String.format( + getString(R.string.txt_month_unit), "${p.planTimeMonthsCount}" + ) val renewalString = if (p.mealUnit == ConstantString.PackageUnitYear) { -// ilSubscribePlanDetail.tvSureSubscribePlanPer.text = -// String.format(getString(R.string.txt_year_unit), p.period) val renewalTimestamp = Utils.getAfterHowTimestamp(nowTimestamp, p.period * 365L) val renewalDate = Utils.formatTime(renewalTimestamp, Utils.DATE_FORMAT_PATTERN_EN7) - if (p.period > 1) { + if (p.planTimeMonthsCount > 12) { String.format( getString(R.string.txt_renewal_years), "${p.autoRenewPrice}", @@ -319,6 +323,17 @@ class SureSubscriptionPlanActivity : renewalDate ) } + } else if (p.mealUnit == ConstantString.PackageUnitDay) { + val renewalTimestamp = + Utils.getAfterHowTimestamp(nowTimestamp, p.period.toLong()) + val renewalDate = + Utils.formatTime(renewalTimestamp, Utils.DATE_FORMAT_PATTERN_EN7) + String.format( + getString(R.string.txt_renewal_day), + "${p.autoRenewPrice}", + "${p.period}", + renewalDate + ) } else { val renewalTimestamp = Utils.getAfterHowTimestamp(nowTimestamp, 30L * p.planTimeMonthsCount) @@ -361,8 +376,11 @@ class SureSubscriptionPlanActivity : colorRedId = R.color.data_black_color ) mTotalMoney += price + //保险时长,不足一年按12个月算 + val insuranceTime = + if (p.planTimeMonthsCount > 12) p.planTimeMonthsCount else 12 mSumInsuranceMoney = - Utils.formatDecimal(p.everyMonthSafeFee * p.period * 12, 1).toDouble() + Utils.formatDecimal(p.everyMonthSafeFee * insuranceTime, 1).toDouble() ViewUtil.instance.addMenuBean( mSummaryAdapter.getData(), getString(R.string.txt_annual_care_text), @@ -372,7 +390,7 @@ class SureSubscriptionPlanActivity : mTotalMoney += mSumInsuranceMoney val insuranceMoneyString = - String.format(getString(R.string.txt_month_unit), "${p.period * 12}") + String.format(getString(R.string.txt_month_unit), "$insuranceTime") ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePer.text = insuranceMoneyString ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePerMoney.text = @@ -398,8 +416,8 @@ class SureSubscriptionPlanActivity : ) } - //判断套餐是否过期 - if (!TextUtils.isEmpty(it.orderNum) && it.surplusDays == 0L && it.subscriptionStatus == ConstantInt.Close) { + //判断套餐是否过期 或者套餐没退款 + if (!TextUtils.isEmpty(it.orderNum) && it.orderStatus != 6 && it.surplusDays == 0L && it.subscriptionStatus == ConstantInt.Close) { // mOrderBean?.reactivation = 1 mSubscriptionViewModel.getReactivationFee(it.orderNum) } else { @@ -455,14 +473,16 @@ class SureSubscriptionPlanActivity : mResidualMoney = Utils.formatDecimal( mResidualMoney + surplusSafeValidFee, 1 ).toDouble() + val insuranceTime = + if (p.planTimeMonthsCount > 12) p.planTimeMonthsCount else 12 val insuranceMoneyString = String.format( - getString(R.string.txt_month_unit), "${12 * p.period}" + getString(R.string.txt_month_unit), "$insuranceTime" ) mViewBinding.ilSubscribePlanInsurance.tvSureSubscribePlanInsurancePer.text = insuranceMoneyString - mSumInsuranceMoney = Utils.formatDecimal( - 12 * p.everyMonthSafeFee * p.period, 1 - ).toDouble() + mSumInsuranceMoney = + Utils.formatDecimal(p.everyMonthSafeFee * insuranceTime, 1) + .toDouble() mTotalMoney += mSumInsuranceMoney mViewBinding.ilSubscribePlanInsurance.tvSureSubscribePlanInsuranceMoney.text = String.format( diff --git a/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt b/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt index 755bc35..e2cb7c9 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/common/map/FencesAddEditMapCommon.kt @@ -100,22 +100,14 @@ class FencesAddEditMapCommon : BaseMapCommon() { mFencesGoogleMapFragment?.apply { view.postDelayed({ if (activity.isFinishing) return@postDelayed - resetFencesViewCentre( - LatLng( - it.latitudeCenter, it.longitudeCenter - ) - ) + resetFencesViewCentre(LatLng(it.latitudeCenter, it.longitudeCenter)) }, 100) } mFencesBaiduMapFragment?.apply { view.postDelayed({ if (activity.isFinishing) return@postDelayed - resetFencesViewCentre( - getBaiduMapLatLng( - it.latitudeCenter, it.longitudeCenter - ) - ) + resetFencesViewCentre(getBaiduMapLatLng(it.latitudeCenter, it.longitudeCenter)) }, 600) } } diff --git a/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt b/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt index f3d382c..cc88013 100644 --- a/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt +++ b/app/src/main/java/com/abbidot/tracker/util/ViewUtil.kt @@ -965,13 +965,14 @@ class ViewUtil private constructor() { fun showAndHidePasswordClick( editText: EditText, hideShowImBtn: QMUIAlphaImageButton, isShowPassword: Boolean ) { - if (isShowPassword) { - hideShowImBtn.setImageResource(R.drawable.icon_show_password_svg) + val imageResId = if (isShowPassword) { editText.transformationMethod = HideReturnsTransformationMethod.getInstance() + R.drawable.icon_show_password_svg } else { - hideShowImBtn.setImageResource(R.drawable.icon_hide_password_svg) editText.transformationMethod = PasswordTransformationMethod.getInstance() + R.drawable.icon_hide_password_svg } + hideShowImBtn.setImageResource(imageResId) editText.setSelection(editText.text.toString().length) } diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml index 5d5653b..adff781 100644 --- a/app/src/main/res/layout/activity_feedback.xml +++ b/app/src/main/res/layout/activity_feedback.xml @@ -12,13 +12,16 @@ layout="@layout/layout_top_bar" /> - + + android:layout_weight="1" + android:visibility="gone"> \ No newline at end of file diff --git a/app/src/main/res/layout/item_choose_plan_layout.xml b/app/src/main/res/layout/item_choose_plan_layout.xml index 5fbc4bc..ca2d7b3 100644 --- a/app/src/main/res/layout/item_choose_plan_layout.xml +++ b/app/src/main/res/layout/item_choose_plan_layout.xml @@ -73,6 +73,7 @@ android:textStyle="bold" /> Edit Profile No internet connection + /day + Renewal: $%s/%s day on %s + /day x%s + (Renew at $%s per %s day thereafter) + \ No newline at end of file