添加引导页4、5
|
|
@ -212,6 +212,8 @@ dependencies {
|
||||||
implementation 'com.bytedance.ads:AppConvert:2.0.0' //巨量融合
|
implementation 'com.bytedance.ads:AppConvert:2.0.0' //巨量融合
|
||||||
implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.14' // 滚轮选择器
|
implementation 'com.github.gzu-liyujiang.AndroidPicker:WheelPicker:4.1.14' // 滚轮选择器
|
||||||
implementation 'com.github.lihangleo2:ShadowLayout:3.4.1' //阴影布局
|
implementation 'com.github.lihangleo2:ShadowLayout:3.4.1' //阴影布局
|
||||||
|
implementation 'com.github.YvesCheung.RollingText:RollingText:1.3.0' //数字滚动效果
|
||||||
|
implementation 'com.tencent.tav:libpag:4.4.25' //libpag动画加载
|
||||||
//media3视频播放
|
//media3视频播放
|
||||||
implementation "androidx.media3:media3-exoplayer:1.4.1"
|
implementation "androidx.media3:media3-exoplayer:1.4.1"
|
||||||
implementation "androidx.media3:media3-ui:1.4.1"
|
implementation "androidx.media3:media3-ui:1.4.1"
|
||||||
|
|
|
||||||
|
|
@ -5,10 +5,10 @@ import com.google.gson.annotations.SerializedName
|
||||||
class ConfigEntity {
|
class ConfigEntity {
|
||||||
|
|
||||||
@SerializedName("client.version.upgrade")
|
@SerializedName("client.version.upgrade")
|
||||||
var versionEntity: com.cheng.blzb.bean.VersionEntity? = null
|
var versionEntity: VersionEntity? = null
|
||||||
|
|
||||||
@SerializedName("client.weixin.share") //微信分享
|
@SerializedName("client.weixin.share") //微信分享
|
||||||
var wxShareEntity: com.cheng.blzb.bean.WxShareEntity? = null
|
var wxShareEntity: WxShareEntity? = null
|
||||||
|
|
||||||
@SerializedName("client.guide.pay.enable")
|
@SerializedName("client.guide.pay.enable")
|
||||||
var guidePayEnable: Boolean? = true //引导页是否开启支付,默认可以
|
var guidePayEnable: Boolean? = true //引导页是否开启支付,默认可以
|
||||||
|
|
@ -16,9 +16,6 @@ class ConfigEntity {
|
||||||
@SerializedName("client.guide.enable")
|
@SerializedName("client.guide.enable")
|
||||||
var guideEnable: Boolean? = true //是否开启引导页
|
var guideEnable: Boolean? = true //是否开启引导页
|
||||||
|
|
||||||
@SerializedName("client.start.function.hint")
|
|
||||||
var guideHint: String? = ""
|
|
||||||
|
|
||||||
@SerializedName("client.nologin.pay.enable")
|
@SerializedName("client.nologin.pay.enable")
|
||||||
var noLoginPayEnable: Boolean? = false
|
var noLoginPayEnable: Boolean? = false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ data class HotWordEntity(
|
||||||
val amount: String = "0",
|
val amount: String = "0",
|
||||||
val children: List<Child> = emptyList(),
|
val children: List<Child> = emptyList(),
|
||||||
val id: Int = 0,
|
val id: Int = 0,
|
||||||
val name: String,
|
val name: String = "",
|
||||||
val pid: Int = 0,
|
val pid: Int = 0,
|
||||||
val status: String = "",
|
val status: String = "",
|
||||||
val type: String = "",
|
val type: String = "",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
package com.cheng.blzb.event
|
package com.cheng.blzb.event
|
||||||
|
|
||||||
class GuideEvent(var nextPage: Boolean) {
|
class GuideEvent(var toIndex: Int)
|
||||||
}
|
|
||||||
|
|
@ -3,8 +3,8 @@ package com.cheng.blzb.manager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.text.TextUtils
|
import android.text.TextUtils
|
||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import com.cheng.blzb.bean.BidTypeEntity
|
|
||||||
import com.cheng.blzb.bean.AreaEntity
|
import com.cheng.blzb.bean.AreaEntity
|
||||||
|
import com.cheng.blzb.bean.BidTypeEntity
|
||||||
import com.cheng.blzb.bean.HotWordEntity
|
import com.cheng.blzb.bean.HotWordEntity
|
||||||
import com.cheng.blzb.net.ApiFactory
|
import com.cheng.blzb.net.ApiFactory
|
||||||
import com.example.base.extensions.toast
|
import com.example.base.extensions.toast
|
||||||
|
|
@ -77,7 +77,6 @@ object UserConfigManager {
|
||||||
if (data.config != null){
|
if (data.config != null){
|
||||||
saveGuidePayEnable(data.config!!.guidePayEnable!!)
|
saveGuidePayEnable(data.config!!.guidePayEnable!!)
|
||||||
saveGuideEnable(data.config!!.guideEnable!!)
|
saveGuideEnable(data.config!!.guideEnable!!)
|
||||||
saveGuideHint(data.config!!.guideHint)
|
|
||||||
saveNoLoginPay(data.config!!.noLoginPayEnable!!)
|
saveNoLoginPay(data.config!!.noLoginPayEnable!!)
|
||||||
savePayAgreementEnable(data.config!!.payAgreementEnable!!)
|
savePayAgreementEnable(data.config!!.payAgreementEnable!!)
|
||||||
saveLoginType(data.config!!.loginType!!)
|
saveLoginType(data.config!!.loginType!!)
|
||||||
|
|
@ -131,14 +130,6 @@ object UserConfigManager {
|
||||||
return MMKVUtils.getBoolean("guide", true)
|
return MMKVUtils.getBoolean("guide", true)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveGuideHint(hint: String?) {
|
|
||||||
MMKVUtils.put("guide_hint", hint)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getGuideHint(): String {
|
|
||||||
return MMKVUtils.getString("guide_hint") ?: ""
|
|
||||||
}
|
|
||||||
|
|
||||||
fun saveIsTemp(temp: Boolean) {
|
fun saveIsTemp(temp: Boolean) {
|
||||||
MMKVUtils.put("x-role", temp)//true临时用户 ,false登录用户
|
MMKVUtils.put("x-role", temp)//true临时用户 ,false登录用户
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,108 @@
|
||||||
|
package com.cheng.blzb.ui.dialog
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.app.Dialog
|
||||||
|
import android.graphics.Color
|
||||||
|
import android.graphics.drawable.ColorDrawable
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.text.TextUtils
|
||||||
|
import android.view.Gravity
|
||||||
|
import android.view.LayoutInflater
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
import androidx.fragment.app.DialogFragment
|
||||||
|
import com.cheng.blzb.R
|
||||||
|
import com.cheng.blzb.common.Constants
|
||||||
|
import com.cheng.blzb.databinding.DialogAddKeywordBinding
|
||||||
|
import com.cheng.blzb.impl.TextWatcherImpl
|
||||||
|
import com.cheng.blzb.utils.KeyboardUtils
|
||||||
|
import com.example.base.extensions.onClick
|
||||||
|
import com.example.base.extensions.toast
|
||||||
|
import com.example.base.utils.ScreenUtils
|
||||||
|
|
||||||
|
class AddKeywordDialog : DialogFragment(), KeyboardUtils.OnSoftInputChangedListener {
|
||||||
|
private var mOnBackListener: ((String) -> Unit)? = null //回调事件
|
||||||
|
|
||||||
|
lateinit var binding: DialogAddKeywordBinding
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
val window = dialog?.window
|
||||||
|
val windowParams = window?.attributes
|
||||||
|
windowParams?.dimAmount = 0.7f
|
||||||
|
windowParams?.width = ScreenUtils.getWindowSize().x
|
||||||
|
windowParams?.gravity = Gravity.BOTTOM
|
||||||
|
windowParams?.windowAnimations = R.style.dialog_bottom
|
||||||
|
dialog?.window?.attributes = windowParams
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||||
|
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
|
||||||
|
setCancelable(false)
|
||||||
|
KeyboardUtils.registerSoftInputChangedListener(requireActivity(), this)
|
||||||
|
return super.onCreateView(inflater, container, savedInstanceState)
|
||||||
|
}
|
||||||
|
|
||||||
|
private val textWatcher = object : TextWatcherImpl() {
|
||||||
|
@SuppressLint("SetTextI18n")
|
||||||
|
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
|
||||||
|
binding.ivClearText.visibility = if (TextUtils.isEmpty(s)) View.GONE else View.VISIBLE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||||
|
val view = layoutInflater.inflate(R.layout.dialog_add_keyword, null)
|
||||||
|
|
||||||
|
binding = DialogAddKeywordBinding.bind(view)
|
||||||
|
|
||||||
|
binding.tvTitle.typeface = Constants.douyinsansB
|
||||||
|
|
||||||
|
binding.etKeyword.addTextChangedListener(textWatcher)
|
||||||
|
|
||||||
|
binding.ivClose.onClick {
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
binding.ivClearText.onClick {
|
||||||
|
binding.etKeyword.setText("")
|
||||||
|
}
|
||||||
|
binding.btnNext.onClick {
|
||||||
|
val keyword = binding.etKeyword.text.toString().trim()
|
||||||
|
if (TextUtils.isEmpty(keyword)) {
|
||||||
|
toast("请输入关键词")
|
||||||
|
return@onClick
|
||||||
|
}
|
||||||
|
mOnBackListener?.invoke(keyword)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
|
||||||
|
val dialog = Dialog(requireContext())
|
||||||
|
dialog.setContentView(view)
|
||||||
|
return dialog
|
||||||
|
}
|
||||||
|
|
||||||
|
fun setOnBackListener(listener: (String) -> Unit) {
|
||||||
|
mOnBackListener = listener
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSoftInputChanged(height: Int) {
|
||||||
|
val lp = binding.layoutContent.layoutParams as ConstraintLayout.LayoutParams
|
||||||
|
lp.bottomMargin = height
|
||||||
|
binding.layoutContent.layoutParams = lp
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroyView() {
|
||||||
|
KeyboardUtils.unregisterSoftInputChangedListener(requireActivity().window)
|
||||||
|
binding.etKeyword.removeTextChangedListener(textWatcher)
|
||||||
|
super.onDestroyView()
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
fun newInstance(): AddKeywordDialog {
|
||||||
|
val arg = Bundle()
|
||||||
|
val fragment = AddKeywordDialog()
|
||||||
|
fragment.arguments = arg
|
||||||
|
return fragment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,14 +3,10 @@ package com.cheng.blzb.ui.fragment.guide
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import androidx.fragment.app.Fragment
|
import androidx.fragment.app.Fragment
|
||||||
import androidx.fragment.app.FragmentStatePagerAdapter
|
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||||
import androidx.viewpager.widget.ViewPager
|
|
||||||
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
|
import androidx.viewpager.widget.ViewPager.OnPageChangeListener
|
||||||
import com.example.base.extensions.gone
|
import com.cheng.blzb.bean.AreaEntity
|
||||||
import com.example.base.extensions.onClick
|
import com.cheng.blzb.bean.GuideTotalBidEntity
|
||||||
import com.example.base.ui.BaseFragment
|
import com.cheng.blzb.bean.HotWordEntity
|
||||||
import com.cheng.blzb.ui.activity.MainActivity
|
|
||||||
import com.cheng.blzb.ui.activity.PublicActivity
|
|
||||||
import com.cheng.blzb.common.Constants
|
|
||||||
import com.cheng.blzb.common.EventConstants
|
import com.cheng.blzb.common.EventConstants
|
||||||
import com.cheng.blzb.databinding.FragmentGuideContentBinding
|
import com.cheng.blzb.databinding.FragmentGuideContentBinding
|
||||||
import com.cheng.blzb.event.GuideEvent
|
import com.cheng.blzb.event.GuideEvent
|
||||||
|
|
@ -20,19 +16,31 @@ import com.cheng.blzb.ui.base.BasePageAdapter
|
||||||
import com.cheng.blzb.ui.fragment.guide.item.GuideItem1Fragment
|
import com.cheng.blzb.ui.fragment.guide.item.GuideItem1Fragment
|
||||||
import com.cheng.blzb.ui.fragment.guide.item.GuideItem2Fragment
|
import com.cheng.blzb.ui.fragment.guide.item.GuideItem2Fragment
|
||||||
import com.cheng.blzb.ui.fragment.guide.item.GuideItem3Fragment
|
import com.cheng.blzb.ui.fragment.guide.item.GuideItem3Fragment
|
||||||
import com.cheng.blzb.ui.fragment.mine.vip.VipFragment
|
import com.cheng.blzb.ui.fragment.guide.item.GuideItem4Fragment
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.item.GuideItem5Fragment
|
||||||
import com.example.base.common.RxBus
|
import com.example.base.common.RxBus
|
||||||
import org.jetbrains.anko.startActivity
|
import com.example.base.ui.BaseFragment
|
||||||
import kotlin.collections.minusAssign
|
|
||||||
import kotlin.collections.plusAssign
|
|
||||||
|
|
||||||
class GuideFragment : BaseFragment<FragmentGuideContentBinding, GuideViewModel>() {
|
class GuideFragment : BaseFragment<FragmentGuideContentBinding, GuideViewModel>() {
|
||||||
|
|
||||||
private var titles = listOf("guide1", "guide2", "guide3", "guide4", "guide5")
|
private var titles = listOf("guide1", "guide2", "guide3", "guide4", "guide5")
|
||||||
private val fragmentList by lazy { mutableListOf<Fragment>() }
|
private val fragmentList by lazy { mutableListOf<Fragment>() }
|
||||||
private val pageAdapter by lazy { BasePageAdapter(childFragmentManager, titles, fragmentList, FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) }
|
private val pageAdapter by lazy {
|
||||||
|
BasePageAdapter(
|
||||||
|
childFragmentManager,
|
||||||
|
titles,
|
||||||
|
fragmentList,
|
||||||
|
FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
|
||||||
|
)
|
||||||
|
}
|
||||||
private var currentPosition = 0
|
private var currentPosition = 0
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val cityList = mutableListOf<AreaEntity>()
|
||||||
|
val hotWordList = mutableListOf<HotWordEntity.Child>()
|
||||||
|
var totalInfo: GuideTotalBidEntity? = null
|
||||||
|
}
|
||||||
|
|
||||||
override fun initView() {
|
override fun initView() {
|
||||||
super.initView()
|
super.initView()
|
||||||
|
|
||||||
|
|
@ -44,8 +52,8 @@ class GuideFragment :BaseFragment<FragmentGuideContentBinding, GuideViewModel>()
|
||||||
fragmentList.add(GuideItem1Fragment())
|
fragmentList.add(GuideItem1Fragment())
|
||||||
fragmentList.add(GuideItem2Fragment())
|
fragmentList.add(GuideItem2Fragment())
|
||||||
fragmentList.add(GuideItem3Fragment())
|
fragmentList.add(GuideItem3Fragment())
|
||||||
// fragmentList.add(GuideItem4Fragment())
|
fragmentList.add(GuideItem4Fragment())
|
||||||
// fragmentList.add(GuideItem5Fragment())
|
fragmentList.add(GuideItem5Fragment())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun initData() {
|
override fun initData() {
|
||||||
|
|
@ -86,10 +94,8 @@ class GuideFragment :BaseFragment<FragmentGuideContentBinding, GuideViewModel>()
|
||||||
}
|
}
|
||||||
|
|
||||||
val guideEvent = RxBus.defaultInstance.toObservable(GuideEvent::class.java).subscribe {
|
val guideEvent = RxBus.defaultInstance.toObservable(GuideEvent::class.java).subscribe {
|
||||||
if (it.nextPage) {
|
if (it.toIndex < fragmentList.size) {
|
||||||
binding.viewPager.currentItem += 1
|
binding.viewPager.currentItem = it.toIndex
|
||||||
} else {
|
|
||||||
binding.viewPager.currentItem -= 1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
addDisposable(guideEvent)
|
addDisposable(guideEvent)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
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
|
||||||
|
import com.example.base.extensions.getColor
|
||||||
|
|
||||||
|
class GuideItem4Adapter : BaseQuickAdapter<HotWordEntity.Child, BaseViewHolder>(R.layout.listitem_guide_item4) {
|
||||||
|
override fun convert(holder: BaseViewHolder, item: HotWordEntity.Child) {
|
||||||
|
holder.setText(R.id.tv_name, item.name)
|
||||||
|
if (item.isChecked) {
|
||||||
|
holder.setImageResource(R.id.iv_add, R.mipmap.ic_guide_item4_checked)
|
||||||
|
holder.setTextColor(R.id.tv_name, getColor(R.color.color_125ffe))
|
||||||
|
} else {
|
||||||
|
holder.setImageResource(R.id.iv_add, R.mipmap.ic_guide_item4_default)
|
||||||
|
holder.setTextColor(R.id.tv_name, getColor(R.color.color_1a1a1a))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
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 GuideItem4SelectedAdapter: BaseQuickAdapter<HotWordEntity.Child, BaseViewHolder>(R.layout.listitem_guide4_selected_keyword) {
|
||||||
|
|
||||||
|
init {
|
||||||
|
addChildClickViewIds(R.id.iv_delete)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun convert(holder: BaseViewHolder, item: HotWordEntity.Child) {
|
||||||
|
holder.setText(R.id.tv_name, item.name)
|
||||||
|
if (item.id == -1) {
|
||||||
|
holder.setTextColor(R.id.tv_name, "#8D93A1".toColorInt())
|
||||||
|
holder.setImageResource(R.id.iv_delete, R.mipmap.ic_guide_item4_default)
|
||||||
|
} else {
|
||||||
|
holder.setTextColor(R.id.tv_name, getColor(R.color.color_125ffe))
|
||||||
|
holder.setImageResource(R.id.iv_delete, R.mipmap.ic_guide_item4_delete)
|
||||||
|
}
|
||||||
|
holder.getView<TextView>(R.id.tv_name).requestFocus()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.cheng.blzb.ui.fragment.guide.adapter
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.BaseAdapter
|
||||||
|
import android.widget.TextView
|
||||||
|
import com.cheng.blzb.R
|
||||||
|
import com.cheng.blzb.bean.AreaEntity
|
||||||
|
import com.cheng.blzb.common.Constants
|
||||||
|
|
||||||
|
|
||||||
|
class GuideItem5CityAdapter(val context: Context, val data: List<AreaEntity>): BaseAdapter() {
|
||||||
|
override fun getCount(): Int {
|
||||||
|
return data.size
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItem(position: Int): AreaEntity {
|
||||||
|
return data[position]
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemId(position: Int): Long {
|
||||||
|
return position.toLong()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
|
||||||
|
val view: View
|
||||||
|
val viewHolder: ViewHolder
|
||||||
|
if (convertView == null) {
|
||||||
|
view = View.inflate(context, R.layout.listitem_guide_item5_city, null)
|
||||||
|
viewHolder = ViewHolder(view)
|
||||||
|
view.tag = viewHolder
|
||||||
|
} else {
|
||||||
|
view = convertView
|
||||||
|
viewHolder = convertView.tag as ViewHolder
|
||||||
|
}
|
||||||
|
viewHolder.tvName.typeface = Constants.ysbth
|
||||||
|
viewHolder.tvName.text = getItem(position).name
|
||||||
|
return view
|
||||||
|
}
|
||||||
|
|
||||||
|
inner class ViewHolder(val view: View) {
|
||||||
|
val tvName: TextView = view.findViewById(R.id.tv_name)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package com.cheng.blzb.ui.fragment.guide.adapter
|
||||||
|
|
||||||
|
import android.content.Context
|
||||||
|
import android.view.View
|
||||||
|
import android.view.ViewGroup
|
||||||
|
import android.widget.TextView
|
||||||
|
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.cheng.blzb.common.Constants
|
||||||
|
|
||||||
|
class GuideItem5IndustryAdapter(val context: Context, val data: MutableList<HotWordEntity.Child>): RecyclerView.Adapter<BaseViewHolder>() {
|
||||||
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder {
|
||||||
|
val view = View.inflate(context, R.layout.listitem_guide_item5_industry, null)
|
||||||
|
return BaseViewHolder(view)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
|
||||||
|
holder.getView<TextView>(R.id.tv_name).typeface = Constants.ysbth
|
||||||
|
holder.setText(R.id.tv_name, data[position % data.size].name)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun getItemCount(): Int {
|
||||||
|
if (data.isNotEmpty()) {
|
||||||
|
return Int.MAX_VALUE
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -32,7 +32,7 @@ class GuideItem1Fragment : BaseFragment<FragmentGuideItem1Binding, GuideViewMode
|
||||||
super.initListener()
|
super.initListener()
|
||||||
binding.ivBtn.onClick {
|
binding.ivBtn.onClick {
|
||||||
if (canClick) {
|
if (canClick) {
|
||||||
RxBus.defaultInstance.post(GuideEvent(true))
|
RxBus.defaultInstance.post(GuideEvent(1))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import com.cheng.blzb.common.Constants
|
||||||
import com.cheng.blzb.databinding.FragmentGuideItem2Binding
|
import com.cheng.blzb.databinding.FragmentGuideItem2Binding
|
||||||
import com.cheng.blzb.event.GuideEvent
|
import com.cheng.blzb.event.GuideEvent
|
||||||
import com.cheng.blzb.manager.UserConfigManager
|
import com.cheng.blzb.manager.UserConfigManager
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.GuideFragment
|
||||||
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
|
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
|
||||||
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2Area1Adapter
|
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2Area1Adapter
|
||||||
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2Area2Adapter
|
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2Area2Adapter
|
||||||
|
|
@ -73,7 +74,8 @@ class GuideItem2Fragment: BaseFragment<FragmentGuideItem2Binding, GuideViewModel
|
||||||
toast("请选择地区")
|
toast("请选择地区")
|
||||||
return@onClick
|
return@onClick
|
||||||
}
|
}
|
||||||
RxBus.defaultInstance.post(GuideEvent(true))
|
GuideFragment.cityList.addAll(selectList)
|
||||||
|
RxBus.defaultInstance.post(GuideEvent(2))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,18 +5,24 @@ import android.animation.ObjectAnimator
|
||||||
import android.animation.PropertyValuesHolder
|
import android.animation.PropertyValuesHolder
|
||||||
import android.view.animation.LinearInterpolator
|
import android.view.animation.LinearInterpolator
|
||||||
import androidx.core.animation.addListener
|
import androidx.core.animation.addListener
|
||||||
|
import com.cheng.blzb.R
|
||||||
import com.cheng.blzb.common.Constants
|
import com.cheng.blzb.common.Constants
|
||||||
import com.cheng.blzb.databinding.FragmentGuideItem3Binding
|
import com.cheng.blzb.databinding.FragmentGuideItem3Binding
|
||||||
import com.cheng.blzb.event.GuideEvent
|
import com.cheng.blzb.event.GuideEvent
|
||||||
|
import com.cheng.blzb.manager.UserConfigManager
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.GuideFragment
|
||||||
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
|
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
|
||||||
import com.example.base.common.RxBus
|
import com.example.base.common.RxBus
|
||||||
|
import com.example.base.extensions.gone
|
||||||
import com.example.base.extensions.onClick
|
import com.example.base.extensions.onClick
|
||||||
|
import com.example.base.extensions.toast
|
||||||
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.example.base.utils.ScreenUtils
|
||||||
|
|
||||||
class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewModel>() {
|
class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewModel>() {
|
||||||
|
private val ids = mutableListOf<Int>()
|
||||||
|
|
||||||
private var canClick = false
|
private var canClick = false
|
||||||
|
|
||||||
|
|
@ -34,6 +40,46 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
override fun initData() {
|
override fun initData() {
|
||||||
super.initData()
|
super.initData()
|
||||||
|
val hotWords = UserConfigManager.getGuideKeywords()
|
||||||
|
hotWords.forEachIndexed { index, item ->
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onLazyLoad() {
|
override fun onLazyLoad() {
|
||||||
|
|
@ -43,9 +89,110 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
override fun initListener() {
|
override fun initListener() {
|
||||||
super.initListener()
|
super.initListener()
|
||||||
|
binding.layoutOption1.onClick {
|
||||||
|
val id = binding.layoutOption1.tag as Int
|
||||||
|
if (ids.contains(id)) {
|
||||||
|
ids.remove(id)
|
||||||
|
binding.ivCheck1.gone()
|
||||||
|
} else {
|
||||||
|
ids.add(id)
|
||||||
|
binding.ivCheck1.visible()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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.ivBtn.onClick {
|
||||||
if (canClick) {
|
if (canClick) {
|
||||||
RxBus.defaultInstance.post(GuideEvent(true))
|
if (ids.isEmpty()) {
|
||||||
|
toast("请选择行业")
|
||||||
|
return@onClick
|
||||||
|
}
|
||||||
|
val hasOther = ids.contains(0)
|
||||||
|
val selectedList = if (hasOther) {
|
||||||
|
UserConfigManager.getGuideKeywords()
|
||||||
|
} else {
|
||||||
|
UserConfigManager.getGuideKeywords().filter { ids.contains(it.id) }
|
||||||
|
}
|
||||||
|
selectedList.forEach {
|
||||||
|
GuideFragment.hotWordList.addAll(it.children)
|
||||||
|
}
|
||||||
|
RxBus.defaultInstance.post(GuideEvent(3))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -56,7 +203,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option1ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption1, scaleXHolder, scaleYHolder)
|
val option1ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption1, scaleXHolder, scaleYHolder)
|
||||||
option1ScaleAnim.duration = 1000
|
option1ScaleAnim.duration = 1000
|
||||||
option1ScaleAnim.startDelay = 1800
|
option1ScaleAnim.startDelay = 1000
|
||||||
option1ScaleAnim.interpolator = LinearInterpolator()
|
option1ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option1ScaleAnim.addListener(onStart = {
|
option1ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption1.visible()
|
binding.layoutOption1.visible()
|
||||||
|
|
@ -64,7 +211,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option2ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption2, scaleXHolder, scaleYHolder)
|
val option2ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption2, scaleXHolder, scaleYHolder)
|
||||||
option2ScaleAnim.duration = 1000
|
option2ScaleAnim.duration = 1000
|
||||||
option2ScaleAnim.startDelay = 1000
|
option2ScaleAnim.startDelay = 1400
|
||||||
option2ScaleAnim.interpolator = LinearInterpolator()
|
option2ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option2ScaleAnim.addListener(onStart = {
|
option2ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption2.visible()
|
binding.layoutOption2.visible()
|
||||||
|
|
@ -72,7 +219,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option3ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption3, scaleXHolder, scaleYHolder)
|
val option3ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption3, scaleXHolder, scaleYHolder)
|
||||||
option3ScaleAnim.duration = 1000
|
option3ScaleAnim.duration = 1000
|
||||||
option3ScaleAnim.startDelay = 1400
|
option3ScaleAnim.startDelay = 1800
|
||||||
option3ScaleAnim.interpolator = LinearInterpolator()
|
option3ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option3ScaleAnim.addListener(onStart = {
|
option3ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption3.visible()
|
binding.layoutOption3.visible()
|
||||||
|
|
@ -80,7 +227,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option4ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption4, scaleXHolder, scaleYHolder)
|
val option4ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption4, scaleXHolder, scaleYHolder)
|
||||||
option4ScaleAnim.duration = 1000
|
option4ScaleAnim.duration = 1000
|
||||||
option4ScaleAnim.startDelay = 1800
|
option4ScaleAnim.startDelay = 1400
|
||||||
option4ScaleAnim.interpolator = LinearInterpolator()
|
option4ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option4ScaleAnim.addListener(onStart = {
|
option4ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption4.visible()
|
binding.layoutOption4.visible()
|
||||||
|
|
@ -88,7 +235,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option5ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption5, scaleXHolder, scaleYHolder)
|
val option5ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption5, scaleXHolder, scaleYHolder)
|
||||||
option5ScaleAnim.duration = 1000
|
option5ScaleAnim.duration = 1000
|
||||||
option5ScaleAnim.startDelay = 1200
|
option5ScaleAnim.startDelay = 1800
|
||||||
option5ScaleAnim.interpolator = LinearInterpolator()
|
option5ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option5ScaleAnim.addListener(onStart = {
|
option5ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption5.visible()
|
binding.layoutOption5.visible()
|
||||||
|
|
@ -96,7 +243,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option6ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption6, scaleXHolder, scaleYHolder)
|
val option6ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption6, scaleXHolder, scaleYHolder)
|
||||||
option6ScaleAnim.duration = 1000
|
option6ScaleAnim.duration = 1000
|
||||||
option6ScaleAnim.startDelay = 1800
|
option6ScaleAnim.startDelay = 1200
|
||||||
option6ScaleAnim.interpolator = LinearInterpolator()
|
option6ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option6ScaleAnim.addListener(onStart = {
|
option6ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption6.visible()
|
binding.layoutOption6.visible()
|
||||||
|
|
@ -104,7 +251,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option7ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption7, scaleXHolder, scaleYHolder)
|
val option7ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption7, scaleXHolder, scaleYHolder)
|
||||||
option7ScaleAnim.duration = 1000
|
option7ScaleAnim.duration = 1000
|
||||||
option7ScaleAnim.startDelay = 1400
|
option7ScaleAnim.startDelay = 1600
|
||||||
option7ScaleAnim.interpolator = LinearInterpolator()
|
option7ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option7ScaleAnim.addListener(onStart = {
|
option7ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption7.visible()
|
binding.layoutOption7.visible()
|
||||||
|
|
@ -112,7 +259,7 @@ class GuideItem3Fragment : BaseFragment<FragmentGuideItem3Binding, GuideViewMode
|
||||||
|
|
||||||
val option8ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption8, scaleXHolder, scaleYHolder)
|
val option8ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption8, scaleXHolder, scaleYHolder)
|
||||||
option8ScaleAnim.duration = 1000
|
option8ScaleAnim.duration = 1000
|
||||||
option8ScaleAnim.startDelay = 1600
|
option8ScaleAnim.startDelay = 1800
|
||||||
option8ScaleAnim.interpolator = LinearInterpolator()
|
option8ScaleAnim.interpolator = LinearInterpolator()
|
||||||
option8ScaleAnim.addListener(onStart = {
|
option8ScaleAnim.addListener(onStart = {
|
||||||
binding.layoutOption8.visible()
|
binding.layoutOption8.visible()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,245 @@
|
||||||
|
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 androidx.core.animation.addListener
|
||||||
|
import com.cheng.blzb.R
|
||||||
|
import com.cheng.blzb.bean.HotWordEntity
|
||||||
|
import com.cheng.blzb.databinding.FragmentGuideItem4Binding
|
||||||
|
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.GuideItem4Adapter
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem4SelectedAdapter
|
||||||
|
import com.example.base.common.RxBus
|
||||||
|
import com.example.base.decoration.GridSpaceItemDecoration
|
||||||
|
import com.example.base.extensions.getColor
|
||||||
|
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 GuideItem4Fragment : BaseFragment<FragmentGuideItem4Binding, GuideViewModel>() {
|
||||||
|
private val mAdapter by lazy { GuideItem4Adapter() }
|
||||||
|
|
||||||
|
private val selectedAdapter by lazy { GuideItem4SelectedAdapter() }
|
||||||
|
|
||||||
|
private val hotWordChildList = mutableListOf<HotWordEntity.Child>()
|
||||||
|
|
||||||
|
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.rvSelectedKeywords.adapter = selectedAdapter
|
||||||
|
binding.rvSelectedKeywords.addItemDecoration(GridSpaceItemDecoration(3, DensityUtils.dp2px(10f), DensityUtils.dp2px(10f)))
|
||||||
|
selectedAdapter.addData(HotWordEntity.Child(id = -1, name = "自定义", isChecked = true))
|
||||||
|
setKeywordCount()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLazyLoad() {
|
||||||
|
super.onLazyLoad()
|
||||||
|
hotWordChildList.addAll(GuideFragment.hotWordList)
|
||||||
|
hotWordChildList.forEach { item ->
|
||||||
|
binding.tabLayout.addView(createTab(item.name))
|
||||||
|
}
|
||||||
|
|
||||||
|
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<HotWordEntity.Child>()
|
||||||
|
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<HotWordEntity.Child>()
|
||||||
|
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) {
|
||||||
|
toast("最多添加5个关键词")
|
||||||
|
return@setOnItemClickListener
|
||||||
|
}
|
||||||
|
|
||||||
|
item.isChecked = !item.isChecked
|
||||||
|
mAdapter.notifyDataSetChanged()
|
||||||
|
if (item.isChecked) {
|
||||||
|
selectedAdapter.addData(item)
|
||||||
|
} else {
|
||||||
|
selectedAdapter.remove(item)
|
||||||
|
}
|
||||||
|
setKeywordCount()
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedAdapter.setOnItemClickListener { _, _, i ->
|
||||||
|
val item = selectedAdapter.getItem(i)
|
||||||
|
if (item.id == -1) {
|
||||||
|
if (selectedAdapter.data.size == 6) {
|
||||||
|
toast("最多添加5个关键词")
|
||||||
|
return@setOnItemClickListener
|
||||||
|
}
|
||||||
|
val f = AddKeywordDialog.newInstance()
|
||||||
|
f.setOnBackListener {
|
||||||
|
selectedAdapter.addData(HotWordEntity.Child(name = it, isChecked = true))
|
||||||
|
setKeywordCount()
|
||||||
|
}
|
||||||
|
f.show(childFragmentManager, "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
selectedAdapter.setOnItemChildClickListener { _, view, i ->
|
||||||
|
val item = selectedAdapter.getItem(i)
|
||||||
|
if (!canClick || item.id == -1) return@setOnItemChildClickListener
|
||||||
|
if (view.id == R.id.iv_delete) {
|
||||||
|
selectedAdapter.remove(item)
|
||||||
|
item.isChecked = false
|
||||||
|
mAdapter.notifyDataSetChanged()
|
||||||
|
setKeywordCount()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun initObserve() {
|
||||||
|
super.initObserve()
|
||||||
|
mViewModel.totalLiveData.observe(this) {
|
||||||
|
GuideFragment.totalInfo = it
|
||||||
|
RxBus.defaultInstance.post(GuideEvent(4))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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()
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
keyword1TransAnim.duration = 1000
|
||||||
|
keyword1TransAnim.startDelay = 200
|
||||||
|
keyword1TransAnim.addListener(onStart = {
|
||||||
|
binding.layoutKeywords.visible()
|
||||||
|
})
|
||||||
|
|
||||||
|
val keyword2TransAnim = ObjectAnimator.ofFloat(binding.layoutSelectedKeywords, "translationY", ScreenUtils.getScreenWidth().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)
|
||||||
|
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
|
||||||
|
titleTransAnim.startDelay = 200
|
||||||
|
descTransAnim.addListener(onStart = {
|
||||||
|
binding.ivDesc.visible()
|
||||||
|
})
|
||||||
|
|
||||||
|
val btnTransAnim = ObjectAnimator.ofFloat(binding.ivBtn, "translationY", DensityUtils.dp2px(100f).toFloat(), 0f)
|
||||||
|
btnTransAnim.duration = 1000
|
||||||
|
btnTransAnim.startDelay = 800
|
||||||
|
btnTransAnim.interpolator = LinearInterpolator()
|
||||||
|
btnTransAnim.addListener(onStart = {
|
||||||
|
binding.ivBtn.visible()
|
||||||
|
}, onEnd = {
|
||||||
|
canClick = true
|
||||||
|
})
|
||||||
|
|
||||||
|
val animSet = AnimatorSet()
|
||||||
|
animSet.playTogether(
|
||||||
|
keyword1TransAnim,
|
||||||
|
keyword2TransAnim,
|
||||||
|
titleTransAnim,
|
||||||
|
descTransAnim,
|
||||||
|
btnTransAnim
|
||||||
|
)
|
||||||
|
animSet.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,242 @@
|
||||||
|
package com.cheng.blzb.ui.fragment.guide.item
|
||||||
|
|
||||||
|
import android.animation.AnimatorSet
|
||||||
|
import android.animation.ObjectAnimator
|
||||||
|
import android.animation.ValueAnimator
|
||||||
|
import android.view.animation.AccelerateDecelerateInterpolator
|
||||||
|
import android.view.animation.LinearInterpolator
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
import androidx.core.animation.addListener
|
||||||
|
import androidx.core.view.isVisible
|
||||||
|
import com.cheng.blzb.bean.AreaEntity
|
||||||
|
import com.cheng.blzb.bean.GuideTotalBidEntity
|
||||||
|
import com.cheng.blzb.bean.HotWordEntity
|
||||||
|
import com.cheng.blzb.common.Constants
|
||||||
|
import com.cheng.blzb.databinding.FragmentGuideItem5Binding
|
||||||
|
import com.cheng.blzb.ui.activity.PublicActivity
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.GuideFragment
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem5CityAdapter
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem5IndustryAdapter
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.vip.GuideVipFragment
|
||||||
|
import com.example.base.extensions.visible
|
||||||
|
import com.example.base.ui.BaseFragment
|
||||||
|
import com.example.base.utils.DensityUtils
|
||||||
|
import com.google.gson.Gson
|
||||||
|
import com.yy.mobile.rollingtextview.CharOrder
|
||||||
|
import com.yy.mobile.rollingtextview.strategy.Strategy
|
||||||
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
|
import io.reactivex.rxjava3.core.Observable
|
||||||
|
import io.reactivex.rxjava3.disposables.Disposable
|
||||||
|
import org.libpag.PAGFile
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
|
class GuideItem5Fragment : BaseFragment<FragmentGuideItem5Binding, GuideViewModel>() {
|
||||||
|
private val cityAdapter by lazy { GuideItem5CityAdapter(requireContext(), cityList) }
|
||||||
|
|
||||||
|
private val industryAdapter by lazy { GuideItem5IndustryAdapter(requireContext(), hotWordChildList) }
|
||||||
|
|
||||||
|
private val hotWordChildList = mutableListOf<HotWordEntity.Child>()
|
||||||
|
private val cityList = mutableListOf<AreaEntity>()
|
||||||
|
|
||||||
|
private var totalInfo: GuideTotalBidEntity? = null
|
||||||
|
|
||||||
|
private var industryTask: Disposable? = null
|
||||||
|
|
||||||
|
override fun initView() {
|
||||||
|
super.initView()
|
||||||
|
binding.tvBidCount.typeface = Constants.ysbth
|
||||||
|
binding.tvUnit.typeface = Constants.ysbth
|
||||||
|
|
||||||
|
binding.rvIndustry.adapter = industryAdapter
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLazyLoad() {
|
||||||
|
super.onLazyLoad()
|
||||||
|
totalInfo = GuideFragment.totalInfo
|
||||||
|
|
||||||
|
cityList.addAll(GuideFragment.cityList)
|
||||||
|
binding.viewFlipper.adapter = cityAdapter
|
||||||
|
|
||||||
|
hotWordChildList.addAll(GuideFragment.hotWordList)
|
||||||
|
industryAdapter.notifyDataSetChanged()
|
||||||
|
startIndustryTask()
|
||||||
|
|
||||||
|
startAnim()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startAnim() {
|
||||||
|
val bgTransAnim = ObjectAnimator.ofFloat(binding.ivBg, "translationY", 0f, -DensityUtils.dp2px(75f).toFloat())
|
||||||
|
bgTransAnim.duration = 2000
|
||||||
|
bgTransAnim.startDelay = 200
|
||||||
|
|
||||||
|
val star1TranAnim = ObjectAnimator.ofFloat(binding.ivStar1, "translationY", DensityUtils.dp2px(125f).toFloat(), 0f)
|
||||||
|
star1TranAnim.duration = 2000
|
||||||
|
star1TranAnim.startDelay = 200
|
||||||
|
|
||||||
|
val star2TranAnim = ObjectAnimator.ofFloat(binding.ivStar2, "translationY", 0f, -DensityUtils.dp2px(125f).toFloat())
|
||||||
|
star2TranAnim.duration = 2000
|
||||||
|
star2TranAnim.startDelay = 200
|
||||||
|
|
||||||
|
val earthTransAnim = ObjectAnimator.ofFloat(binding.ivEarth, "translationY", 0f, -DensityUtils.dp2px(150f).toFloat())
|
||||||
|
earthTransAnim.duration = 2000
|
||||||
|
earthTransAnim.startDelay = 200
|
||||||
|
|
||||||
|
val earthRotateAnim = ObjectAnimator.ofFloat(binding.ivEarth, "rotation", 0f, 360f)
|
||||||
|
earthRotateAnim.duration = 100000
|
||||||
|
earthRotateAnim.startDelay = 2400
|
||||||
|
earthRotateAnim.repeatCount = -1
|
||||||
|
earthRotateAnim.interpolator = LinearInterpolator()
|
||||||
|
|
||||||
|
val infoAlphaAnim = ObjectAnimator.ofFloat(binding.layoutInfo, "alpha", 0f, 1f)
|
||||||
|
infoAlphaAnim.duration = 1000
|
||||||
|
infoAlphaAnim.startDelay = 2400
|
||||||
|
infoAlphaAnim.addListener(onStart = {
|
||||||
|
binding.layoutInfo.visible()
|
||||||
|
}, onEnd = {
|
||||||
|
startNumAnim()
|
||||||
|
})
|
||||||
|
|
||||||
|
val progressMaskAnim = ValueAnimator.ofFloat(0f, 1f)
|
||||||
|
progressMaskAnim.duration = 1000
|
||||||
|
progressMaskAnim.startDelay = 2400
|
||||||
|
val maskHeight = binding.ivProgressMask.height
|
||||||
|
progressMaskAnim.addUpdateListener { animator ->
|
||||||
|
val value = animator.animatedValue as Float
|
||||||
|
val lp = binding.ivProgressMask.layoutParams as ConstraintLayout.LayoutParams
|
||||||
|
lp.height = (value * maskHeight).toInt()
|
||||||
|
|
||||||
|
binding.ivProgressMask.layoutParams = lp
|
||||||
|
if (!binding.ivProgressMask.isVisible) {
|
||||||
|
binding.ivProgressMask.visible()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
progressMaskAnim.addListener(onEnd = {
|
||||||
|
startProgressAnim()
|
||||||
|
|
||||||
|
val pagFile = PAGFile.Load(requireContext().assets, "effects/guide_bubble.pag")
|
||||||
|
binding.pagView.composition = pagFile
|
||||||
|
binding.pagView.setRepeatCount(0)
|
||||||
|
binding.pagView.play()
|
||||||
|
binding.pagView.visible()
|
||||||
|
})
|
||||||
|
|
||||||
|
val animSet = AnimatorSet()
|
||||||
|
animSet.playTogether(bgTransAnim, star1TranAnim, star2TranAnim, earthTransAnim, earthRotateAnim, infoAlphaAnim, progressMaskAnim)
|
||||||
|
animSet.start()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startNumAnim() {
|
||||||
|
binding.tvBidCount.animationDuration = 2000
|
||||||
|
binding.tvBidCount.charStrategy = Strategy.CarryBitAnimation()
|
||||||
|
binding.tvBidCount.addCharOrder(CharOrder.Number)
|
||||||
|
binding.tvBidCount.animationInterpolator = AccelerateDecelerateInterpolator()
|
||||||
|
binding.tvBidCount.setText("${totalInfo?.bidCount}")
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startProgressAnim() {
|
||||||
|
binding.progressBar.post {
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 1
|
||||||
|
binding.tvProgressStatus.text = "采集引擎启动中...."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 10
|
||||||
|
binding.tvProgressStatus.text = "筛选区域标讯..."
|
||||||
|
}
|
||||||
|
}, 1500)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 20
|
||||||
|
binding.tvProgressStatus.text = "筛选行业标讯..."
|
||||||
|
}
|
||||||
|
}, 2000)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 30
|
||||||
|
binding.tvProgressStatus.text = "关键词标讯标注中..."
|
||||||
|
}
|
||||||
|
}, 2500)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 40
|
||||||
|
binding.tvProgressStatus.text = "筛选最新优质标讯..."
|
||||||
|
}
|
||||||
|
}, 3000)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 50
|
||||||
|
binding.tvProgressStatus.text = "正在整理数据..."
|
||||||
|
}
|
||||||
|
}, 3500)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 60
|
||||||
|
binding.tvProgressStatus.text = "正在整理数据..."
|
||||||
|
}
|
||||||
|
}, 5500)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 70
|
||||||
|
binding.tvProgressStatus.text = "正在整理数据..."
|
||||||
|
}
|
||||||
|
}, 7500)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 80
|
||||||
|
binding.tvProgressStatus.text = "正在整理数据..."
|
||||||
|
}
|
||||||
|
}, 7600)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 90
|
||||||
|
binding.tvProgressStatus.text = "正在整理数据..."
|
||||||
|
}
|
||||||
|
}, 7700)
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
binding.progressBar.progress = 100
|
||||||
|
binding.tvProgressStatus.text = "打开标讯采集报告..."
|
||||||
|
binding.progressBar.postDelayed({
|
||||||
|
if (activity != null) {
|
||||||
|
PublicActivity.start(
|
||||||
|
requireContext(),
|
||||||
|
GuideVipFragment::class.java,
|
||||||
|
Pair("hotWords", Gson().toJson(hotWordChildList)),
|
||||||
|
Pair("total", totalInfo)
|
||||||
|
)
|
||||||
|
requireActivity().finish()
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
}, 8700)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startIndustryTask() {
|
||||||
|
if (industryAdapter.data.isEmpty() || industryTask != null) return
|
||||||
|
industryTask = Observable.interval(300, 9, TimeUnit.MILLISECONDS)
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe {
|
||||||
|
if (activity != null) {
|
||||||
|
binding.rvIndustry.scrollBy(3, 0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun stopIndustryTask() {
|
||||||
|
industryTask?.dispose()
|
||||||
|
industryTask = null
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStart() {
|
||||||
|
super.onStart()
|
||||||
|
startIndustryTask()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onStop() {
|
||||||
|
super.onStop()
|
||||||
|
stopIndustryTask()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,45 @@
|
||||||
|
package com.cheng.blzb.ui.fragment.guide.vip
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint
|
||||||
|
import android.window.OnBackInvokedDispatcher
|
||||||
|
import androidx.activity.addCallback
|
||||||
|
import androidx.core.os.BuildCompat
|
||||||
|
import com.cheng.blzb.databinding.FragmentGuideVipBinding
|
||||||
|
import com.cheng.blzb.ui.activity.MainActivity
|
||||||
|
import com.cheng.blzb.ui.fragment.guide.GuideViewModel
|
||||||
|
import com.example.base.extensions.onClick
|
||||||
|
import com.example.base.ui.BaseFragment
|
||||||
|
import org.jetbrains.anko.startActivity
|
||||||
|
|
||||||
|
class GuideVipFragment: BaseFragment<FragmentGuideVipBinding, GuideViewModel>() {
|
||||||
|
|
||||||
|
override fun initView() {
|
||||||
|
super.initView()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun initData() {
|
||||||
|
super.initData()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun initListener() {
|
||||||
|
super.initListener()
|
||||||
|
setBackPressed()
|
||||||
|
|
||||||
|
binding.ivClose.onClick {
|
||||||
|
requireActivity().startActivity<MainActivity>()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun initObserve() {
|
||||||
|
super.initObserve()
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressLint("UnsafeOptInUsageError")
|
||||||
|
private fun setBackPressed() {
|
||||||
|
if (BuildCompat.isAtLeastT()) {
|
||||||
|
requireActivity().onBackInvokedDispatcher.registerOnBackInvokedCallback(OnBackInvokedDispatcher.PRIORITY_DEFAULT) {}
|
||||||
|
} else {
|
||||||
|
requireActivity().onBackPressedDispatcher.addCallback(this) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,79 @@
|
||||||
|
package com.cheng.blzb.ui.fragment.guide.vip
|
||||||
|
|
||||||
|
import androidx.lifecycle.MutableLiveData
|
||||||
|
import com.cheng.blzb.bean.AreaEntity
|
||||||
|
import com.cheng.blzb.bean.GuideTotalBidEntity
|
||||||
|
import com.cheng.blzb.bean.GuideUpdateEntity
|
||||||
|
import com.cheng.blzb.bean.HotWordEntity
|
||||||
|
import com.cheng.blzb.net.ApiFactory
|
||||||
|
import com.example.base.extensions.toast
|
||||||
|
import com.example.base.utils.L
|
||||||
|
import com.example.base.viewmodel.BaseViewModel
|
||||||
|
|
||||||
|
class GuideVipViewModel: BaseViewModel() {
|
||||||
|
val hotWordLiveData = MutableLiveData<List<HotWordEntity>>()
|
||||||
|
val cityLiveData = MutableLiveData<List<AreaEntity>>()
|
||||||
|
val userCityLiveData = MutableLiveData<AreaEntity>()
|
||||||
|
val totalLiveData = MutableLiveData<GuideTotalBidEntity>()
|
||||||
|
val updateLiveData = MutableLiveData<List<GuideUpdateEntity>>()
|
||||||
|
|
||||||
|
fun getHotWordList() {
|
||||||
|
launchOnUiTryCatch({
|
||||||
|
val response = ApiFactory.apiService.getHotWordList()
|
||||||
|
if (response.status) {
|
||||||
|
hotWordLiveData.postValue(response.data)
|
||||||
|
} else toast(response.message, true)
|
||||||
|
}, {
|
||||||
|
setError(it)
|
||||||
|
L.d(it)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getCityList() {
|
||||||
|
launchOnUiTryCatch({
|
||||||
|
val response = ApiFactory.apiService.getAreaList()
|
||||||
|
if (response.status) {
|
||||||
|
cityLiveData.postValue(response.data)
|
||||||
|
} else toast(response.message, true)
|
||||||
|
}, {
|
||||||
|
setError(it)
|
||||||
|
L.d(it)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getUserCity() {
|
||||||
|
launchOnUiTryCatch({
|
||||||
|
val response = ApiFactory.apiService.getUserCity()
|
||||||
|
if (response.status) {
|
||||||
|
userCityLiveData.postValue(response.data)
|
||||||
|
} else toast(response.message, true)
|
||||||
|
}, {
|
||||||
|
setError(it)
|
||||||
|
L.d(it)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getTotalBidInfo(keywords: String, cityIds: String, kindNum: String) {
|
||||||
|
launchOnUiTryCatch({
|
||||||
|
val response = ApiFactory.apiService.getTotalBidInfo(keywords, cityIds, kindNum)
|
||||||
|
if (response.status) {
|
||||||
|
totalLiveData.postValue(response.data)
|
||||||
|
} else toast(response.message, true)
|
||||||
|
}, {
|
||||||
|
setError(it)
|
||||||
|
L.d(it)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getUpdateNum() {
|
||||||
|
launchOnUiTryCatch({
|
||||||
|
val response = ApiFactory.apiService.getUpdateNum("8")
|
||||||
|
if (response.status) {
|
||||||
|
updateLiveData.postValue(response.data)
|
||||||
|
} else toast(response.message, true)
|
||||||
|
}, {
|
||||||
|
setError(it)
|
||||||
|
L.d(it)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:duration="500"
|
||||||
|
android:propertyName="translationY"
|
||||||
|
android:valueFrom="150"
|
||||||
|
android:valueTo="0" />
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:duration="500"
|
||||||
|
android:propertyName="translationY"
|
||||||
|
android:valueFrom="0"
|
||||||
|
android:valueTo="-150"/>
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item android:id="@android:id/background">
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
<size android:height="@dimen/dp_10" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
<item android:id="@android:id/secondaryProgress">
|
||||||
|
<clip>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/white" />
|
||||||
|
<size android:height="@dimen/dp_10" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</clip>
|
||||||
|
</item>
|
||||||
|
<item android:id="@android:id/progress">
|
||||||
|
<clip>
|
||||||
|
<shape>
|
||||||
|
<solid android:color="@color/color_125ffe" />
|
||||||
|
<size android:height="@dimen/dp_10" />
|
||||||
|
<corners android:radius="@dimen/dp_10" />
|
||||||
|
</shape>
|
||||||
|
</clip>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<corners android:radius="@dimen/dp_16" />
|
||||||
|
<solid android:color="#F5F8FF" />
|
||||||
|
</shape>
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<corners android:radius="@dimen/dp_4" />
|
||||||
|
<solid android:color="#F5F8FF" />
|
||||||
|
</shape>
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<corners
|
||||||
|
android:topLeftRadius="@dimen/dp_16"
|
||||||
|
android:topRightRadius="@dimen/dp_16" />
|
||||||
|
<solid android:color="#F5F8FF" />
|
||||||
|
</shape>
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<gradient
|
|
||||||
android:angle="270"
|
|
||||||
android:endColor="#E5EDFF"
|
|
||||||
android:startColor="#6694FE" />
|
|
||||||
</shape>
|
|
||||||
|
|
@ -0,0 +1,113 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_close"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/dp_16"
|
||||||
|
android:src="@mipmap/ic_close_dialog2"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/layout_content"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_18"
|
||||||
|
android:background="@mipmap/ic_add_keyword_dialog_bg"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/iv_close">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_16"
|
||||||
|
android:layout_marginTop="@dimen/dp_44"
|
||||||
|
android:text="自定义关键词"
|
||||||
|
android:textColor="@color/color_222222"
|
||||||
|
android:textSize="@dimen/sp_18"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_desc"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_4"
|
||||||
|
android:text="最多5个关键词~"
|
||||||
|
android:textColor="@color/color_222222"
|
||||||
|
android:textSize="@dimen/sp_12"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/tv_title"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_title" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/layout_keyword"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_52"
|
||||||
|
android:layout_marginStart="@dimen/dp_16"
|
||||||
|
android:layout_marginTop="@dimen/dp_26"
|
||||||
|
android:layout_marginEnd="@dimen/dp_16"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_desc">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatEditText
|
||||||
|
android:id="@+id/et_keyword"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@drawable/shape_white_line_cor8"
|
||||||
|
android:hint="请输入您想要订阅的关键词"
|
||||||
|
android:maxLength="10"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:paddingStart="@dimen/dp_14"
|
||||||
|
android:paddingEnd="@dimen/dp_14"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textColor="@color/color_222222"
|
||||||
|
android:textColorHint="@color/color_bcbcbc"
|
||||||
|
android:textSize="@dimen/sp_15"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_clear_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/dp_12"
|
||||||
|
android:src="@mipmap/ic_clear_text"
|
||||||
|
android:visibility="gone"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/et_keyword"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/et_keyword"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/et_keyword" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/layout_bottom"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_46"
|
||||||
|
android:paddingStart="@dimen/dp_16"
|
||||||
|
android:paddingTop="@dimen/dp_9"
|
||||||
|
android:paddingEnd="@dimen/dp_16"
|
||||||
|
android:paddingBottom="@dimen/dp_9"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/layout_keyword">
|
||||||
|
|
||||||
|
<com.cheng.blzb.widget.CommonShapeView
|
||||||
|
android:id="@+id/btn_next"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_46"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
|
android:text="确定"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_16"
|
||||||
|
app:csb_cornerRadius="@dimen/dp_10"
|
||||||
|
app:csb_fillColor="@color/color_125ffe"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:tool="http://schemas.android.com/tools"
|
xmlns:tool="http://schemas.android.com/tools"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@drawable/shape_guide_item3_bg">
|
android:background="@mipmap/ic_guide_bg">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/iv_bg"
|
android:id="@+id/iv_bg"
|
||||||
|
|
@ -59,17 +59,14 @@
|
||||||
android:id="@+id/layout_option1"
|
android:id="@+id/layout_option1"
|
||||||
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_25"
|
android:layout_marginBottom="@dimen/dp_60"
|
||||||
android:layout_marginBottom="@dimen/dp_100"
|
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toTopOf="@id/layout_option3"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintStart_toStartOf="@id/iv_desc"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon1"
|
android:id="@+id/iv_icon1"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon1"
|
android:src="@mipmap/ic_guide_item3_icon1"
|
||||||
|
|
@ -83,8 +80,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon1"
|
app:layout_constraintStart_toStartOf="@id/iv_icon1"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon1" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon1" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name1"
|
android:id="@+id/tv_name1"
|
||||||
|
|
@ -94,26 +91,27 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="通讯媒体"
|
android:text="工程建筑"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon1" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon1" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option2"
|
android:id="@+id/layout_option2"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/dp_60"
|
android:layout_marginStart="@dimen/dp_20"
|
||||||
|
android:layout_marginTop="@dimen/dp_24"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintBottom_toTopOf="@id/layout_option1"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="@id/iv_desc"
|
app:layout_constraintTop_toBottomOf="@id/layout_option1"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon2"
|
android:id="@+id/iv_icon2"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon2"
|
android:src="@mipmap/ic_guide_item3_icon2"
|
||||||
|
|
@ -127,8 +125,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon2"
|
app:layout_constraintStart_toStartOf="@id/iv_icon2"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon2" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon2" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name2"
|
android:id="@+id/tv_name2"
|
||||||
|
|
@ -138,27 +136,29 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="工程建筑"
|
android:text="工业制造"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon2" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon2" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option3"
|
android:id="@+id/layout_option3"
|
||||||
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_20"
|
android:layout_marginStart="@dimen/dp_25"
|
||||||
android:layout_marginTop="@dimen/dp_24"
|
android:layout_marginBottom="@dimen/dp_100"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/layout_option2"
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon3"
|
android:id="@+id/iv_icon3"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon3"
|
android:src="@mipmap/ic_guide_item3_icon3"
|
||||||
|
|
@ -172,8 +172,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon3"
|
app:layout_constraintStart_toStartOf="@id/iv_icon3"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon3" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon3" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name3"
|
android:id="@+id/tv_name3"
|
||||||
|
|
@ -183,27 +183,27 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="工业制造"
|
android:text="通讯媒体"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon3" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon3" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option4"
|
android:id="@+id/layout_option4"
|
||||||
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_35"
|
android:layout_marginEnd="@dimen/dp_16"
|
||||||
android:layout_marginTop="@dimen/dp_28"
|
android:layout_marginBottom="@dimen/dp_37"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintBottom_toTopOf="@id/layout_option8"
|
||||||
app:layout_constraintTop_toBottomOf="@id/layout_option3"
|
app:layout_constraintEnd_toEndOf="@id/layout_option8"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon4"
|
android:id="@+id/iv_icon4"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon4"
|
android:src="@mipmap/ic_guide_item3_icon4"
|
||||||
|
|
@ -217,8 +217,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon4"
|
app:layout_constraintStart_toStartOf="@id/iv_icon4"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon4" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon4" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name4"
|
android:id="@+id/tv_name4"
|
||||||
|
|
@ -228,27 +228,28 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="科学教育"
|
android:text="商业环卫"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon4" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon4" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option5"
|
android:id="@+id/layout_option5"
|
||||||
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_44"
|
android:layout_marginStart="@dimen/dp_35"
|
||||||
android:layout_marginTop="-30dp"
|
android:layout_marginTop="@dimen/dp_28"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintStart_toEndOf="@id/layout_option4"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/layout_option4"
|
app:layout_constraintTop_toBottomOf="@id/layout_option2"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon5"
|
android:id="@+id/iv_icon5"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon5"
|
android:src="@mipmap/ic_guide_item3_icon5"
|
||||||
|
|
@ -262,8 +263,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon5"
|
app:layout_constraintStart_toStartOf="@id/iv_icon5"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon5" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon5" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name5"
|
android:id="@+id/tv_name5"
|
||||||
|
|
@ -273,27 +274,27 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="交通运输"
|
android:text="科学教育"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon5" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon5" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option6"
|
android:id="@+id/layout_option6"
|
||||||
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_32"
|
android:layout_marginStart="@dimen/dp_44"
|
||||||
android:layout_marginEnd="@dimen/dp_25"
|
android:layout_marginTop="-30dp"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintStart_toEndOf="@id/layout_option5"
|
||||||
app:layout_constraintTop_toTopOf="@id/layout_option5"
|
app:layout_constraintTop_toBottomOf="@id/layout_option5"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon6"
|
android:id="@+id/iv_icon6"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon6"
|
android:src="@mipmap/ic_guide_item3_icon6"
|
||||||
|
|
@ -307,8 +308,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon6"
|
app:layout_constraintStart_toStartOf="@id/iv_icon6"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon6" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon6" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name6"
|
android:id="@+id/tv_name6"
|
||||||
|
|
@ -318,27 +319,27 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="其他"
|
android:text="交通运输"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon6" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon6" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option7"
|
android:id="@+id/layout_option7"
|
||||||
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_25"
|
||||||
android:layout_marginBottom="@dimen/dp_37"
|
android:layout_marginBottom="@dimen/dp_3"
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintBottom_toTopOf="@id/layout_option6"
|
app:layout_constraintBottom_toTopOf="@id/layout_option3"
|
||||||
app:layout_constraintEnd_toEndOf="@id/layout_option6"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon7"
|
android:id="@+id/iv_icon7"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon7"
|
android:src="@mipmap/ic_guide_item3_icon7"
|
||||||
|
|
@ -352,8 +353,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon7"
|
app:layout_constraintStart_toStartOf="@id/iv_icon7"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon7" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon7" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name7"
|
android:id="@+id/tv_name7"
|
||||||
|
|
@ -363,27 +364,27 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="商业环卫"
|
android:text="能源产业"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon7" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon7" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/layout_option8"
|
android:id="@+id/layout_option8"
|
||||||
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_32"
|
||||||
android:layout_marginEnd="@dimen/dp_25"
|
android:layout_marginEnd="@dimen/dp_25"
|
||||||
android:layout_marginBottom="@dimen/dp_3"
|
|
||||||
android:visibility="invisible"
|
android:visibility="invisible"
|
||||||
app:layout_constraintBottom_toTopOf="@id/layout_option1"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/layout_option6"
|
||||||
tool:visibility="visible">
|
tool:visibility="visible">
|
||||||
|
|
||||||
<androidx.appcompat.widget.AppCompatImageView
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
android:id="@+id/ic_icon8"
|
android:id="@+id/iv_icon8"
|
||||||
android:layout_width="@dimen/dp_60"
|
android:layout_width="@dimen/dp_60"
|
||||||
android:layout_height="@dimen/dp_60"
|
android:layout_height="@dimen/dp_60"
|
||||||
android:src="@mipmap/ic_guide_item3_icon8"
|
android:src="@mipmap/ic_guide_item3_icon8"
|
||||||
|
|
@ -397,8 +398,8 @@
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:src="@mipmap/ic_guide_item3_checked"
|
android:src="@mipmap/ic_guide_item3_checked"
|
||||||
android:visibility="gone"
|
android:visibility="gone"
|
||||||
app:layout_constraintStart_toStartOf="@id/ic_icon8"
|
app:layout_constraintStart_toStartOf="@id/iv_icon8"
|
||||||
app:layout_constraintTop_toTopOf="@id/ic_icon8" />
|
app:layout_constraintTop_toTopOf="@id/iv_icon8" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/tv_name8"
|
android:id="@+id/tv_name8"
|
||||||
|
|
@ -408,12 +409,13 @@
|
||||||
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
android:drawableStart="@mipmap/ic_guide_item3_star_default"
|
||||||
android:drawablePadding="@dimen/dp_2"
|
android:drawablePadding="@dimen/dp_2"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="能源产业"
|
android:text="其他"
|
||||||
android:textColor="@color/color_222222"
|
android:textColor="@color/color_222222"
|
||||||
android:textSize="@dimen/sp_14"
|
android:textSize="@dimen/sp_14"
|
||||||
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/ic_icon8" />
|
app:layout_constraintTop_toBottomOf="@id/iv_icon8" />
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -0,0 +1,172 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tool="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@mipmap/ic_guide_bg">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_42"
|
||||||
|
android:src="@mipmap/ic_guide_item4_title"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tool:visibility="visible" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_desc"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
|
android:src="@mipmap/ic_guide_item4_desc"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/iv_title"
|
||||||
|
tool:visibility="visible" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_btn"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/dp_30"
|
||||||
|
android:src="@mipmap/ic_guide_item3_btn"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
tool:visibility="visible" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/layout_keywords"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_16"
|
||||||
|
android:layout_marginTop="@dimen/dp_28"
|
||||||
|
android:layout_marginEnd="@dimen/dp_16"
|
||||||
|
android:background="@drawable/shape_f5f8ff_cor16"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/iv_desc"
|
||||||
|
tool:visibility="visible">
|
||||||
|
|
||||||
|
<com.angcyo.tablayout.DslTabLayout
|
||||||
|
android:id="@+id/tabLayout"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_38"
|
||||||
|
android:background="@drawable/shape_white_top_cor16"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:tab_deselect_color="#929DB6"
|
||||||
|
app:tab_enable_gradient_text_size="false"
|
||||||
|
app:tab_enable_text_bold="true"
|
||||||
|
app:tab_item_auto_equ_width="false"
|
||||||
|
app:tab_select_color="@color/color_125ffe"
|
||||||
|
app:tab_text_max_size="@dimen/sp_14"
|
||||||
|
app:tab_text_min_size="@dimen/sp_14" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/layout_base_info"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_11"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tabLayout">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_12"
|
||||||
|
android:text="行业交易规模"
|
||||||
|
android:textColor="#3B3F47"
|
||||||
|
android:textSize="@dimen/sp_10" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_amount"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_10"
|
||||||
|
android:drawableStart="@mipmap/ic_guide_fire"
|
||||||
|
android:drawablePadding="@dimen/dp_2"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="877.78亿"
|
||||||
|
android:textColor="@color/color_ff493c"
|
||||||
|
android:textSize="@dimen/sp_10" />
|
||||||
|
|
||||||
|
<Space
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_refresh"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/dp_12"
|
||||||
|
android:src="@mipmap/ic_refresh_guide_keywords" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/mRecyclerView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="@dimen/dp_14"
|
||||||
|
android:background="@drawable/shape_white_cor14"
|
||||||
|
android:overScrollMode="never"
|
||||||
|
android:padding="@dimen/dp_14"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/layout_base_info"
|
||||||
|
app:spanCount="3"
|
||||||
|
tool:itemCount="18"
|
||||||
|
tool:listitem="@layout/listitem_guide_item4" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/layout_selected_keywords"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_16"
|
||||||
|
android:layout_marginTop="@dimen/dp_12"
|
||||||
|
android:layout_marginEnd="@dimen/dp_16"
|
||||||
|
android:background="@drawable/shape_f5f8ff_cor16"
|
||||||
|
android:padding="@dimen/dp_14"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/layout_keywords"
|
||||||
|
tool:visibility="visible">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_keywords_count"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="已添加关键词(5/5)"
|
||||||
|
android:textColor="@color/color_666666"
|
||||||
|
android:textSize="@dimen/sp_14"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/rv_selected_keywords"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_10"
|
||||||
|
android:background="@drawable/shape_white_cor14"
|
||||||
|
android:paddingStart="@dimen/dp_12"
|
||||||
|
android:paddingTop="@dimen/dp_10"
|
||||||
|
android:paddingEnd="@dimen/dp_12"
|
||||||
|
android:paddingBottom="@dimen/dp_10"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_keywords_count"
|
||||||
|
app:spanCount="3"
|
||||||
|
tool:itemCount="5"
|
||||||
|
tool:listitem="@layout/listitem_guide4_selected_keyword" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -0,0 +1,176 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_bg"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:scaleType="centerCrop"
|
||||||
|
android:scaleY="1.5"
|
||||||
|
android:src="@mipmap/ic_guide_item5_bg"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_star1"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:src="@mipmap/ic_guide_item5_star"
|
||||||
|
android:translationY="125dp"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_star2"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:rotation="180"
|
||||||
|
android:src="@mipmap/ic_guide_item5_star"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_earth"
|
||||||
|
android:layout_width="586dp"
|
||||||
|
android:layout_height="567dp"
|
||||||
|
android:src="@mipmap/ic_guide_item5_earth"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="parent" />
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@mipmap/ic_guide_item5_mask" />
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/layout_info"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginBottom="@dimen/dp_65"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintBottom_toTopOf="@id/progressBar"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
tools:visibility="visible">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@+id/layout_city"
|
||||||
|
android:layout_width="@dimen/dp_180"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_35"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_search"
|
||||||
|
android:layout_width="@dimen/dp_40"
|
||||||
|
android:layout_height="@dimen/dp_40"
|
||||||
|
android:src="@mipmap/ic_guide_item5_search"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/viewFlipper"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@id/viewFlipper" />
|
||||||
|
|
||||||
|
<AdapterViewFlipper
|
||||||
|
android:id="@+id/viewFlipper"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_50"
|
||||||
|
android:autoStart="true"
|
||||||
|
android:flipInterval="500"
|
||||||
|
android:inAnimation="@animator/anim_vf_in"
|
||||||
|
android:loopViews="true"
|
||||||
|
android:outAnimation="@animator/anim_vf_out"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/iv_search"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<com.yy.mobile.rollingtextview.RollingTextView
|
||||||
|
android:id="@+id/tv_bid_count"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center"
|
||||||
|
android:text="00000"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="44sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/layout_city"
|
||||||
|
app:layout_constraintWidth_min="@dimen/dp_140" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_unit"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="@dimen/dp_5"
|
||||||
|
android:layout_marginBottom="@dimen/dp_10"
|
||||||
|
android:text="条"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_16"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@id/tv_bid_count"
|
||||||
|
app:layout_constraintStart_toEndOf="@id/tv_bid_count" />
|
||||||
|
|
||||||
|
<androidx.recyclerview.widget.RecyclerView
|
||||||
|
android:id="@+id/rv_industry"
|
||||||
|
android:layout_width="@dimen/dp_100"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/tv_bid_count"
|
||||||
|
tools:listitem="@layout/listitem_guide_item5_industry" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
<ProgressBar
|
||||||
|
android:id="@+id/progressBar"
|
||||||
|
style="@style/Widget.AppCompat.ProgressBar.Horizontal"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="@dimen/dp_10"
|
||||||
|
android:layout_marginStart="@dimen/dp_38"
|
||||||
|
android:layout_marginEnd="@dimen/dp_38"
|
||||||
|
android:layout_marginBottom="@dimen/dp_60"
|
||||||
|
android:elevation="@dimen/dp_1"
|
||||||
|
android:progressDrawable="@drawable/layer_guide_item5_progress"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_progress_mask"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="-5dp"
|
||||||
|
android:scaleType="fitXY"
|
||||||
|
android:src="@mipmap/ic_guide_item5_progress_start"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:layout_constraintEnd_toEndOf="@id/progressBar"
|
||||||
|
app:layout_constraintStart_toStartOf="@id/progressBar"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/progressBar"
|
||||||
|
tools:visibility="visible" />
|
||||||
|
|
||||||
|
<org.libpag.PAGImageView
|
||||||
|
android:id="@+id/pagView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:visibility="invisible" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_progress_status"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="@dimen/dp_14"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
|
android:text="采集引擎启动中...."
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_14"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@id/progressBar" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<androidx.core.widget.NestedScrollView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:fillViewport="true">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@mipmap/ic_guide_vip_bg">
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
</androidx.core.widget.NestedScrollView>
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_close"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
android:layout_marginEnd="@dimen/dp_16"
|
||||||
|
android:layout_marginTop="@dimen/dp_60"
|
||||||
|
android:src="@mipmap/ic_guide_vip_close" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/shape_f5f8ff_cor4">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_name"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/dp_30"
|
||||||
|
android:layout_marginStart="@dimen/dp_10"
|
||||||
|
android:layout_marginEnd="@dimen/dp_2"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="数字电路"
|
||||||
|
android:scrollHorizontally="true"
|
||||||
|
android:marqueeRepeatLimit="marquee_forever"
|
||||||
|
android:focusable="true"
|
||||||
|
android:focusableInTouchMode="true"
|
||||||
|
android:textColor="@color/color_125ffe"
|
||||||
|
android:textSize="@dimen/sp_13"
|
||||||
|
app:csb_drawablePosition="right"
|
||||||
|
app:csb_fillColor="#F5F8FF"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/iv_delete"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_delete"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/dp_8"
|
||||||
|
android:src="@mipmap/ic_guide_item4_delete"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/shape_f5f8ff_cor4">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_name"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="@dimen/dp_30"
|
||||||
|
android:layout_marginStart="@dimen/dp_10"
|
||||||
|
android:layout_marginEnd="@dimen/dp_2"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:text="数字电路"
|
||||||
|
android:textColor="@color/color_1a1a1a"
|
||||||
|
android:textSize="@dimen/sp_13"
|
||||||
|
app:csb_drawablePosition="right"
|
||||||
|
app:csb_fillColor="#F5F8FF"
|
||||||
|
app:layout_constraintEnd_toStartOf="@id/iv_add"
|
||||||
|
app:layout_constraintStart_toStartOf="parent" />
|
||||||
|
|
||||||
|
<androidx.appcompat.widget.AppCompatImageView
|
||||||
|
android:id="@+id/iv_add"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginEnd="@dimen/dp_8"
|
||||||
|
android:src="@mipmap/ic_guide_item4_checked"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_name"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="重庆市"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:textStyle="bold"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="44sp" />
|
||||||
|
</FrameLayout>
|
||||||
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/tv_name"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="能源电力"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="@dimen/sp_26"
|
||||||
|
android:textStyle="bold" />
|
||||||
|
</LinearLayout>
|
||||||
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 618 B |
|
Before Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 508 KiB |
|
Before Width: | Height: | Size: 6.1 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 696 B |
|
Before Width: | Height: | Size: 64 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 68 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
Before Width: | Height: | Size: 80 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 69 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 598 B |
|
Before Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 472 B |
|
Before Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 372 B |
|
After Width: | Height: | Size: 198 B |
|
After Width: | Height: | Size: 530 B |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 45 KiB |
|
After Width: | Height: | Size: 392 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 23 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 752 B |
|
|
@ -91,5 +91,6 @@
|
||||||
<dimen name="dp_68">68dp</dimen>
|
<dimen name="dp_68">68dp</dimen>
|
||||||
<dimen name="dp_66">66dp</dimen>
|
<dimen name="dp_66">66dp</dimen>
|
||||||
<dimen name="dp_190">190dp</dimen>
|
<dimen name="dp_190">190dp</dimen>
|
||||||
|
<dimen name="dp_180">180dp</dimen>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||