引导页修改完成

This commit is contained in:
wangyu 2026-03-10 10:47:12 +08:00
parent 45b3738025
commit b707c20cd6
18 changed files with 206 additions and 82 deletions

View File

@ -116,8 +116,7 @@ class LauncherActivity : BaseActivity() {
LoginActivity.start(this@LauncherActivity)
}
} else {
// startActivity<MainActivity>()
startActivity<GuideActivity>()
startActivity<MainActivity>()
}
finish()
}

View File

@ -21,6 +21,7 @@ import kotlin.math.ceil
class GuideItem3Adapter(val context: Context): RecyclerView.Adapter<BaseViewHolder>() {
val data: MutableList<HotWordEntity.Child> = mutableListOf()
private var showAnim = true
private var mOnKeywordClickListener: ((keyword: HotWordEntity.Child) -> Unit)? = null

View File

@ -61,6 +61,7 @@ class GuideItem2Fragment : BaseFragment<FragmentGuideItem2Binding, GuideViewMode
}
val hasOther = list.find { it.id == 0 } != null
val selectedList = if (hasOther) mAdapter.data else list
GuideFragment.hotWordList.clear()
selectedList.forEach {
GuideFragment.hotWordList.addAll(it.children)
}

View File

@ -60,6 +60,7 @@ class GuideItem4Fragment : BaseFragment<FragmentGuideItem4Binding, GuideViewMode
toast("请选择地区")
return@onClick
}
GuideFragment.cityList.addAll(selectList)
val cityIds = selectList.map { it.id }
val keywords = GuideFragment.keywordList.map { it.name }
mViewModel.getTotalBidInfo(keywords.joinToString(","), cityIds.joinToString(","), "${hotWordChildList.size}")

View File

@ -23,6 +23,7 @@ import com.cheng.blzb.ui.fragment.guide.vip.GuideVipFragment
import com.example.base.extensions.visible
import com.example.base.ui.BaseFragment
import com.example.base.utils.DensityUtils
import com.example.base.utils.ScreenUtils
import com.google.gson.Gson
import com.yy.mobile.rollingtextview.CharOrder
import com.yy.mobile.rollingtextview.strategy.Strategy
@ -47,6 +48,7 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
override fun initView() {
super.initView()
binding.tvTitle.typeface = Constants.pmzdbt
binding.tvBidCount.typeface = Constants.ysbth
binding.tvUnit.typeface = Constants.ysbth
@ -96,10 +98,17 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
earthRotateAnim.repeatCount = -1
earthRotateAnim.interpolator = LinearInterpolator()
val infoAlphaAnim = ObjectAnimator.ofFloat(binding.layoutInfo, "alpha", 0f, 1f)
infoAlphaAnim.duration = 1000
infoAlphaAnim.startDelay = 2400
infoAlphaAnim.addListener(onStart = {
val titleTransAnim = ObjectAnimator.ofFloat(binding.layoutTitle, "translationY", -ScreenUtils.getScreenHeight().toFloat() / 2, 0f)
titleTransAnim.duration = 2000
titleTransAnim.startDelay = 200
titleTransAnim.addListener(onStart = {
binding.layoutTitle.visible()
})
val infoTransAnim = ObjectAnimator.ofFloat(binding.layoutInfo, "translationY", -ScreenUtils.getScreenHeight().toFloat() / 2, 0f)
infoTransAnim.duration = 2000
infoTransAnim.startDelay = 200
infoTransAnim.addListener(onStart = {
binding.layoutInfo.visible()
}, onEnd = {
startNumAnim()
@ -130,7 +139,7 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
})
val animSet = AnimatorSet()
animSet.playTogether(bgTransAnim, star1TranAnim, star2TranAnim, earthTransAnim, earthRotateAnim, infoAlphaAnim, progressMaskAnim)
animSet.playTogether(bgTransAnim, star1TranAnim, star2TranAnim, earthTransAnim, earthRotateAnim, titleTransAnim, infoTransAnim, progressMaskAnim)
animSet.start()
}

View File

@ -29,7 +29,6 @@ import com.cheng.blzb.databinding.FragmentGuideVipBinding
import com.cheng.blzb.event.OrderEvent
import com.cheng.blzb.event.PayStatusEnum
import com.cheng.blzb.event.PayStatusEvent
import com.cheng.blzb.event.PaySuccessEvent
import com.cheng.blzb.manager.DialogEnum
import com.cheng.blzb.manager.EventReportManager
import com.cheng.blzb.manager.LoginManager
@ -91,7 +90,7 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
private var totalPrice = 0f
private var lastGoodsPrice = 0f
private val goodsAdapter by lazy { GuideVipAdapter() }
private val goodsAdapter by lazy { GuideVipGoodsAdapter() }
private var goodsEntity: VipGoodsEntity? = null
private var orderEntity: OrderPayEntity? = null
@ -100,6 +99,7 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
private var countdownDisposable: Disposable? = null
private var scrollTask: Disposable? = null
@SuppressLint("SetTextI18n")
override fun initView() {
super.initView()
setStatusBarLight(false)
@ -500,14 +500,14 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
val timeTransAnim = ObjectAnimator.ofFloat(binding.layoutCountdown, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f)
timeTransAnim.duration = 1000
timeTransAnim.startDelay = 1000
timeTransAnim.startDelay = 1200
timeTransAnim.addListener(onStart = {
binding.layoutCountdown.visible()
})
val goodsTransAnim = ObjectAnimator.ofFloat(binding.rvGoods, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f)
goodsTransAnim.duration = 1000
goodsTransAnim.startDelay = 1200
goodsTransAnim.startDelay = 1000
goodsTransAnim.addListener(onStart = {
binding.rvGoods.visible()
})
@ -526,6 +526,14 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
binding.layoutPayBtn.visible()
})
val payLightTransAnim = ObjectAnimator.ofFloat(binding.ivPayLight, "translationX", -binding.tvPay.width.toFloat(), binding.tvPay.width.toFloat())
payLightTransAnim.duration = 1500
payLightTransAnim.repeatCount = -1
payLightTransAnim.startDelay = 1500
payLightTransAnim.addListener(onStart = {
binding.ivPayLight.visible()
})
val animSet = AnimatorSet()
animSet.playTogether(
closeAlphaAnim,
@ -536,7 +544,8 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
timeTransAnim,
goodsTransAnim,
payTypeTransAnim,
payBtnTransAnim
payBtnTransAnim,
payLightTransAnim
)
animSet.start()
}

View File

@ -1,9 +1,12 @@
package com.cheng.blzb.ui.fragment.guide.vip
import android.animation.ObjectAnimator
import android.util.TypedValue
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.animation.addListener
import androidx.core.graphics.toColorInt
import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder
@ -11,18 +14,21 @@ import com.cheng.blzb.R
import com.cheng.blzb.bean.VipGoodsEntity
import com.cheng.blzb.common.Constants
import com.example.base.extensions.getColor
import com.example.base.extensions.visible
import com.example.base.utils.DensityUtils
import com.example.base.utils.SpanUtils
import com.flyjingfish.gradienttextviewlib.GradientTextView
import java.text.DecimalFormat
class GuideVipAdapter: BaseQuickAdapter<VipGoodsEntity, BaseViewHolder>(R.layout.listitem_guide_vip_goods) {
class GuideVipGoodsAdapter: BaseQuickAdapter<VipGoodsEntity, BaseViewHolder>(R.layout.listitem_guide_vip_goods) {
override fun convert(holder: BaseViewHolder, item: VipGoodsEntity) {
holder.setGone(R.id.tv_tag, true)
holder.setGone(R.id.iv_light, true)
if (item.tips.isNotEmpty()) {
holder.setVisible(R.id.tv_tag, true)
holder.setText(R.id.tv_tag, item.tips)
startAnim(holder.getView(R.id.iv_light))
}
holder.setText(R.id.tv_goods_name, item.goods_name)
@ -79,4 +85,15 @@ class GuideVipAdapter: BaseQuickAdapter<VipGoodsEntity, BaseViewHolder>(R.layout
holder.setTextColor(R.id.tv_origin_price, getColor(R.color.color_a6acb5))
}
}
private fun startAnim(view: View) {
val lightTransAnim = ObjectAnimator.ofFloat(view, "translationX", -DensityUtils.dp2px(80f).toFloat(), DensityUtils.dp2px(80f).toFloat())
lightTransAnim.duration = 1500
lightTransAnim.repeatCount = -1
lightTransAnim.startDelay = 1500
lightTransAnim.addListener(onStart = {
view.visible()
})
lightTransAnim.start()
}
}

View File

@ -45,23 +45,72 @@
android:background="@mipmap/ic_guide_item5_mask" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_info"
android:layout_width="wrap_content"
android:id="@+id/layout_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_65"
android:visibility="invisible"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_25"
android:src="@mipmap/ic_guide_item_title_bg"
app:layout_constraintEnd_toEndOf="@id/tv_title"
app:layout_constraintStart_toStartOf="@id/tv_title"
app:layout_constraintTop_toTopOf="@id/tv_title" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_65"
android:shadowColor="#001C52"
android:shadowDy="2"
android:shadowRadius="2"
android:text="@string/app_name"
android:textColor="@color/color_e6ffff"
android:textSize="@dimen/sp_34"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_desc"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_16"
android:src="@mipmap/ic_guide_item5_desc"
app:layout_constraintEnd_toEndOf="@id/tv_title"
app:layout_constraintStart_toStartOf="@id/tv_title"
app:layout_constraintTop_toBottomOf="@id/tv_title" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_info"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginStart="@dimen/dp_38"
android:layout_marginEnd="@dimen/dp_38"
android:background="@mipmap/ic_guide_item5_info_bg"
android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@id/progressBar"
app:layout_constraintDimensionRatio="h,298:172"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_title"
tools:visibility="visible">
<LinearLayout
android:id="@+id/layout_city"
android:layout_width="@dimen/dp_180"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_35"
android:layout_marginTop="@dimen/dp_26"
android:gravity="center_vertical"
android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/tv_bid_count"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@ -95,8 +144,9 @@
android:gravity="center"
android:text="00000"
android:textColor="@color/white"
android:textSize="44sp"
android:textSize="40sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/rv_industry"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_city"
@ -107,10 +157,10 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_10"
android:layout_marginBottom="@dimen/dp_6"
android:text="条"
android:textColor="@color/white"
android:textSize="@dimen/sp_16"
android:textSize="@dimen/sp_22"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/tv_bid_count"
app:layout_constraintStart_toEndOf="@id/tv_bid_count" />
@ -119,8 +169,10 @@
android:id="@+id/rv_industry"
android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_25"
android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_bid_count"

View File

@ -19,25 +19,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_70"
android:orientation="horizontal"
android:visibility="invisible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toTopOf="parent"
tools:listitem="@layout/listitem_guide_vip_user"
tools:visibility="visible" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_industry"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_62"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@id/rv_user"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView
@ -427,17 +415,44 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18"
android:orientation="horizontal"
android:visibility="invisible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@id/layout_info"
tools:listitem="@layout/listitem_guide_vip_user"
tools:visibility="visible" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_goods"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_24"
android:layout_marginEnd="12dp"
android:orientation="horizontal"
android:visibility="invisible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@id/rv_user"
tools:itemCount="3"
tools:listitem="@layout/listitem_guide_vip_goods"
tools:visibility="visible" />
<LinearLayout
android:id="@+id/layout_countdown"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18"
android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_info"
app:layout_constraintTop_toBottomOf="@id/rv_goods"
tools:visibility="visible">
<TextView
@ -524,35 +539,21 @@
android:textSize="@dimen/sp_12" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_goods"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="12dp"
android:orientation="horizontal"
android:visibility="invisible"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintTop_toBottomOf="@id/layout_countdown"
tools:itemCount="3"
tools:listitem="@layout/listitem_guide_vip_goods"
tools:visibility="visible" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_pay"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginTop="@dimen/dp_20"
android:layout_marginEnd="@dimen/dp_12"
android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@id/rv_goods"
app:layout_constraintTop_toBottomOf="@id/layout_countdown"
tools:visibility="visible">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:background="@mipmap/ic_guide_vip_info_bg">
<TextView
@ -724,17 +725,33 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_pay"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:gravity="center"
android:text="立即订阅"
android:textColor="#04214F"
android:textSize="@dimen/sp_18"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/layout_price" />
app:layout_constraintStart_toEndOf="@id/layout_price"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_pay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="立即购买"
android:paddingStart="@dimen/dp_5"
android:textColor="@color/white"
android:textSize="@dimen/sp_18"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_pay_light"
android:layout_width="0dp"
app:layout_constraintDimensionRatio="w,41:46"
app:layout_constraintStart_toStartOf="@id/tv_pay"
android:layout_marginStart="@dimen/dp_5"
android:src="@mipmap/ic_guide_vip_btn_light"
android:layout_height="match_parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView

View File

@ -67,10 +67,9 @@
android:layout_marginStart="@dimen/dp_19"
android:layout_marginTop="@dimen/dp_15"
android:layout_marginEnd="@dimen/dp_15"
android:layout_marginBottom="@dimen/dp_25"
android:overScrollMode="never"
android:paddingBottom="@dimen/dp_26"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_name"
app:spanCount="3"
tool:itemCount="18"

View File

@ -21,7 +21,8 @@
android:id="@+id/iv_check_all"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_14"
android:padding="@dimen/dp_2"
android:src="@mipmap/ic_check_true"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/tv_name"

View File

@ -12,5 +12,5 @@
android:layout_gravity="center"
android:textStyle="bold"
android:textColor="@color/white"
android:textSize="44sp" />
android:textSize="32sp" />
</FrameLayout>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@ -52,24 +53,41 @@
</LinearLayout>
<TextView
android:id="@+id/tv_tag"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="-3dp"
android:background="@drawable/shape_vip_tag_bg"
android:drawableStart="@mipmap/ic_guide_vip_fire"
android:drawablePadding="@dimen/dp_1"
android:gravity="center"
android:paddingStart="@dimen/dp_6"
android:paddingTop="@dimen/dp_2"
android:paddingEnd="@dimen/dp_6"
android:paddingBottom="@dimen/dp_2"
android:text="限时优惠"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
app:layout_constraintEnd_toEndOf="@id/layout_content"
app:layout_constraintStart_toStartOf="@id/layout_content"
app:layout_constraintTop_toTopOf="@id/layout_content" />
app:layout_constraintTop_toTopOf="@id/layout_content"
android:layout_marginTop="-3dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_tag"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/shape_vip_tag_bg"
android:drawableStart="@mipmap/ic_guide_vip_fire"
android:drawablePadding="@dimen/dp_1"
android:gravity="center"
android:paddingStart="@dimen/dp_6"
android:paddingTop="@dimen/dp_2"
android:paddingEnd="@dimen/dp_6"
android:paddingBottom="@dimen/dp_2"
android:text="限时优惠"
android:textColor="@color/white"
android:textSize="@dimen/sp_10" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_light"
android:layout_width="0dp"
android:layout_height="0dp"
android:visibility="invisible"
tools:visibility="visible"
android:src="@mipmap/ic_guide_vip_goods_light"
app:layout_constraintBottom_toBottomOf="@id/tv_tag"
app:layout_constraintDimensionRatio="w,1:1"
app:layout_constraintStart_toStartOf="@id/tv_tag"
app:layout_constraintTop_toTopOf="@id/tv_tag" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 946 B