diff --git a/app/src/main/assets/fonts/Sa-Digital-Number.ttf b/app/src/main/assets/fonts/Sa-Digital-Number.ttf new file mode 100644 index 0000000..25340c9 Binary files /dev/null and b/app/src/main/assets/fonts/Sa-Digital-Number.ttf differ diff --git a/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt b/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt index 69a4655..b1e8ace 100644 --- a/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt +++ b/app/src/main/java/com/cheng/blzb/bean/ConfigEntity.kt @@ -16,7 +16,10 @@ class ConfigEntity { @SerializedName("client.guide.enable") var guideEnable: Boolean? = true //是否开启引导页 - @SerializedName("client.nologin.pay.enable") + @SerializedName("client.bootpage.first") //引导页首页数据 + var guideFirstData: List? = emptyList() + + @SerializedName("client.nologin.pay.enable") //是否可以未登录支付 var noLoginPayEnable: Boolean? = false @SerializedName("client.pay.agreement") //是否显示支付协议 diff --git a/app/src/main/java/com/cheng/blzb/common/Constants.kt b/app/src/main/java/com/cheng/blzb/common/Constants.kt index 41fd6c8..18950ab 100644 --- a/app/src/main/java/com/cheng/blzb/common/Constants.kt +++ b/app/src/main/java/com/cheng/blzb/common/Constants.kt @@ -34,4 +34,5 @@ object Constants { val dtjbt = Typeface.createFromAsset(Utils.getApp().assets, "fonts/DingTalk-JinBuTi.ttf") val ysbth = Typeface.createFromAsset(Utils.getApp().assets, "fonts/YouSheBiaoTiHei.ttf") val albbphtB = Typeface.createFromAsset(Utils.getApp().assets, "fonts/AlibabaPuHuTi-Bold.otf") + val digitalNumber = Typeface.createFromAsset(Utils.getApp().assets, "fonts/Sa-Digital-Number.ttf") } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt b/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt index 932bb24..661564b 100644 --- a/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt +++ b/app/src/main/java/com/cheng/blzb/manager/UserConfigManager.kt @@ -1,5 +1,6 @@ package com.cheng.blzb.manager +import android.R import android.os.Build import android.text.TextUtils import androidx.lifecycle.MutableLiveData @@ -105,6 +106,7 @@ object UserConfigManager { if (data.config != null){ saveGuidePayEnable(data.config!!.guidePayEnable!!) saveGuideEnable(data.config!!.guideEnable!!) + saveGuideFirstData(data.config!!.guideFirstData!!) saveNoLoginPay(data.config!!.noLoginPayEnable!!) savePayAgreementEnable(data.config!!.payAgreementEnable!!) saveLoginType(data.config!!.loginType!!) @@ -159,6 +161,21 @@ object UserConfigManager { return MMKVUtils.getBoolean("guide", true) } + /** + * 引导页首页数据 + */ + private fun saveGuideFirstData(list: List) { + MMKVUtils.put("guide_first", Gson().toJson(list)) + } + + fun getGuideFirstData(): List { + val str = MMKVUtils.getString("guide_first") + if (!TextUtils.isEmpty(str)) { + return Gson().fromJson(str, object : TypeToken>() {}.type) + } + return emptyList() + } + fun saveIsTemp(temp: Boolean) { MMKVUtils.put("x-role", temp)//true临时用户 ,false登录用户 } diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt index a6297d7..b4ad163 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt @@ -38,6 +38,7 @@ class GuideFragment : BaseFragment( companion object { val cityList = mutableListOf() val hotWordList = mutableListOf() + val keywordList = mutableListOf() var totalInfo: GuideTotalBidEntity? = null } diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem1Adapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem1Adapter.kt new file mode 100644 index 0000000..3d5c70e --- /dev/null +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem1Adapter.kt @@ -0,0 +1,39 @@ +package com.cheng.blzb.ui.fragment.guide.adapter + +import android.annotation.SuppressLint +import android.content.Context +import android.view.View +import android.view.ViewGroup +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.blzb.R +import com.example.base.utils.DensityUtils + +class GuideItem1Adapter(val context: Context): RecyclerView.Adapter() { + val data: MutableList = mutableListOf() + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { + val view = View.inflate(context, R.layout.listitem_guide_item1_company, null) + val lp = ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, DensityUtils.dp2px(28f)) + lp.leftMargin = DensityUtils.dp2px(20f) + view.layoutParams = lp + return BaseViewHolder(view) + } + + @SuppressLint("DiscouragedApi") + override fun onBindViewHolder(holder: BaseViewHolder, position: Int) { + holder.setText(R.id.tv_name, data[position % data.size]) + } + + override fun getItemCount(): Int { + return if (data.isNotEmpty()) Int.MAX_VALUE else 0 + } + + @SuppressLint("NotifyDataSetChanged") + fun setList(list: List) { + data.clear() + data.addAll(list) + notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Adapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Adapter.kt new file mode 100644 index 0000000..5d852a2 --- /dev/null +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Adapter.kt @@ -0,0 +1,49 @@ +package com.cheng.blzb.ui.fragment.guide.adapter + +import android.widget.TextView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.blzb.R +import com.cheng.blzb.bean.HotWordEntity +import com.cheng.blzb.common.Constants + +class GuideItem2Adapter: BaseQuickAdapter(R.layout.listitem_guide_item2) { + override fun convert(holder: BaseViewHolder, item: HotWordEntity) { + holder.getView(R.id.tv_name).typeface = Constants.almmsht + holder.setText(R.id.tv_name, item.name) + holder.setImageResource(R.id.iv_bg,if (item.isChecked) R.mipmap.ic_guide_item2_checked else R.mipmap.ic_guide_item2_default) + when(item.name) { + "工程建设" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon1) + } + + "工业制造" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon2) + } + + "信息传输" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon3) + } + + "商业环卫" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon4) + } + + "科学教育" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon5) + } + + "交通运输" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon6) + } + + "能源产业" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon7) + } + + "其他" -> { + holder.setImageResource(R.id.iv_icon, R.mipmap.ic_guide_item2_icon8) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3Adapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3Adapter.kt index 1806119..86e4cbd 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3Adapter.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3Adapter.kt @@ -1,20 +1,100 @@ package com.cheng.blzb.ui.fragment.guide.adapter -import com.chad.library.adapter.base.BaseQuickAdapter +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.Color +import android.view.View +import android.view.ViewGroup +import android.view.animation.RotateAnimation +import android.widget.ImageView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.RecyclerView import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.cheng.blzb.R import com.cheng.blzb.bean.HotWordEntity -import com.example.base.extensions.getColor +import com.cheng.blzb.common.Constants +import com.example.base.decoration.GridSpaceItemDecoration +import com.example.base.extensions.onClick +import com.example.base.utils.DensityUtils +import com.example.base.utils.SpanUtils +import kotlin.math.ceil -class GuideItem3Adapter : BaseQuickAdapter(R.layout.listitem_guide_item3) { - override fun convert(holder: BaseViewHolder, item: HotWordEntity.Child) { +class GuideItem3Adapter(val context: Context): RecyclerView.Adapter() { + val data: MutableList = mutableListOf() + + private var mOnKeywordClickListener: ((keyword: HotWordEntity.Child) -> Unit)? = null + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder { + val view = View.inflate(context, R.layout.listitem_guide_item3, null) + val lp = ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT) + view.layoutParams = lp + return BaseViewHolder(view) + } + + @SuppressLint("DiscouragedApi") + override fun onBindViewHolder(holder: BaseViewHolder, position: Int) { + val item = data[position % data.size] holder.setText(R.id.tv_name, item.name) - if (item.isChecked) { - holder.setImageResource(R.id.iv_add, R.mipmap.ic_guide_item3_checked) - holder.setTextColor(R.id.tv_name, getColor(R.color.color_125ffe)) - } else { - holder.setImageResource(R.id.iv_add, R.mipmap.ic_guide_item3_default) - holder.setTextColor(R.id.tv_name, getColor(R.color.color_1a1a1a)) + SpanUtils.with(holder.getView(R.id.tv_amount)) + .append(item.amount) + .setTypeface(Constants.digitalNumber) + .appendSpace(DensityUtils.dp2px(2f)) + .append("亿") + .setForegroundColor(Color.WHITE) + .create() + + val rvKeywords = holder.getView(R.id.mRecyclerView) + if (rvKeywords.adapter == null) { + rvKeywords.adapter = GuideItem3KeywordAdapter() + rvKeywords.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(12f), DensityUtils.dp2px(12f))) + } + val keywordAdapter = rvKeywords.adapter as GuideItem3KeywordAdapter + keywordAdapter.setOnItemClickListener { _, _, position -> + val keywordItem = keywordAdapter.getItem(position) + mOnKeywordClickListener?.invoke(keywordItem) + } + val keywordList = mutableListOf() + for (i in 0 until 15) { + keywordList.add(item.children[i]) + } + keywordAdapter.setList(keywordList) + + holder.getView(R.id.iv_refresh).onClick { view -> + startRotate(view) + if (ceil(item.children.size / 15.0) > keywordAdapter.page + 1) { + keywordAdapter.page++ + } else { + keywordAdapter.page = 0 + } + val keywordList = mutableListOf() + for (i in keywordAdapter.page * 15 until ((keywordAdapter.page + 1) * 15).coerceAtMost(item.children.size)) { + keywordList.add(item.children[i]) + } + keywordAdapter.setList(keywordList) } } + + override fun getItemCount(): Int { + return if (data.isNotEmpty()) Int.MAX_VALUE else 0 + } + + private fun startRotate(view: View) { + if (view.animation != null) { + view.animation.cancel() + } + val anim = RotateAnimation(0f, 360f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f) + anim.duration = 1000 + view.startAnimation(anim) + } + + @SuppressLint("NotifyDataSetChanged") + fun setList(list: List) { + data.clear() + data.addAll(list) + notifyDataSetChanged() + } + + fun setOnKeywordClickListener(listener: (keyword: HotWordEntity.Child) -> Unit) { + this.mOnKeywordClickListener = listener + } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3KeywordAdapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3KeywordAdapter.kt new file mode 100644 index 0000000..d9a2d80 --- /dev/null +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3KeywordAdapter.kt @@ -0,0 +1,15 @@ +package com.cheng.blzb.ui.fragment.guide.adapter + +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.blzb.R +import com.cheng.blzb.bean.HotWordEntity + +class GuideItem3KeywordAdapter : BaseQuickAdapter(R.layout.listitem_guide_item3_keyword) { + var page = 0 + + override fun convert(holder: BaseViewHolder, item: HotWordEntity.Child) { + holder.setText(R.id.tv_name, item.name) + holder.itemView.setBackgroundResource(if (item.isChecked) R.mipmap.ic_guide_item3_checked else R.mipmap.ic_guide_item3_default) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3SelectedAdapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3SelectedAdapter.kt index 1716d93..98e9a4a 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3SelectedAdapter.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem3SelectedAdapter.kt @@ -1,14 +1,12 @@ package com.cheng.blzb.ui.fragment.guide.adapter import android.widget.TextView -import androidx.core.graphics.toColorInt import com.chad.library.adapter.base.BaseQuickAdapter import com.chad.library.adapter.base.viewholder.BaseViewHolder import com.cheng.blzb.R import com.cheng.blzb.bean.HotWordEntity -import com.example.base.extensions.getColor -class GuideItem3SelectedAdapter: BaseQuickAdapter(R.layout.listitem_guide3_selected_keyword) { +class GuideItem3SelectedAdapter: BaseQuickAdapter(R.layout.listitem_guide_item3_selected_keyword) { init { addChildClickViewIds(R.id.iv_delete) @@ -16,13 +14,6 @@ class GuideItem3SelectedAdapter: BaseQuickAdapter(R.id.tv_name).requestFocus() } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Area2Adapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Adapter.kt similarity index 69% rename from app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Area2Adapter.kt rename to app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Adapter.kt index 8636272..82a8162 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Area2Adapter.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Adapter.kt @@ -1,6 +1,7 @@ package com.cheng.blzb.ui.fragment.guide.adapter import android.annotation.SuppressLint +import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.chad.library.adapter.base.BaseQuickAdapter @@ -11,13 +12,12 @@ import com.example.base.decoration.GridSpaceItemDecoration import com.example.base.extensions.onClick import com.example.base.utils.DensityUtils -class GuideItem4Area2Adapter(): BaseQuickAdapter(R.layout.listitem_guide_area2) { - private var mListener: (() -> Unit)? = null +class GuideItem4Adapter(): BaseQuickAdapter(R.layout.listitem_guide_item4) { @SuppressLint("NotifyDataSetChanged") override fun convert(holder: BaseViewHolder, item: AreaEntity) { val tvName = holder.getView(R.id.tv_name) - val tvCheckAll = holder.getView(R.id.tv_check_all) + val ivCheckAll = holder.getView(R.id.iv_check_all) val rvCity = holder.getView(R.id.rv_city) tvName.text = item.name @@ -25,25 +25,24 @@ class GuideItem4Area2Adapter(): BaseQuickAdapter(R.l if (rvCity.adapter == null) { val adapter = GuideItem4CityAdapter() rvCity.adapter = adapter - rvCity.addItemDecoration(GridSpaceItemDecoration(2, DensityUtils.dp2px(10f), DensityUtils.dp2px(10f))) + rvCity.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(14f), DensityUtils.dp2px(14f))) } val cityAdapter = rvCity.adapter as GuideItem4CityAdapter cityAdapter.setList(item.children) if (item.id == 0) { - updateCheckState(tvCheckAll, data.all { area -> area.children.all { it.isChecked } }) + updateCheckState(ivCheckAll, data.all { area -> area.children.all { it.isChecked } }) } else { - updateCheckState(tvCheckAll, cityAdapter.data.all { it.isChecked }) + updateCheckState(ivCheckAll, cityAdapter.data.all { it.isChecked }) } cityAdapter.setOnItemClickListener { _, _, position -> val cityItem = cityAdapter.getItem(position) cityItem.isChecked = !cityItem.isChecked notifyDataSetChanged() - mListener?.invoke() } - tvCheckAll.onClick { + ivCheckAll.onClick { if (item.id == 0) { if (data.all { area -> area.children.all { it.isChecked } }) { data.forEach { area -> @@ -62,19 +61,14 @@ class GuideItem4Area2Adapter(): BaseQuickAdapter(R.l } } notifyDataSetChanged() - mListener?.invoke() } } - private fun updateCheckState(textView: TextView, isCheckAll: Boolean) { + private fun updateCheckState(imageView: ImageView, isCheckAll: Boolean) { if (isCheckAll) { - textView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_check_true, 0, 0, 0) + imageView.setImageResource(R.mipmap.ic_check_true) } else { - textView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_check_false, 0, 0, 0) + imageView.setImageResource(R.mipmap.ic_check_false) } } - - fun setOnCityClickListener(listener: () -> Unit) { - this.mListener = listener - } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Area1Adapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Area1Adapter.kt deleted file mode 100644 index 071bd1b..0000000 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4Area1Adapter.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.cheng.blzb.ui.fragment.guide.adapter - -import android.graphics.Color -import android.graphics.Typeface -import android.widget.TextView -import com.chad.library.adapter.base.BaseQuickAdapter -import com.chad.library.adapter.base.viewholder.BaseViewHolder -import com.cheng.blzb.R -import com.cheng.blzb.bean.AreaEntity -import com.example.base.extensions.getColor - -class GuideItem4Area1Adapter: BaseQuickAdapter(R.layout.listitem_guide_area1) { - override fun convert(holder: BaseViewHolder, item: AreaEntity) { - holder.setText(R.id.tv_name, item.name) - holder.setTextColor(R.id.tv_name, if (item.isChecked) getColor(R.color.color_125ffe) else getColor(R.color.color_222222)) - holder.getView(R.id.tv_name).typeface = if (item.isChecked) Typeface.DEFAULT_BOLD else Typeface.DEFAULT - holder.itemView.setBackgroundColor(if (item.isChecked) Color.WHITE else Color.TRANSPARENT) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4CityAdapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4CityAdapter.kt index a78a0fa..4abaeba 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4CityAdapter.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem4CityAdapter.kt @@ -10,6 +10,6 @@ class GuideItem4CityAdapter: BaseQuickAdapter(R.layo holder.setImageResource(R.id.iv_cover, item.getCityImage()) holder.setText(R.id.tv_city_name, item.name) holder.setText(R.id.tv_amount, "${item.amount}亿元") - holder.setVisible(R.id.iv_check, item.isChecked) + holder.setImageResource(R.id.iv_bg, if (item.isChecked) R.mipmap.ic_guide_item4_checked else R.mipmap.ic_guide_item4_default) } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem1Fragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem1Fragment.kt index 6dc1cce..d8ad972 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem1Fragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem1Fragment.kt @@ -9,27 +9,40 @@ import androidx.core.animation.addListener import com.cheng.blzb.common.Constants import com.cheng.blzb.databinding.FragmentGuideItem1Binding import com.cheng.blzb.event.GuideEvent +import com.cheng.blzb.manager.UserConfigManager import com.cheng.blzb.ui.fragment.guide.GuideViewModel +import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem1Adapter import com.example.base.common.RxBus +import com.example.base.decoration.FirstItemOffsetDecoration import com.example.base.extensions.onClick 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 io.reactivex.rxjava3.android.schedulers.AndroidSchedulers +import io.reactivex.rxjava3.core.Observable +import io.reactivex.rxjava3.disposables.Disposable +import org.jetbrains.anko.sdk27.listeners.onTouch import org.libpag.PAGFile +import java.util.concurrent.TimeUnit class GuideItem1Fragment : BaseFragment() { + private val companyAdapter by lazy { GuideItem1Adapter(requireContext()) } + private var scrollTask: Disposable? = null private var canClick = false override fun initView() { super.initView() binding.tvTitle.typeface = Constants.albbphtB binding.tvAppName.typeface = Constants.pmzdbt - binding.tvBtn.typeface = Constants.almmsht + binding.tvNext.typeface = Constants.almmsht val pagFile = PAGFile.Load(requireContext().assets, "effects/guide_earth.pag") binding.pagView.composition = pagFile binding.pagView.setRepeatCount(0) + + binding.rvCompany.adapter = companyAdapter + binding.rvCompany.addItemDecoration(FirstItemOffsetDecoration(ScreenUtils.getScreenWidth())) } override fun onLazyLoad() { @@ -44,7 +57,9 @@ class GuideItem1Fragment : BaseFragment true } + + binding.layoutNext.onClick { if (canClick) { RxBus.defaultInstance.post(GuideEvent(1)) } @@ -68,10 +83,13 @@ class GuideItem1Fragment : BaseFragment() { - private val ids = mutableListOf() + private val mAdapter by lazy { GuideItem2Adapter() } private var canClick = false override fun initView() { super.initView() - binding.tvName1.typeface = Constants.douyinsansB - binding.tvName2.typeface = Constants.douyinsansB - binding.tvName3.typeface = Constants.douyinsansB - binding.tvName4.typeface = Constants.douyinsansB - binding.tvName5.typeface = Constants.douyinsansB - binding.tvName6.typeface = Constants.douyinsansB - binding.tvName7.typeface = Constants.douyinsansB - binding.tvName8.typeface = Constants.douyinsansB + binding.tvTitle.typeface = Constants.pmzdbt + binding.tvNext.typeface = Constants.almmsht + + binding.mRecyclerView.adapter = mAdapter + binding.mRecyclerView.addItemDecoration(GridSpaceItemDecoration(2, DensityUtils.dp2px(18f), DensityUtils.dp2px(13f))) } override fun onLazyLoad() { @@ -45,115 +41,30 @@ class GuideItem2Fragment : BaseFragment + val item = mAdapter.getItem(position) + item.isChecked = !item.isChecked + mAdapter.notifyDataSetChanged() } - binding.layoutOption2.onClick { - val id = binding.layoutOption2.tag as Int - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck2.gone() - } else { - ids.add(id) - binding.ivCheck2.visible() - } - } - - binding.layoutOption3.onClick { - val id = binding.layoutOption3.tag as Int - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck3.gone() - } else { - ids.add(id) - binding.ivCheck3.visible() - } - } - - binding.layoutOption4.onClick { - val id = binding.layoutOption4.tag as Int - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck4.gone() - } else { - ids.add(id) - binding.ivCheck4.visible() - } - } - - binding.layoutOption5.onClick { - val id = binding.layoutOption5.tag as Int - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck5.gone() - } else { - ids.add(id) - binding.ivCheck5.visible() - } - } - - binding.layoutOption6.onClick { - val id = binding.layoutOption6.tag as Int - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck6.gone() - } else { - ids.add(id) - binding.ivCheck6.visible() - } - } - - binding.layoutOption7.onClick { - val id = binding.layoutOption7.tag as Int - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck7.gone() - } else { - ids.add(id) - binding.ivCheck7.visible() - } - } - - binding.layoutOption8.onClick { - val id = 0 - if (ids.contains(id)) { - ids.remove(id) - binding.ivCheck8.gone() - } else { - ids.add(id) - binding.ivCheck8.visible() - } - } - - binding.ivBtn.onClick { + binding.layoutNext.onClick { if (canClick) { - if (ids.isEmpty()) { + val list = mAdapter.data.filter { it.isChecked } + if (list.isEmpty()) { toast("请选择行业") return@onClick } - val hasOther = ids.contains(0) - val selectedList = if (hasOther) { - UserConfigManager.getGuideKeywords() - } else { - UserConfigManager.getGuideKeywords().filter { ids.contains(it.id) } - } + val hasOther = list.find { it.id == 0 } != null + val selectedList = if (hasOther) mAdapter.data else list selectedList.forEach { GuideFragment.hotWordList.addAll(it.children) } - RxBus.defaultInstance.post(GuideEvent(3)) + RxBus.defaultInstance.post(GuideEvent(2)) } } } @@ -167,162 +78,20 @@ class GuideItem2Fragment : BaseFragment - when(index) { - 0 -> { - binding.tvName1.text = item.name - binding.ivIcon1.setImageResource(R.mipmap.ic_guide_item3_icon1) - binding.layoutOption1.tag = item.id - } - 1 -> { - binding.tvName2.text = item.name - binding.ivIcon2.setImageResource(R.mipmap.ic_guide_item3_icon2) - binding.layoutOption2.tag = item.id - } - 2 -> { - binding.tvName3.text = item.name - binding.ivIcon3.setImageResource(R.mipmap.ic_guide_item3_icon3) - binding.layoutOption3.tag = item.id - } - 3 -> { - binding.tvName4.text = item.name - binding.ivIcon4.setImageResource(R.mipmap.ic_guide_item3_icon4) - binding.layoutOption4.tag = item.id - } - 4 -> { - binding.tvName5.text = item.name - binding.ivIcon5.setImageResource(R.mipmap.ic_guide_item3_icon5) - binding.layoutOption5.tag = item.id - } - 5 -> { - binding.tvName6.text = item.name - binding.ivIcon6.setImageResource(R.mipmap.ic_guide_item3_icon6) - binding.layoutOption6.tag = item.id - } - 6 -> { - binding.tvName7.text = item.name - binding.ivIcon7.setImageResource(R.mipmap.ic_guide_item3_icon7) - binding.layoutOption7.tag = item.id - } - } - } + mAdapter.setList(UserConfigManager.getGuideKeywords()) + mAdapter.addData(HotWordEntity(0, "其他")) startAnim() } private fun startAnim() { - val scaleXHolder = PropertyValuesHolder.ofFloat("scaleX", 0.85f, 1.15f, 0.9f, 1.1f, 0.95f, 1f) - val scaleYHolder = PropertyValuesHolder.ofFloat("scaleY", 0.85f, 1.15f, 0.9f, 1.1f, 0.95f, 1f) - - val option1ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption1, scaleXHolder, scaleYHolder) - option1ScaleAnim.duration = 1000 - option1ScaleAnim.startDelay = 1000 - option1ScaleAnim.interpolator = LinearInterpolator() - option1ScaleAnim.addListener(onStart = { - binding.layoutOption1.visible() - }) - - val option2ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption2, scaleXHolder, scaleYHolder) - option2ScaleAnim.duration = 1000 - option2ScaleAnim.startDelay = 1400 - option2ScaleAnim.interpolator = LinearInterpolator() - option2ScaleAnim.addListener(onStart = { - binding.layoutOption2.visible() - }) - - val option3ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption3, scaleXHolder, scaleYHolder) - option3ScaleAnim.duration = 1000 - option3ScaleAnim.startDelay = 1800 - option3ScaleAnim.interpolator = LinearInterpolator() - option3ScaleAnim.addListener(onStart = { - binding.layoutOption3.visible() - }) - - val option4ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption4, scaleXHolder, scaleYHolder) - option4ScaleAnim.duration = 1000 - option4ScaleAnim.startDelay = 1400 - option4ScaleAnim.interpolator = LinearInterpolator() - option4ScaleAnim.addListener(onStart = { - binding.layoutOption4.visible() - }) - - val option5ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption5, scaleXHolder, scaleYHolder) - option5ScaleAnim.duration = 1000 - option5ScaleAnim.startDelay = 1800 - option5ScaleAnim.interpolator = LinearInterpolator() - option5ScaleAnim.addListener(onStart = { - binding.layoutOption5.visible() - }) - - val option6ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption6, scaleXHolder, scaleYHolder) - option6ScaleAnim.duration = 1000 - option6ScaleAnim.startDelay = 1200 - option6ScaleAnim.interpolator = LinearInterpolator() - option6ScaleAnim.addListener(onStart = { - binding.layoutOption6.visible() - }) - - val option7ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption7, scaleXHolder, scaleYHolder) - option7ScaleAnim.duration = 1000 - option7ScaleAnim.startDelay = 1600 - option7ScaleAnim.interpolator = LinearInterpolator() - option7ScaleAnim.addListener(onStart = { - binding.layoutOption7.visible() - }) - - val option8ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption8, scaleXHolder, scaleYHolder) - option8ScaleAnim.duration = 1000 - option8ScaleAnim.startDelay = 1800 - option8ScaleAnim.interpolator = LinearInterpolator() - option8ScaleAnim.addListener(onStart = { - binding.layoutOption8.visible() - }) - - val bgTransAnim = ObjectAnimator.ofFloat(binding.ivBg, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f) - bgTransAnim.duration = 1000 - bgTransAnim.addListener(onStart = { - binding.ivBg.visible() - }) - - val titleTransAnim = ObjectAnimator.ofFloat(binding.ivTitle, "translationY", -DensityUtils.dp2px(200f).toFloat(), 0f) - titleTransAnim.duration = 1000 - titleTransAnim.startDelay = 200 - titleTransAnim.addListener(onStart = { - binding.ivTitle.visible() - }) - - val descTransAnim = ObjectAnimator.ofFloat(binding.ivDesc, "translationY", -DensityUtils.dp2px(200f).toFloat(), 0f) - descTransAnim.duration = 1000 - descTransAnim.startDelay = 200 - descTransAnim.addListener(onStart = { - binding.ivDesc.visible() - }) - - val btnScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.ivBtn, scaleXHolder, scaleYHolder) - btnScaleAnim.duration = 1000 - btnScaleAnim.startDelay = 600 - btnScaleAnim.interpolator = LinearInterpolator() - btnScaleAnim.addListener(onStart = { - binding.ivBtn.visible() + val contentTransAnim = ObjectAnimator.ofFloat(binding.layoutContent, "translationX", ScreenUtils.getScreenWidth().toFloat(), 0f) + contentTransAnim.duration = 1000 + contentTransAnim.startDelay = 400 + contentTransAnim.addListener(onStart = { + binding.layoutContent.visible() }, onEnd = { canClick = true }) - - val animSet = AnimatorSet() - animSet.playTogether( - option1ScaleAnim, - option2ScaleAnim, - option3ScaleAnim, - option4ScaleAnim, - option5ScaleAnim, - option6ScaleAnim, - option7ScaleAnim, - option8ScaleAnim, - bgTransAnim, - titleTransAnim, - descTransAnim, - btnScaleAnim - ) - animSet.start() + contentTransAnim.start() } } \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem3Fragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem3Fragment.kt index 6d84953..c51f3d5 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem3Fragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem3Fragment.kt @@ -2,232 +2,144 @@ package com.cheng.blzb.ui.fragment.guide.item import android.animation.AnimatorSet import android.animation.ObjectAnimator -import android.view.Gravity -import android.view.animation.LinearInterpolator -import android.view.animation.RotateAnimation -import android.widget.TextView +import android.text.TextUtils import androidx.core.animation.addListener +import androidx.recyclerview.widget.RecyclerView import com.cheng.blzb.R import com.cheng.blzb.bean.HotWordEntity +import com.cheng.blzb.common.Constants import com.cheng.blzb.databinding.FragmentGuideItem3Binding import com.cheng.blzb.event.GuideEvent -import com.cheng.blzb.ui.dialog.AddKeywordDialog import com.cheng.blzb.ui.fragment.guide.GuideFragment import com.cheng.blzb.ui.fragment.guide.GuideViewModel import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem3Adapter import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem3SelectedAdapter +import com.cheng.blzb.widget.ZoomOutPageTransformer import com.example.base.common.RxBus import com.example.base.decoration.GridSpaceItemDecoration -import com.example.base.extensions.getColor +import com.example.base.extensions.gone import com.example.base.extensions.onClick import com.example.base.extensions.toast 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.example.base.utils.SpanUtils -import kotlin.math.ceil class GuideItem3Fragment : BaseFragment() { - private val mAdapter by lazy { GuideItem3Adapter() } + private val mAdapter by lazy { GuideItem3Adapter(requireContext()) } private val selectedAdapter by lazy { GuideItem3SelectedAdapter() } - private val hotWordChildList = mutableListOf() - - private var tabIndex = 0 - - private var page = 0 - private var canClick = false override fun initView() { super.initView() - binding.mRecyclerView.adapter = mAdapter - binding.mRecyclerView.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(10f), DensityUtils.dp2px(10f))) + binding.tvTitle.typeface = Constants.pmzdbt + binding.tvNext.typeface = Constants.almmsht + binding.tvLast.typeface = Constants.almmsht + + binding.vpKeywords.adapter = mAdapter + binding.vpKeywords.offscreenPageLimit = 3 + val recyclerView = binding.vpKeywords.getChildAt(0) as RecyclerView + recyclerView.setPadding(DensityUtils.dp2px(24f), 0, DensityUtils.dp2px(24f), 0) + recyclerView.setClipToPadding(false) + binding.vpKeywords.setPageTransformer(ZoomOutPageTransformer()) binding.rvSelectedKeywords.adapter = selectedAdapter - binding.rvSelectedKeywords.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(10f), DensityUtils.dp2px(10f))) - selectedAdapter.addData(HotWordEntity.Child(id = -1, name = "自定义", isChecked = true)) - setKeywordCount() + binding.rvSelectedKeywords.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(12f), DensityUtils.dp2px(12f))) } override fun onLazyLoad() { super.onLazyLoad() - hotWordChildList.addAll(GuideFragment.hotWordList) - hotWordChildList.forEach { item -> - binding.tabLayout.addView(createTab(item.name)) - } - + mAdapter.setList(GuideFragment.hotWordList) + binding.vpKeywords.setCurrentItem(1000 * mAdapter.data.size, false) startAnim() } override fun initListener() { super.initListener() - binding.tabLayout.observeIndexChange { fromIndex, toIndex, _, _ -> - page = 0 - tabIndex = toIndex - if (fromIndex >= 0) { - val textView = binding.tabLayout.getChildAt(fromIndex) - textView.setBackgroundResource(0) - } - if (toIndex >= 0) { - val textView = binding.tabLayout.getChildAt(toIndex) - textView.setBackgroundResource(R.drawable.shape_f5f8ff_top_cor16) - } - - val hotWordChild = hotWordChildList[toIndex] - binding.tvAmount.text = "${hotWordChild.amount}亿元" - - val keywordList = mutableListOf() - for (i in 0 until 15) { - keywordList.add(hotWordChild.children[i]) - } - mAdapter.setList(keywordList) - } - - binding.ivRefresh.onClick { - startRotate() - val hotWordChild = hotWordChildList[tabIndex] - if (ceil(hotWordChild.children.size / 15.0) > page + 1) { - page++ - } else { - page = 0 - } - val keywordList = mutableListOf() - for (i in page * 15 until ((page + 1) * 15).coerceAtMost(hotWordChild.children.size)) { - keywordList.add(hotWordChild.children[i]) - } - mAdapter.setList(keywordList) - } - - binding.ivBtn.onClick { - if (!canClick) return@onClick - if (selectedAdapter.data.size == 1) { - toast("请添加关键词") - return@onClick - } - val keywords = selectedAdapter.data.filter { it.id != -1 }.map { it.name } - val cityIds = GuideFragment.cityList.map { it.id } - mViewModel.getTotalBidInfo(keywords.joinToString(","), cityIds.joinToString(","), "${hotWordChildList.size}") - } - - mAdapter.setOnItemClickListener { _, _, i -> - if (!canClick) return@setOnItemClickListener - val item = mAdapter.getItem(i) - if (!item.isChecked && selectedAdapter.data.size == 6) { + mAdapter.setOnKeywordClickListener { keyword -> + if (!canClick) return@setOnKeywordClickListener + if (!keyword.isChecked && selectedAdapter.data.size == 5) { toast("最多添加5个关键词") - return@setOnItemClickListener + return@setOnKeywordClickListener } - item.isChecked = !item.isChecked - mAdapter.notifyDataSetChanged() - if (item.isChecked) { - selectedAdapter.addData(item) - } else { - selectedAdapter.remove(item) + if (selectedAdapter.data.find { it.name == keyword.name } == null) { + selectedAdapter.addData(keyword) + binding.tvNodata.gone() } - setKeywordCount() } - selectedAdapter.setOnItemClickListener { _, _, i -> - val item = selectedAdapter.getItem(i) - if (item.id == -1) { - if (selectedAdapter.data.size == 6) { + binding.btnAddKeyword.onClick { + val keyword = binding.etKeyword.text.toString().trim() + if (!TextUtils.isEmpty(keyword)) { + if (selectedAdapter.data.size == 5) { toast("最多添加5个关键词") - return@setOnItemClickListener + return@onClick } - val f = AddKeywordDialog.newInstance() - f.setOnBackListener { - selectedAdapter.addData(HotWordEntity.Child(name = it, isChecked = true)) - setKeywordCount() - } - f.show(childFragmentManager, "") + selectedAdapter.addData(HotWordEntity.Child(name = keyword, isChecked = true)) + binding.etKeyword.setText(" ") + binding.tvNodata.gone() } } selectedAdapter.setOnItemChildClickListener { _, view, i -> val item = selectedAdapter.getItem(i) - if (!canClick || item.id == -1) return@setOnItemChildClickListener + if (!canClick) return@setOnItemChildClickListener if (view.id == R.id.iv_delete) { selectedAdapter.remove(item) item.isChecked = false - mAdapter.notifyDataSetChanged() - setKeywordCount() + if (selectedAdapter.data.isEmpty()) { + binding.tvNodata.visible() + } } } - } - override fun initObserve() { - super.initObserve() - mViewModel.totalLiveData.observe(this) { - GuideFragment.totalInfo = it - RxBus.defaultInstance.post(GuideEvent(4)) + binding.layoutNext.onClick { + if (!canClick) return@onClick + if (selectedAdapter.data.isEmpty()) { + toast("请添加关键词") + return@onClick + } + GuideFragment.keywordList.clear() + GuideFragment.keywordList.addAll(selectedAdapter.data) + RxBus.defaultInstance.post(GuideEvent(3)) } - } - private fun setKeywordCount() { - SpanUtils.with(binding.tvKeywordsCount) - .append("已添加关键词(") - .append("${selectedAdapter.data.size - 1}") - .setForegroundColor(getColor(R.color.color_ff493c)) - .append("/5)") - .create() - } - - private fun createTab(title: String): TextView { - val textView = TextView(requireContext()) - textView.text = title - textView.gravity = Gravity.CENTER - textView.setPadding(DensityUtils.dp2px(14f) , 0, DensityUtils.dp2px(14f), 0) - return textView - } - - private fun startRotate() { - if (binding.ivRefresh.animation != null) { - binding.ivRefresh.animation.cancel() + binding.tvLast.onClick { + RxBus.defaultInstance.post(GuideEvent(1)) } - val anim = RotateAnimation(0f, 360f, RotateAnimation.RELATIVE_TO_SELF, 0.5f, RotateAnimation.RELATIVE_TO_SELF, 0.5f) - anim.duration = 1000 - binding.ivRefresh.startAnimation(anim) } private fun startAnim() { - val keyword1TransAnim = ObjectAnimator.ofFloat(binding.layoutKeywords, "translationY", ScreenUtils.getScreenWidth().toFloat(), 0f) + val keyword1TransAnim = ObjectAnimator.ofFloat(binding.vpKeywords, "translationY", -ScreenUtils.getScreenHeight().toFloat(), 0f) keyword1TransAnim.duration = 1000 keyword1TransAnim.startDelay = 200 keyword1TransAnim.addListener(onStart = { - binding.layoutKeywords.visible() + binding.vpKeywords.visible() }) - val keyword2TransAnim = ObjectAnimator.ofFloat(binding.layoutSelectedKeywords, "translationY", ScreenUtils.getScreenWidth().toFloat(), 0f) + val keyword2TransAnim = ObjectAnimator.ofFloat(binding.layoutSelectedKeywords, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f) keyword2TransAnim.duration = 1000 keyword2TransAnim.startDelay = 600 keyword2TransAnim.addListener(onStart = { binding.layoutSelectedKeywords.visible() }) - val titleTransAnim = ObjectAnimator.ofFloat(binding.ivTitle, "translationY", -DensityUtils.dp2px(200f).toFloat(), 0f) + val titleTransAnim = ObjectAnimator.ofFloat(binding.layoutTitle, "translationY", -ScreenUtils.getScreenHeight().toFloat(), 0f) titleTransAnim.duration = 1000 titleTransAnim.startDelay = 200 titleTransAnim.addListener(onStart = { - binding.ivTitle.visible() + binding.layoutTitle.visible() }) - val descTransAnim = ObjectAnimator.ofFloat(binding.ivDesc, "translationY", -DensityUtils.dp2px(200f).toFloat(), 0f) - descTransAnim.duration = 1000 - titleTransAnim.startDelay = 200 - descTransAnim.addListener(onStart = { - binding.ivDesc.visible() - }) - - val btnTransAnim = ObjectAnimator.ofFloat(binding.ivBtn, "translationY", DensityUtils.dp2px(100f).toFloat(), 0f) + val btnTransAnim = ObjectAnimator.ofFloat(binding.layoutBottom, "alpha", 0f, 1f) btnTransAnim.duration = 1000 - btnTransAnim.startDelay = 800 - btnTransAnim.interpolator = LinearInterpolator() + btnTransAnim.startDelay = 1400 btnTransAnim.addListener(onStart = { - binding.ivBtn.visible() + binding.layoutBottom.visible() }, onEnd = { canClick = true }) @@ -237,7 +149,6 @@ class GuideItem3Fragment : BaseFragment() { - private val area1Adapter by lazy { GuideItem4Area1Adapter() } - private val area2Adapter by lazy { GuideItem4Area2Adapter() } + private val mAdapter by lazy { GuideItem4Adapter() } + + private val hotWordChildList = mutableListOf() private var canClick = false override fun initView() { super.initView() - binding.btnNext.typeface = Constants.almmsht + binding.tvTitle.typeface = Constants.pmzdbt + binding.tvNext.typeface = Constants.almmsht + binding.tvLast.typeface = Constants.almmsht - binding.rvArea1.adapter = area1Adapter - binding.rvArea2.adapter = area2Adapter + binding.mRecyclerView.adapter = mAdapter } override fun onLazyLoad() { super.onLazyLoad() + hotWordChildList.addAll(GuideFragment.hotWordList) if (UserConfigManager.getAreaList().isNotEmpty()) { setData() } else { @@ -51,51 +49,26 @@ class GuideItem4Fragment : BaseFragment - val item = area1Adapter.getItem(position) - area1Adapter.data.find { it.isChecked }?.isChecked = false - item.isChecked = true - scrollToPosition(position) - } - - area2Adapter.setOnCityClickListener { - val selectList = mutableListOf() - area2Adapter.data.forEach { area -> - selectList.addAll(area.children.filter { it.isChecked }) - } - binding.tvCityCount.text = "${selectList.size}" - } - - binding.rvArea2.addOnScrollListener(object : RecyclerView.OnScrollListener() { - override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - super.onScrolled(recyclerView, dx, dy) - val layoutManager = binding.rvArea2.layoutManager as LinearLayoutManager - val firstPosition = layoutManager.findFirstCompletelyVisibleItemPosition() - - if (firstPosition >= 0) { - val firstItem = area1Adapter.getItem(firstPosition) - area1Adapter.data.find { it.isChecked }?.isChecked = false - firstItem.isChecked = true - area1Adapter.notifyDataSetChanged() - } - } - }) - - binding.btnNext.onClick { + binding.layoutNext.onClick { if (canClick) { val selectList = mutableListOf() - area1Adapter.data.forEach { area -> + mAdapter.data.forEach { area -> selectList.addAll(area.children.filter { it.isChecked }) } if (selectList.isEmpty()) { toast("请选择地区") return@onClick } - GuideFragment.cityList.addAll(selectList) - RxBus.defaultInstance.post(GuideEvent(2)) + val cityIds = selectList.map { it.id } + val keywords = GuideFragment.keywordList.map { it.name } + mViewModel.getTotalBidInfo(keywords.joinToString(","), cityIds.joinToString(","), "${hotWordChildList.size}") } } + + binding.tvLast.onClick { + RxBus.defaultInstance.post(GuideEvent(2)) + } } override fun initObserve() { @@ -104,76 +77,29 @@ class GuideItem4Fragment : BaseFragment() { @@ -49,6 +50,7 @@ class QYZCFragment : BaseFragment() { override fun initListener() { super.initListener() + binding.rvCompany.onTouch { _, _ -> true } binding.tvArea.onClick { val f = SelectAreaDialog.newInstance(if (city != null) listOf(city!!) else emptyList(), true) diff --git a/app/src/main/java/com/cheng/blzb/widget/ZoomOutPageTransformer.kt b/app/src/main/java/com/cheng/blzb/widget/ZoomOutPageTransformer.kt new file mode 100644 index 0000000..c9467ac --- /dev/null +++ b/app/src/main/java/com/cheng/blzb/widget/ZoomOutPageTransformer.kt @@ -0,0 +1,23 @@ +package com.cheng.blzb.widget + +import android.view.View +import androidx.viewpager2.widget.ViewPager2 + +class ZoomOutPageTransformer : ViewPager2.PageTransformer { + + override fun transformPage(page: View, position: Float) { + if (position >= -1.0f && position <= 0.0f) { + //控制左侧滑入或者滑出的缩放比例 + page.scaleX = 1 + position * 0.05f + page.scaleY = 1 + position * 0.2f + } else if (position > 0.0f && position < 1.0f) { + //控制右侧滑入或者滑出的缩放比例 + page.scaleX = 1 - position * 0.05f + page.scaleY = 1 - position * 0.2f + } else { + //控制其他View缩放比例 + page.scaleX = 0.95f + page.scaleY = 0.8f + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_guide_custom_keyword_bg.xml b/app/src/main/res/drawable/shape_guide_custom_keyword_bg.xml new file mode 100644 index 0000000..ab09b1a --- /dev/null +++ b/app/src/main/res/drawable/shape_guide_custom_keyword_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_guide_item1.xml b/app/src/main/res/layout/fragment_guide_item1.xml index a34df83..cf9442b 100644 --- a/app/src/main/res/layout/fragment_guide_item1.xml +++ b/app/src/main/res/layout/fragment_guide_item1.xml @@ -6,22 +6,26 @@ android:layout_height="match_parent" android:background="#00071A"> - + app:layout_constraintTop_toTopOf="parent" + tool:visibility="visible" /> - + android:visibility="invisible" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + tool:visibility="visible" /> @@ -129,31 +134,31 @@ android:layout_width="match_parent" android:layout_height="@dimen/dp_28" android:layout_marginTop="@dimen/dp_26" - tool:listitem="@layout/listitem_guide_item1_company" android:background="@mipmap/ic_guide_item1_rv_bg" android:orientation="horizontal" android:visibility="invisible" - tool:visibility="visible" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" - app:layout_constraintTop_toBottomOf="@id/layout_title" /> + app:layout_constraintTop_toBottomOf="@id/layout_title" + tool:listitem="@layout/listitem_guide_item1_company" + tool:visibility="visible" /> + app:layout_constraintBottom_toTopOf="@id/layout_next" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/rv_company" + tool:visibility="visible" /> + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_guide_item2.xml b/app/src/main/res/layout/fragment_guide_item2.xml index f56f010..b83e441 100644 --- a/app/src/main/res/layout/fragment_guide_item2.xml +++ b/app/src/main/res/layout/fragment_guide_item2.xml @@ -6,416 +6,104 @@ android:layout_height="match_parent" android:background="@mipmap/ic_guide_bg"> - - - - - - - - + + + android:layout_marginTop="@dimen/dp_16" + android:src="@mipmap/ic_guide_item2_desc" + app:layout_constraintEnd_toEndOf="@id/tv_title" + app:layout_constraintStart_toStartOf="@id/tv_title" + app:layout_constraintTop_toBottomOf="@id/tv_title" /> - + + + app:layout_constraintStart_toStartOf="parent"> + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_guide_item3.xml b/app/src/main/res/layout/fragment_guide_item3.xml index f0ac5c5..585766c 100644 --- a/app/src/main/res/layout/fragment_guide_item3.xml +++ b/app/src/main/res/layout/fragment_guide_item3.xml @@ -4,168 +4,200 @@ xmlns:tool="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@mipmap/ic_guide_bg"> - - - - - - + android:background="@mipmap/ic_guide_bg" + android:clipChildren="false"> - - - + 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" /> - - - - - - - - - - - + android:layout_marginTop="@dimen/dp_65" + android:shadowColor="#001C52" + android:shadowDy="2" + android:shadowRadius="2" + android:text="行业商机" + 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" /> + + + + + + + + + android:text="暂无数据" + android:textColor="@color/white" + android:textSize="@dimen/sp_12" + app:layout_constraintBottom_toBottomOf="@id/rv_selected_keywords" + app:layout_constraintEnd_toEndOf="@id/rv_selected_keywords" + app:layout_constraintStart_toStartOf="@id/rv_selected_keywords" + app:layout_constraintTop_toTopOf="@id/rv_selected_keywords" /> + tool:listitem="@layout/listitem_guide_item3_selected_keyword" /> + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_guide_item4.xml b/app/src/main/res/layout/fragment_guide_item4.xml index c230d02..227ca2b 100644 --- a/app/src/main/res/layout/fragment_guide_item4.xml +++ b/app/src/main/res/layout/fragment_guide_item4.xml @@ -6,141 +6,134 @@ android:layout_height="match_parent" android:background="@mipmap/ic_guide_bg"> - - - - - - - + + + + + + + + + + + + - - - - + app:layout_constraintStart_toStartOf="parent"> + + + + + + + + + + + - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_guide_area1.xml b/app/src/main/res/layout/listitem_guide_area1.xml deleted file mode 100644 index 7d8c1ef..0000000 --- a/app/src/main/res/layout/listitem_guide_area1.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_guide_city.xml b/app/src/main/res/layout/listitem_guide_city.xml index 937a8de..9b075c7 100644 --- a/app/src/main/res/layout/listitem_guide_city.xml +++ b/app/src/main/res/layout/listitem_guide_city.xml @@ -11,23 +11,17 @@ app:layout_constraintDimensionRatio="h,1:1" app:layout_constraintTop_toTopOf="parent" /> - - - + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_guide_item3.xml b/app/src/main/res/layout/listitem_guide_item3.xml index 04189f8..a70fb73 100644 --- a/app/src/main/res/layout/listitem_guide_item3.xml +++ b/app/src/main/res/layout/listitem_guide_item3.xml @@ -1,34 +1,78 @@ + android:layout_height="match_parent" + android:background="@mipmap/ic_guide_item3_keyword_bg1" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tool="http://schemas.android.com/tools"> + + + + + + + + - - + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_guide_item3_keyword.xml b/app/src/main/res/layout/listitem_guide_item3_keyword.xml new file mode 100644 index 0000000..c79ef0e --- /dev/null +++ b/app/src/main/res/layout/listitem_guide_item3_keyword.xml @@ -0,0 +1,18 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_guide3_selected_keyword.xml b/app/src/main/res/layout/listitem_guide_item3_selected_keyword.xml similarity index 66% rename from app/src/main/res/layout/listitem_guide3_selected_keyword.xml rename to app/src/main/res/layout/listitem_guide_item3_selected_keyword.xml index edb0254..cc7372e 100644 --- a/app/src/main/res/layout/listitem_guide3_selected_keyword.xml +++ b/app/src/main/res/layout/listitem_guide_item3_selected_keyword.xml @@ -2,37 +2,33 @@ + android:layout_height="@dimen/dp_32" + android:background="@mipmap/ic_guide_item3_checked" + android:padding="@dimen/dp_8"> diff --git a/app/src/main/res/layout/listitem_guide_area2.xml b/app/src/main/res/layout/listitem_guide_item4.xml similarity index 65% rename from app/src/main/res/layout/listitem_guide_area2.xml rename to app/src/main/res/layout/listitem_guide_item4.xml index 4a59905..2f5ea60 100644 --- a/app/src/main/res/layout/listitem_guide_area2.xml +++ b/app/src/main/res/layout/listitem_guide_item4.xml @@ -7,30 +7,25 @@ - + app:layout_constraintBottom_toBottomOf="@id/tv_name" + app:layout_constraintTop_toTopOf="@id/tv_name" /> \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_arrow_l.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_arrow_l.webp new file mode 100644 index 0000000..a625a54 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_arrow_l.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_arrow_r.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_arrow_r.webp new file mode 100644 index 0000000..f0d8fb6 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_arrow_r.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_bg.webp index 919c1c4..c4ec38a 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_bg.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_btn_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_btn_bg.webp new file mode 100644 index 0000000..8cdb691 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_btn_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_arrow_l.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_arrow_l.png deleted file mode 100644 index 0423d1c..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_arrow_l.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_arrow_r.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_arrow_r.png deleted file mode 100644 index 3b7da08..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_arrow_r.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_bg.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_bg.png deleted file mode 100644 index 92b62f6..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_bg.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_bg.webp new file mode 100644 index 0000000..522b375 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_btn.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_btn.png deleted file mode 100644 index 305ccb1..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_btn.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_flow.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_flow.png deleted file mode 100644 index 778e481..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_flow.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_flow.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_flow.webp new file mode 100644 index 0000000..9f35bf9 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_flow.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_rv_bg.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_rv_bg.png deleted file mode 100644 index 4f83b67..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_rv_bg.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_rv_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_rv_bg.webp new file mode 100644 index 0000000..ef60938 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_rv_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_bg.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_bg.png deleted file mode 100644 index aa92910..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_bg.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_bg.webp new file mode 100644 index 0000000..0ecbdc9 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_light.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_light.png deleted file mode 100644 index 599166c..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_light.png and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_light.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_light.webp new file mode 100644 index 0000000..70dc244 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_title_light.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_checked.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_checked.webp index 036b195..1948a82 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_checked.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_checked.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_city_checked.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_city_checked.webp deleted file mode 100644 index 36846b6..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_city_checked.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_default.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_default.webp new file mode 100644 index 0000000..1df9d8c Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_default.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_desc.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_desc.webp index 3084322..a721f0a 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_desc.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_desc.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon1.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon1.webp index 72a9323..77a8b2b 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon1.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon1.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon2.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon2.webp index 2105c9c..b3d4b72 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon2.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon2.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon3.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon3.webp new file mode 100644 index 0000000..ca1365f Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon3.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon4.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon4.webp new file mode 100644 index 0000000..fa7bc81 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon4.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon5.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon5.webp new file mode 100644 index 0000000..1bf48b3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon5.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon6.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon6.webp new file mode 100644 index 0000000..92c05b3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon6.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon7.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon7.webp new file mode 100644 index 0000000..5436b87 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon7.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon8.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon8.webp new file mode 100644 index 0000000..27e4d10 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_icon8.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title.webp deleted file mode 100644 index 9b1fe68..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title_left.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title_left.webp deleted file mode 100644 index ef6914e..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title_left.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title_right.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title_right.webp deleted file mode 100644 index 9325a49..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item2_title_right.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_bg.webp deleted file mode 100644 index c4eba51..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_bg.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_btn.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_btn.webp deleted file mode 100644 index a9d719f..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_btn.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.webp index 42b6068..1074e75 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_default.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_default.webp index ca9a6ac..6cc4245 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_default.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_default.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.webp index 583c84f..5b1a5d7 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon1.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon1.webp deleted file mode 100644 index a6a1bf2..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon1.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon2.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon2.webp deleted file mode 100644 index 5983b97..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon2.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon3.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon3.webp deleted file mode 100644 index f9fefd5..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon3.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon4.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon4.webp deleted file mode 100644 index 4db9bad..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon4.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon5.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon5.webp deleted file mode 100644 index 1506ee9..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon5.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon6.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon6.webp deleted file mode 100644 index 54ca664..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon6.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon7.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon7.webp deleted file mode 100644 index aa274e4..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon7.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon8.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon8.webp deleted file mode 100644 index c168564..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon8.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_keyword_bg1.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_keyword_bg1.webp new file mode 100644 index 0000000..10265d0 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_keyword_bg1.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_keyword_bg2.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_keyword_bg2.webp new file mode 100644 index 0000000..e8e6855 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_keyword_bg2.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_checked.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_checked.webp deleted file mode 100644 index ea038b5..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_checked.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_default.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_default.webp deleted file mode 100644 index 11b9a91..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_default.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_title.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_title.webp deleted file mode 100644 index 9608f2d..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_title.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_bg.webp new file mode 100644 index 0000000..892af21 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_checked.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_checked.webp new file mode 100644 index 0000000..e73e904 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_checked.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_default.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_default.webp new file mode 100644 index 0000000..7c39d7e Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_default.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_delete.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_delete.webp deleted file mode 100644 index 1b8c07e..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_delete.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_desc.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_desc.webp index 38a3749..2c0c66a 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_desc.webp and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_desc.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_title.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_title.webp deleted file mode 100644 index 1e4ebac..0000000 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_guide_item4_title.webp and /dev/null differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item_title_bg.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item_title_bg.webp new file mode 100644 index 0000000..f6f60ab Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item_title_bg.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_refresh_guide_keywords.webp b/app/src/main/res/mipmap-xxhdpi/ic_refresh_guide_keywords.webp index 9af61f2..748a084 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_refresh_guide_keywords.webp and b/app/src/main/res/mipmap-xxhdpi/ic_refresh_guide_keywords.webp differ