引导页修改完成

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) LoginActivity.start(this@LauncherActivity)
} }
} else { } else {
// startActivity<MainActivity>() startActivity<MainActivity>()
startActivity<GuideActivity>()
} }
finish() finish()
} }

View File

@ -21,6 +21,7 @@ import kotlin.math.ceil
class GuideItem3Adapter(val context: Context): RecyclerView.Adapter<BaseViewHolder>() { class GuideItem3Adapter(val context: Context): RecyclerView.Adapter<BaseViewHolder>() {
val data: MutableList<HotWordEntity.Child> = mutableListOf() val data: MutableList<HotWordEntity.Child> = mutableListOf()
private var showAnim = true
private var mOnKeywordClickListener: ((keyword: HotWordEntity.Child) -> Unit)? = null 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 hasOther = list.find { it.id == 0 } != null
val selectedList = if (hasOther) mAdapter.data else list val selectedList = if (hasOther) mAdapter.data else list
GuideFragment.hotWordList.clear()
selectedList.forEach { selectedList.forEach {
GuideFragment.hotWordList.addAll(it.children) GuideFragment.hotWordList.addAll(it.children)
} }

View File

@ -60,6 +60,7 @@ class GuideItem4Fragment : BaseFragment<FragmentGuideItem4Binding, GuideViewMode
toast("请选择地区") toast("请选择地区")
return@onClick return@onClick
} }
GuideFragment.cityList.addAll(selectList)
val cityIds = selectList.map { it.id } val cityIds = selectList.map { it.id }
val keywords = GuideFragment.keywordList.map { it.name } val keywords = GuideFragment.keywordList.map { it.name }
mViewModel.getTotalBidInfo(keywords.joinToString(","), cityIds.joinToString(","), "${hotWordChildList.size}") 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.extensions.visible
import com.example.base.ui.BaseFragment import com.example.base.ui.BaseFragment
import com.example.base.utils.DensityUtils import com.example.base.utils.DensityUtils
import com.example.base.utils.ScreenUtils
import com.google.gson.Gson import com.google.gson.Gson
import com.yy.mobile.rollingtextview.CharOrder import com.yy.mobile.rollingtextview.CharOrder
import com.yy.mobile.rollingtextview.strategy.Strategy import com.yy.mobile.rollingtextview.strategy.Strategy
@ -47,6 +48,7 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
override fun initView() { override fun initView() {
super.initView() super.initView()
binding.tvTitle.typeface = Constants.pmzdbt
binding.tvBidCount.typeface = Constants.ysbth binding.tvBidCount.typeface = Constants.ysbth
binding.tvUnit.typeface = Constants.ysbth binding.tvUnit.typeface = Constants.ysbth
@ -96,10 +98,17 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
earthRotateAnim.repeatCount = -1 earthRotateAnim.repeatCount = -1
earthRotateAnim.interpolator = LinearInterpolator() earthRotateAnim.interpolator = LinearInterpolator()
val infoAlphaAnim = ObjectAnimator.ofFloat(binding.layoutInfo, "alpha", 0f, 1f) val titleTransAnim = ObjectAnimator.ofFloat(binding.layoutTitle, "translationY", -ScreenUtils.getScreenHeight().toFloat() / 2, 0f)
infoAlphaAnim.duration = 1000 titleTransAnim.duration = 2000
infoAlphaAnim.startDelay = 2400 titleTransAnim.startDelay = 200
infoAlphaAnim.addListener(onStart = { 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() binding.layoutInfo.visible()
}, onEnd = { }, onEnd = {
startNumAnim() startNumAnim()
@ -130,7 +139,7 @@ class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewMode
}) })
val animSet = AnimatorSet() val animSet = AnimatorSet()
animSet.playTogether(bgTransAnim, star1TranAnim, star2TranAnim, earthTransAnim, earthRotateAnim, infoAlphaAnim, progressMaskAnim) animSet.playTogether(bgTransAnim, star1TranAnim, star2TranAnim, earthTransAnim, earthRotateAnim, titleTransAnim, infoTransAnim, progressMaskAnim)
animSet.start() 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.OrderEvent
import com.cheng.blzb.event.PayStatusEnum import com.cheng.blzb.event.PayStatusEnum
import com.cheng.blzb.event.PayStatusEvent import com.cheng.blzb.event.PayStatusEvent
import com.cheng.blzb.event.PaySuccessEvent
import com.cheng.blzb.manager.DialogEnum import com.cheng.blzb.manager.DialogEnum
import com.cheng.blzb.manager.EventReportManager import com.cheng.blzb.manager.EventReportManager
import com.cheng.blzb.manager.LoginManager import com.cheng.blzb.manager.LoginManager
@ -91,7 +90,7 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
private var totalPrice = 0f private var totalPrice = 0f
private var lastGoodsPrice = 0f private var lastGoodsPrice = 0f
private val goodsAdapter by lazy { GuideVipAdapter() } private val goodsAdapter by lazy { GuideVipGoodsAdapter() }
private var goodsEntity: VipGoodsEntity? = null private var goodsEntity: VipGoodsEntity? = null
private var orderEntity: OrderPayEntity? = null private var orderEntity: OrderPayEntity? = null
@ -100,6 +99,7 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
private var countdownDisposable: Disposable? = null private var countdownDisposable: Disposable? = null
private var scrollTask: Disposable? = null private var scrollTask: Disposable? = null
@SuppressLint("SetTextI18n")
override fun initView() { override fun initView() {
super.initView() super.initView()
setStatusBarLight(false) setStatusBarLight(false)
@ -500,14 +500,14 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
val timeTransAnim = ObjectAnimator.ofFloat(binding.layoutCountdown, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f) val timeTransAnim = ObjectAnimator.ofFloat(binding.layoutCountdown, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f)
timeTransAnim.duration = 1000 timeTransAnim.duration = 1000
timeTransAnim.startDelay = 1000 timeTransAnim.startDelay = 1200
timeTransAnim.addListener(onStart = { timeTransAnim.addListener(onStart = {
binding.layoutCountdown.visible() binding.layoutCountdown.visible()
}) })
val goodsTransAnim = ObjectAnimator.ofFloat(binding.rvGoods, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f) val goodsTransAnim = ObjectAnimator.ofFloat(binding.rvGoods, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f)
goodsTransAnim.duration = 1000 goodsTransAnim.duration = 1000
goodsTransAnim.startDelay = 1200 goodsTransAnim.startDelay = 1000
goodsTransAnim.addListener(onStart = { goodsTransAnim.addListener(onStart = {
binding.rvGoods.visible() binding.rvGoods.visible()
}) })
@ -526,6 +526,14 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
binding.layoutPayBtn.visible() 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() val animSet = AnimatorSet()
animSet.playTogether( animSet.playTogether(
closeAlphaAnim, closeAlphaAnim,
@ -536,7 +544,8 @@ class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideVipViewModel>
timeTransAnim, timeTransAnim,
goodsTransAnim, goodsTransAnim,
payTypeTransAnim, payTypeTransAnim,
payBtnTransAnim payBtnTransAnim,
payLightTransAnim
) )
animSet.start() animSet.start()
} }

View File

@ -1,9 +1,12 @@
package com.cheng.blzb.ui.fragment.guide.vip package com.cheng.blzb.ui.fragment.guide.vip
import android.animation.ObjectAnimator
import android.util.TypedValue import android.util.TypedValue
import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.TextView import android.widget.TextView
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.animation.addListener
import androidx.core.graphics.toColorInt import androidx.core.graphics.toColorInt
import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.BaseQuickAdapter
import com.chad.library.adapter.base.viewholder.BaseViewHolder 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.bean.VipGoodsEntity
import com.cheng.blzb.common.Constants import com.cheng.blzb.common.Constants
import com.example.base.extensions.getColor import com.example.base.extensions.getColor
import com.example.base.extensions.visible
import com.example.base.utils.DensityUtils import com.example.base.utils.DensityUtils
import com.example.base.utils.SpanUtils import com.example.base.utils.SpanUtils
import com.flyjingfish.gradienttextviewlib.GradientTextView import com.flyjingfish.gradienttextviewlib.GradientTextView
import java.text.DecimalFormat 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) { override fun convert(holder: BaseViewHolder, item: VipGoodsEntity) {
holder.setGone(R.id.tv_tag, true) holder.setGone(R.id.tv_tag, true)
holder.setGone(R.id.iv_light, true)
if (item.tips.isNotEmpty()) { if (item.tips.isNotEmpty()) {
holder.setVisible(R.id.tv_tag, true) holder.setVisible(R.id.tv_tag, true)
holder.setText(R.id.tv_tag, item.tips) 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) 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)) 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" /> android:background="@mipmap/ic_guide_item5_mask" />
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_info" android:id="@+id/layout_title"
android:layout_width="wrap_content" android:layout_width="match_parent"
android:layout_height="wrap_content" 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" android:visibility="invisible"
app:layout_constraintBottom_toTopOf="@id/progressBar" app:layout_constraintBottom_toTopOf="@id/progressBar"
app:layout_constraintDimensionRatio="h,298:172"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_title"
tools:visibility="visible"> tools:visibility="visible">
<LinearLayout <LinearLayout
android:id="@+id/layout_city" android:id="@+id/layout_city"
android:layout_width="@dimen/dp_180" android:layout_width="@dimen/dp_180"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_35" android:layout_marginTop="@dimen/dp_26"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
app:layout_constraintBottom_toTopOf="@id/tv_bid_count"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"> app:layout_constraintTop_toTopOf="parent">
@ -95,8 +144,9 @@
android:gravity="center" android:gravity="center"
android:text="00000" android:text="00000"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="44sp" android:textSize="40sp"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/rv_industry"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_city" app:layout_constraintTop_toBottomOf="@id/layout_city"
@ -107,10 +157,10 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_5" android:layout_marginStart="@dimen/dp_5"
android:layout_marginBottom="@dimen/dp_10" android:layout_marginBottom="@dimen/dp_6"
android:text="条" android:text="条"
android:textColor="@color/white" android:textColor="@color/white"
android:textSize="@dimen/sp_16" android:textSize="@dimen/sp_22"
android:textStyle="bold" android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/tv_bid_count" app:layout_constraintBottom_toBottomOf="@id/tv_bid_count"
app:layout_constraintStart_toEndOf="@id/tv_bid_count" /> app:layout_constraintStart_toEndOf="@id/tv_bid_count" />
@ -119,8 +169,10 @@
android:id="@+id/rv_industry" android:id="@+id/rv_industry"
android:layout_width="@dimen/dp_100" android:layout_width="@dimen/dp_100"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_25"
android:orientation="horizontal" android:orientation="horizontal"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tv_bid_count" app:layout_constraintTop_toBottomOf="@id/tv_bid_count"

View File

@ -19,25 +19,13 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> 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 <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_industry" android:id="@+id/layout_industry"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18" android:layout_marginTop="@dimen/dp_62"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@id/rv_user" app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible"> tools:visibility="visible">
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView
@ -427,17 +415,44 @@
</androidx.constraintlayout.widget.ConstraintLayout> </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 <LinearLayout
android:id="@+id/layout_countdown" android:id="@+id/layout_countdown"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_18" android:layout_marginTop="@dimen/dp_20"
android:gravity="center_vertical" android:gravity="center_vertical"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/layout_info" app:layout_constraintTop_toBottomOf="@id/rv_goods"
tools:visibility="visible"> tools:visibility="visible">
<TextView <TextView
@ -524,35 +539,21 @@
android:textSize="@dimen/sp_12" /> android:textSize="@dimen/sp_12" />
</LinearLayout> </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 <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/layout_pay" android:id="@+id/layout_pay"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_12" 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:layout_marginEnd="@dimen/dp_12"
android:visibility="invisible" android:visibility="invisible"
app:layout_constraintTop_toBottomOf="@id/rv_goods" app:layout_constraintTop_toBottomOf="@id/layout_countdown"
tools:visibility="visible"> tools:visibility="visible">
<androidx.constraintlayout.widget.ConstraintLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
android:background="@mipmap/ic_guide_vip_info_bg"> android:background="@mipmap/ic_guide_vip_info_bg">
<TextView <TextView
@ -724,17 +725,33 @@
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
<TextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tv_pay"
android:layout_width="0dp" 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_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.constraintlayout.widget.ConstraintLayout>
<androidx.appcompat.widget.AppCompatImageView <androidx.appcompat.widget.AppCompatImageView

View File

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

View File

@ -21,7 +21,8 @@
android:id="@+id/iv_check_all" android:id="@+id/iv_check_all"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="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" android:src="@mipmap/ic_check_true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="@id/tv_name" app:layout_constraintBottom_toBottomOf="@id/tv_name"

View File

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

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root" android:id="@+id/root"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"> android:layout_height="wrap_content">
@ -52,24 +53,41 @@
</LinearLayout> </LinearLayout>
<TextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tv_tag"
android:layout_width="wrap_content" 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_constraintEnd_toEndOf="@id/layout_content"
app:layout_constraintStart_toStartOf="@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> </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