diff --git a/app/src/main/java/com/cheng/blzb/bean/AreaEntity.kt b/app/src/main/java/com/cheng/blzb/bean/AreaEntity.kt index debcc13..e72186c 100644 --- a/app/src/main/java/com/cheng/blzb/bean/AreaEntity.kt +++ b/app/src/main/java/com/cheng/blzb/bean/AreaEntity.kt @@ -9,6 +9,7 @@ class AreaEntity( val name: String = "", val amount: String = "", var children: MutableList = mutableListOf(), + var isChecked: Boolean = false ) : Serializable { diff --git a/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt b/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt index bb83d24..f57cdca 100644 --- a/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt +++ b/app/src/main/java/com/cheng/blzb/ui/activity/LauncherActivity.kt @@ -95,8 +95,7 @@ class LauncherActivity : BaseActivity() { if (UserConfigManager.isFirstUseApp()) { UserConfigManager.saveFirstUseApp(false) if (UserConfigManager.getGuideEnable()) { -// startActivity() - LoginActivity.start(this@LauncherActivity) + startActivity() } else { if (!LoginManager.isLogin()) { if (TextUtils.isEmpty(LoginManager.getLastLoginType())) { @@ -117,8 +116,8 @@ class LauncherActivity : BaseActivity() { LoginActivity.start(this@LauncherActivity) } } else { - startActivity() -// startActivity() +// startActivity() + startActivity() } finish() } diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt index 714d407..69b5ba8 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/GuideFragment.kt @@ -19,6 +19,7 @@ import com.cheng.blzb.manager.UserConfigManager import com.cheng.blzb.ui.base.BasePageAdapter 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.GuideItem3Fragment import com.cheng.blzb.ui.fragment.mine.vip.VipFragment import com.example.base.common.RxBus import org.jetbrains.anko.startActivity @@ -42,7 +43,7 @@ class GuideFragment :BaseFragment() private fun initFragment() { fragmentList.add(GuideItem1Fragment()) fragmentList.add(GuideItem2Fragment()) -// fragmentList.add(GuideItem3Fragment()) + fragmentList.add(GuideItem3Fragment()) // fragmentList.add(GuideItem4Fragment()) // fragmentList.add(GuideItem5Fragment()) } diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2AreaAdapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Area1Adapter.kt similarity index 88% rename from app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2AreaAdapter.kt rename to app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Area1Adapter.kt index f1d940f..2c8ce5f 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2AreaAdapter.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Area1Adapter.kt @@ -9,7 +9,7 @@ import com.cheng.blzb.R import com.cheng.blzb.bean.AreaEntity import com.example.base.extensions.getColor -class GuideItem2AreaAdapter: BaseQuickAdapter(R.layout.listitem_guide_area) { +class GuideItem2Area1Adapter: BaseQuickAdapter(R.layout.listitem_guide_area1) { override fun convert(holder: BaseViewHolder, item: AreaEntity) { holder.setText(R.id.tv_name, item.name) holder.setTextColor(R.id.tv_name, if (item.isChecked) getColor(R.color.color_125ffe) else getColor(R.color.color_222222)) diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Area2Adapter.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Area2Adapter.kt new file mode 100644 index 0000000..14245cc --- /dev/null +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/adapter/GuideItem2Area2Adapter.kt @@ -0,0 +1,81 @@ +package com.cheng.blzb.ui.fragment.guide.adapter + +import android.annotation.SuppressLint +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.viewholder.BaseViewHolder +import com.cheng.blzb.R +import com.cheng.blzb.bean.AreaEntity +import com.example.base.decoration.GridSpaceItemDecoration +import com.example.base.extensions.onClick +import com.example.base.utils.DensityUtils + +class GuideItem2Area2Adapter(val area1Adapter: GuideItem2Area1Adapter): BaseQuickAdapter(R.layout.listitem_guide_area2) { + @SuppressLint("NotifyDataSetChanged") + override fun convert(holder: BaseViewHolder, item: AreaEntity) { + val tvName = holder.getView(R.id.tv_name) + val tvCheckAll = holder.getView(R.id.tv_check_all) + val rvCity = holder.getView(R.id.rv_city) + + tvName.text = item.name + + if (rvCity.adapter == null) { + val adapter = GuideItem2CityAdapter() + rvCity.adapter = adapter + rvCity.addItemDecoration(GridSpaceItemDecoration(2, DensityUtils.dp2px(10f), DensityUtils.dp2px(10f))) + } + val cityAdapter = rvCity.adapter as GuideItem2CityAdapter + cityAdapter.setList(item.children) + + if (item.id == 0) { + updateCheckState(tvCheckAll, data.all { area -> area.children.all { it.isChecked } }) + } else { + updateCheckState(tvCheckAll, cityAdapter.data.all { it.isChecked }) + } + + cityAdapter.setOnItemClickListener { _, _, position -> + val cityItem = cityAdapter.getItem(position) + cityItem.isChecked = !cityItem.isChecked + notifyDataSetChanged() + } + + tvCheckAll.onClick { + if (item.id == 0) { + if (data.all { area -> area.children.all { it.isChecked } }) { + data.forEach { area -> + area.children.forEach { it.isChecked = false } + } + } else { + data.forEach { area -> + area.children.forEach { it.isChecked = true } + } + } + } else { + if (cityAdapter.data.all { it.isChecked }) { + cityAdapter.data.forEach { it.isChecked = false } + } else { + cityAdapter.data.forEach { it.isChecked = true } + } + } + notifyDataSetChanged() + } + + tvName.onClick { + data.find { it.isChecked }?.isChecked = false + item.isChecked = true + notifyDataSetChanged() + area1Adapter.notifyDataSetChanged() + } + + holder.setGone(R.id.rv_city, !item.isChecked) + } + + private fun updateCheckState(textView: TextView, isCheckAll: Boolean) { + if (isCheckAll) { + textView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_check_true, 0, 0, 0) + } else { + textView.setCompoundDrawablesWithIntrinsicBounds(R.mipmap.ic_check_false, 0, 0, 0) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem2Fragment.kt b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem2Fragment.kt index 9573e8c..ba73d99 100644 --- a/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem2Fragment.kt +++ b/app/src/main/java/com/cheng/blzb/ui/fragment/guide/item/GuideItem2Fragment.kt @@ -2,18 +2,17 @@ package com.cheng.blzb.ui.fragment.guide.item import android.animation.AnimatorSet import android.animation.ObjectAnimator +import android.annotation.SuppressLint import androidx.core.animation.addListener -import com.cheng.blzb.R import com.cheng.blzb.bean.AreaEntity import com.cheng.blzb.common.Constants import com.cheng.blzb.databinding.FragmentGuideItem2Binding import com.cheng.blzb.event.GuideEvent import com.cheng.blzb.manager.UserConfigManager import com.cheng.blzb.ui.fragment.guide.GuideViewModel -import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2AreaAdapter -import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2CityAdapter +import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2Area1Adapter +import com.cheng.blzb.ui.fragment.guide.adapter.GuideItem2Area2Adapter import com.example.base.common.RxBus -import com.example.base.decoration.GridSpaceItemDecoration import com.example.base.extensions.onClick import com.example.base.extensions.toast import com.example.base.extensions.visible @@ -22,11 +21,9 @@ import com.example.base.utils.DensityUtils import com.example.base.utils.ScreenUtils class GuideItem2Fragment: BaseFragment() { - private val areaAdapter by lazy { GuideItem2AreaAdapter() } + private val area1Adapter by lazy { GuideItem2Area1Adapter() } - private val cityAdapter by lazy { GuideItem2CityAdapter() } - - private var isCountrywide = true + private val area2Adapter by lazy { GuideItem2Area2Adapter(area1Adapter) } private var canClick = false @@ -34,19 +31,20 @@ class GuideItem2Fragment: BaseFragment + area.children.forEach { it.isChecked = true } + } + area1Adapter.setList(areaList) + area2Adapter.setList(areaList) } override fun onLazyLoad() { @@ -54,96 +52,32 @@ class GuideItem2Fragment: BaseFragment - val item = areaAdapter.getItem(position) - areaAdapter.data.find { it.isChecked }?.isChecked = false + area1Adapter.setOnItemClickListener { _, _, position -> + val item = area1Adapter.getItem(position) + area1Adapter.data.find { it.isChecked }?.isChecked = false item.isChecked = true - areaAdapter.notifyDataSetChanged() - - val cityList = item.children - cityAdapter.setList(item.children) - - if (item.id == 0) { - updateCheckState(isCountrywide) - } else { - updateCheckState(cityList.all { it.isChecked }) - } - } - - cityAdapter.setOnItemClickListener { _, _, position -> - val item = cityAdapter.getItem(position) - item.isChecked = !item.isChecked - cityAdapter.notifyDataSetChanged() - - updateCheckState(cityAdapter.data.all { it.isChecked }) - isCountrywide = false - } - - binding.tvCheckAll.onClick { - if (areaAdapter.data.find { it.isChecked }?.id == 0) { - isCountrywide = !isCountrywide - - areaAdapter.data.forEach { area -> - area.children.forEach { city -> - city.isChecked = false - } - } - updateCheckState(isCountrywide) - } else { - if (cityAdapter.data.all { it.isChecked }) { - cityAdapter.data.forEach { it.isChecked = false } - } else { - cityAdapter.data.forEach { it.isChecked = true } - } - updateCheckState(cityAdapter.data.all { it.isChecked }) - cityAdapter.notifyDataSetChanged() - isCountrywide = false - } + area1Adapter.notifyDataSetChanged() + area2Adapter.notifyDataSetChanged() } binding.btnNext.onClick { if (canClick) { val selectList = mutableListOf() - areaAdapter.data.forEach { area -> + area1Adapter.data.forEach { area -> selectList.addAll(area.children.filter { it.isChecked }) } - if (!isCountrywide && selectList.isEmpty()) { + if (selectList.isEmpty()) { toast("请选择地区") return@onClick } - if (isCountrywide) { - areaAdapter.data.forEach { area -> - selectList.addAll(area.children) - } - } RxBus.defaultInstance.post(GuideEvent(true)) } } } - override fun initObserve() { - super.initObserve() - mViewModel.userCityLiveData.observe(this) { - if (it != null) { - areaAdapter.data.forEach { area -> - area.children.forEach { city -> - if (city.id == it.id) { - area.isChecked = true - city.isChecked = true - isCountrywide = false - areaAdapter.notifyDataSetChanged() - cityAdapter.setList(area.children) - updateCheckState(false) - return@observe - } - } - } - } - } - } - private fun startAnim() { val titleTransAnim = ObjectAnimator.ofFloat(binding.ivTitle, "translationX", -DensityUtils.dp2px(200f).toFloat(), 0f) titleTransAnim.duration = 1000 @@ -179,6 +113,13 @@ class GuideItem2Fragment: BaseFragment() { + + private var canClick = false + + override fun initView() { + super.initView() + binding.tvName1.typeface = Constants.douyinsansB + binding.tvName2.typeface = Constants.douyinsansB + binding.tvName3.typeface = Constants.douyinsansB + binding.tvName4.typeface = Constants.douyinsansB + binding.tvName5.typeface = Constants.douyinsansB + binding.tvName6.typeface = Constants.douyinsansB + binding.tvName7.typeface = Constants.douyinsansB + binding.tvName8.typeface = Constants.douyinsansB + } + + override fun initData() { + super.initData() + } + + override fun onLazyLoad() { + super.onLazyLoad() + startAnim() + } + + override fun initListener() { + super.initListener() + binding.ivBtn.onClick { + if (canClick) { + RxBus.defaultInstance.post(GuideEvent(true)) + } + } + } + + private fun startAnim() { + val scaleXHolder = PropertyValuesHolder.ofFloat("scaleX", 0.85f, 1.15f, 0.9f, 1.1f, 0.95f, 1f) + val scaleYHolder = PropertyValuesHolder.ofFloat("scaleY", 0.85f, 1.15f, 0.9f, 1.1f, 0.95f, 1f) + + val option1ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption1, scaleXHolder, scaleYHolder) + option1ScaleAnim.duration = 1000 + option1ScaleAnim.startDelay = 1800 + option1ScaleAnim.interpolator = LinearInterpolator() + option1ScaleAnim.addListener(onStart = { + binding.layoutOption1.visible() + }) + + val option2ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption2, scaleXHolder, scaleYHolder) + option2ScaleAnim.duration = 1000 + option2ScaleAnim.startDelay = 1000 + option2ScaleAnim.interpolator = LinearInterpolator() + option2ScaleAnim.addListener(onStart = { + binding.layoutOption2.visible() + }) + + val option3ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption3, scaleXHolder, scaleYHolder) + option3ScaleAnim.duration = 1000 + option3ScaleAnim.startDelay = 1400 + option3ScaleAnim.interpolator = LinearInterpolator() + option3ScaleAnim.addListener(onStart = { + binding.layoutOption3.visible() + }) + + val option4ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption4, scaleXHolder, scaleYHolder) + option4ScaleAnim.duration = 1000 + option4ScaleAnim.startDelay = 1800 + option4ScaleAnim.interpolator = LinearInterpolator() + option4ScaleAnim.addListener(onStart = { + binding.layoutOption4.visible() + }) + + val option5ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption5, scaleXHolder, scaleYHolder) + option5ScaleAnim.duration = 1000 + option5ScaleAnim.startDelay = 1200 + option5ScaleAnim.interpolator = LinearInterpolator() + option5ScaleAnim.addListener(onStart = { + binding.layoutOption5.visible() + }) + + val option6ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption6, scaleXHolder, scaleYHolder) + option6ScaleAnim.duration = 1000 + option6ScaleAnim.startDelay = 1800 + option6ScaleAnim.interpolator = LinearInterpolator() + option6ScaleAnim.addListener(onStart = { + binding.layoutOption6.visible() + }) + + val option7ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption7, scaleXHolder, scaleYHolder) + option7ScaleAnim.duration = 1000 + option7ScaleAnim.startDelay = 1400 + option7ScaleAnim.interpolator = LinearInterpolator() + option7ScaleAnim.addListener(onStart = { + binding.layoutOption7.visible() + }) + + val option8ScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.layoutOption8, scaleXHolder, scaleYHolder) + option8ScaleAnim.duration = 1000 + option8ScaleAnim.startDelay = 1600 + option8ScaleAnim.interpolator = LinearInterpolator() + option8ScaleAnim.addListener(onStart = { + binding.layoutOption8.visible() + }) + + val bgTransAnim = ObjectAnimator.ofFloat(binding.ivBg, "translationY", ScreenUtils.getScreenHeight().toFloat(), 0f) + bgTransAnim.duration = 1000 + bgTransAnim.addListener(onStart = { + binding.ivBg.visible() + }) + + val titleTransAnim = ObjectAnimator.ofFloat(binding.ivTitle, "translationY", -DensityUtils.dp2px(200f).toFloat(), 0f) + titleTransAnim.duration = 1000 + titleTransAnim.startDelay = 200 + titleTransAnim.addListener(onStart = { + binding.ivTitle.visible() + }) + + val descTransAnim = ObjectAnimator.ofFloat(binding.ivDesc, "translationY", -DensityUtils.dp2px(200f).toFloat(), 0f) + descTransAnim.duration = 1000 + descTransAnim.startDelay = 200 + descTransAnim.addListener(onStart = { + binding.ivDesc.visible() + }) + + val btnScaleAnim = ObjectAnimator.ofPropertyValuesHolder(binding.ivBtn, scaleXHolder, scaleYHolder) + btnScaleAnim.duration = 1000 + btnScaleAnim.startDelay = 600 + btnScaleAnim.interpolator = LinearInterpolator() + btnScaleAnim.addListener(onStart = { + binding.ivBtn.visible() + }, onEnd = { + canClick = true + }) + + val animSet = AnimatorSet() + animSet.playTogether( + option1ScaleAnim, + option2ScaleAnim, + option3ScaleAnim, + option4ScaleAnim, + option5ScaleAnim, + option6ScaleAnim, + option7ScaleAnim, + option8ScaleAnim, + bgTransAnim, + titleTransAnim, + descTransAnim, + btnScaleAnim + ) + animSet.start() + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_guide_item3_bg.xml b/app/src/main/res/drawable/shape_guide_item3_bg.xml new file mode 100644 index 0000000..11e8462 --- /dev/null +++ b/app/src/main/res/drawable/shape_guide_item3_bg.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_guide_item1.xml b/app/src/main/res/layout/fragment_guide_item1.xml index 204721e..0f06fac 100644 --- a/app/src/main/res/layout/fragment_guide_item1.xml +++ b/app/src/main/res/layout/fragment_guide_item1.xml @@ -126,7 +126,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="@dimen/dp_30" - android:src="@mipmap/ic_guide_item_btn" + android:src="@mipmap/ic_guide_item1_btn" android:visibility="invisible" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/fragment_guide_item2.xml b/app/src/main/res/layout/fragment_guide_item2.xml index 4b24ca0..c230d02 100644 --- a/app/src/main/res/layout/fragment_guide_item2.xml +++ b/app/src/main/res/layout/fragment_guide_item2.xml @@ -71,7 +71,7 @@ app:layout_constraintTop_toTopOf="parent" /> - - + tool:listitem="@layout/listitem_guide_area1" /> + app:layout_constraintStart_toEndOf="@id/rv_area1" + app:layout_constraintTop_toBottomOf="@id/tv_title" + tool:listitem="@layout/listitem_guide_area2" /> @@ -126,6 +111,21 @@ app:layout_constraintStart_toStartOf="parent" tool:visibility="visible" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/listitem_guide_area.xml b/app/src/main/res/layout/listitem_guide_area1.xml similarity index 100% rename from app/src/main/res/layout/listitem_guide_area.xml rename to app/src/main/res/layout/listitem_guide_area1.xml diff --git a/app/src/main/res/layout/listitem_guide_area2.xml b/app/src/main/res/layout/listitem_guide_area2.xml new file mode 100644 index 0000000..4a59905 --- /dev/null +++ b/app/src/main/res/layout/listitem_guide_area2.xml @@ -0,0 +1,47 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item_btn.webp b/app/src/main/res/mipmap-xxhdpi/ic_guide_item1_btn.webp similarity index 100% rename from app/src/main/res/mipmap-xxhdpi/ic_guide_item_btn.webp rename to app/src/main/res/mipmap-xxhdpi/ic_guide_item1_btn.webp diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_bg.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_bg.png new file mode 100644 index 0000000..f0a943b Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_bg.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_btn.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_btn.png new file mode 100644 index 0000000..2e2b682 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_btn.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.png new file mode 100644 index 0000000..4caa8b3 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_checked.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.png new file mode 100644 index 0000000..457f187 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_desc.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon1.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon1.png new file mode 100644 index 0000000..0e49586 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon1.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon2.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon2.png new file mode 100644 index 0000000..bed4ff8 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon2.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon3.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon3.png new file mode 100644 index 0000000..6ef42c1 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon3.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon4.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon4.png new file mode 100644 index 0000000..5a7476a Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon4.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon5.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon5.png new file mode 100644 index 0000000..817e1c7 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon5.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon6.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon6.png new file mode 100644 index 0000000..df9bb60 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon6.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon7.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon7.png new file mode 100644 index 0000000..169535a Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon7.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon8.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon8.png new file mode 100644 index 0000000..e3f2129 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_icon8.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_checked.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_checked.png new file mode 100644 index 0000000..8f5f51a Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_checked.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_default.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_default.png new file mode 100644 index 0000000..0af1722 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_star_default.png differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_title.png b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_title.png new file mode 100644 index 0000000..035c272 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_guide_item3_title.png differ