夺宝精灵:精灵试炼
This commit is contained in:
@@ -1,9 +1,13 @@
|
||||
package com.mango.moshen.treasurefairy
|
||||
|
||||
import android.util.SparseArray
|
||||
import android.util.SparseIntArray
|
||||
import androidx.core.util.forEach
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import com.mango.core.bean.response.ListResult
|
||||
import com.mango.core.gift.bean.SimpleUserInfo
|
||||
import com.mango.core.manager.AvRoomDataManager
|
||||
import com.mango.core.treasurefairy.*
|
||||
import com.mango.core.utils.net.ServerException
|
||||
import com.mango.core.utils.toast
|
||||
@@ -48,6 +52,14 @@ class FairyViewModel : BaseViewModel() {
|
||||
private val _sendFairyRecordLiveData = MutableLiveData<ListResult<SendFairyInfo>>()
|
||||
val sendFairyRecordLiveData: LiveData<ListResult<SendFairyInfo>> = _sendFairyRecordLiveData
|
||||
|
||||
private val _compoundFairyInfosLiveData = MutableLiveData<SparseArray<FairyInfo>>()
|
||||
val compoundFairyInfosLiveData: LiveData<SparseArray<FairyInfo>> = _compoundFairyInfosLiveData
|
||||
|
||||
private val _testResultLiveData = MutableLiveData<Event<FairyInfo>>()
|
||||
val testResultLiveData: LiveData<Event<FairyInfo>> = _testResultLiveData
|
||||
|
||||
private val _testRecordLiveData = MutableLiveData<ListResult<TestFairyRecordInfo>>()
|
||||
val testRecordLiveData: LiveData<ListResult<TestFairyRecordInfo>> = _testRecordLiveData
|
||||
|
||||
init {
|
||||
initPrizeInfoList()
|
||||
@@ -213,4 +225,121 @@ class FairyViewModel : BaseViewModel() {
|
||||
)
|
||||
}
|
||||
|
||||
fun cleanTestParam() {
|
||||
_compoundFairyInfosLiveData.value = null
|
||||
_myFairyInfoLiveData.value?.lowElves?.forEach {
|
||||
it.selectedNum = 0
|
||||
}
|
||||
_myFairyInfoLiveData.value?.middleElves?.forEach {
|
||||
it.selectedNum = 0
|
||||
}
|
||||
_myFairyInfoLiveData.value = _myFairyInfoLiveData.value
|
||||
}
|
||||
|
||||
fun addTestFairy(fairyInfo: FairyInfo) {
|
||||
val array = _compoundFairyInfosLiveData.value ?: SparseArray()
|
||||
|
||||
if (array.size() >= 3) {
|
||||
"数量足够了,快去试炼吧!".toast()
|
||||
} else {
|
||||
if (fairyInfo.elfNum == 0) {
|
||||
"精灵数量不足".toast()
|
||||
return
|
||||
}
|
||||
array.put(nextIndex(array), fairyInfo)
|
||||
var selectedNum = 0
|
||||
array.forEach { _, value ->
|
||||
if (value.elfId == fairyInfo.elfId) {
|
||||
selectedNum++
|
||||
}
|
||||
}
|
||||
|
||||
if (selectedNum > fairyInfo.elfNum) {
|
||||
"精灵数量不足".toast()
|
||||
return
|
||||
}
|
||||
fairyInfo.selectedNum = selectedNum
|
||||
|
||||
_compoundFairyInfosLiveData.value = array
|
||||
}
|
||||
}
|
||||
|
||||
fun minusTestFairy(index: Int) {
|
||||
val array = _compoundFairyInfosLiveData.value ?: SparseArray()
|
||||
val fairyInfo = array.get(index)
|
||||
if (fairyInfo != null) {
|
||||
array.remove(index)
|
||||
var selectedNum = 0
|
||||
array.forEach { _, value ->
|
||||
if (value.elfId == fairyInfo.elfId) {
|
||||
selectedNum++
|
||||
}
|
||||
}
|
||||
fairyInfo.selectedNum = selectedNum
|
||||
_compoundFairyInfosLiveData.value = array
|
||||
}
|
||||
}
|
||||
|
||||
fun oneKeyAdd(fairyInfos: List<FairyInfo>) {
|
||||
val compoundFairyInfos = _compoundFairyInfosLiveData.value ?: SparseArray()
|
||||
var needNum = 3 - compoundFairyInfos.size()
|
||||
fairyInfos.forEach {
|
||||
while (it.elfNum - it.selectedNum > 0 && needNum > 0) {
|
||||
it.selectedNum++
|
||||
needNum--
|
||||
compoundFairyInfos.put(nextIndex(compoundFairyInfos), it)
|
||||
}
|
||||
}
|
||||
_compoundFairyInfosLiveData.value = compoundFairyInfos
|
||||
}
|
||||
|
||||
private fun nextIndex(fairyInfos: SparseArray<FairyInfo>): Int {
|
||||
return when {
|
||||
fairyInfos.get(0) == null -> {
|
||||
0
|
||||
}
|
||||
fairyInfos.get(1) == null -> {
|
||||
1
|
||||
}
|
||||
else -> {
|
||||
2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun testFairy(level: Int) {
|
||||
val fairyInfos = _compoundFairyInfosLiveData.value ?: SparseArray()
|
||||
if (fairyInfos.size() != 3) {
|
||||
"精灵数量不足".toast()
|
||||
return
|
||||
}
|
||||
safeLaunch {
|
||||
val fairyTestParam = FairyTestParam()
|
||||
fairyInfos.forEach { _, value ->
|
||||
fairyTestParam.expendList.add(Compound(value.elfId, 1))
|
||||
}
|
||||
fairyTestParam.level = level
|
||||
val result = TreasureFairyModel.testFairy(fairyTestParam)
|
||||
_testResultLiveData.value = result?.let { Event(it) }
|
||||
_compoundFairyInfosLiveData.value = null
|
||||
getMyFairyInfo()
|
||||
}
|
||||
}
|
||||
|
||||
fun getTestFairyRecordList(
|
||||
page: Int,
|
||||
pageSize: Int
|
||||
) {
|
||||
safeLaunch(
|
||||
onError = {
|
||||
_testRecordLiveData.value = ListResult.failed(page)
|
||||
},
|
||||
block = {
|
||||
val result = TreasureFairyModel.getTestFairyRecordList(page, pageSize)
|
||||
_testRecordLiveData.value = ListResult.success(result, page)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
}
|
@@ -0,0 +1,27 @@
|
||||
package com.mango.moshen.treasurefairy
|
||||
|
||||
import android.widget.ImageView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.mango.core.treasurefairy.FairyInfo
|
||||
import com.mango.core.treasurefairy.SendFairyInfo
|
||||
import com.mango.moshen.R
|
||||
import com.mango.moshen.ui.utils.load
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
class TestFairyAdapter :
|
||||
BaseQuickAdapter<FairyInfo, BaseViewHolder>(R.layout.treasure_fairy_item_test_fairy) {
|
||||
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: FairyInfo) {
|
||||
helper.getView<ImageView>(R.id.iv_fairy_icon).load(item.elfPicUrl)
|
||||
helper.setText(R.id.tv_fairy_num, "${item.selectedNum}/${item.elfNum}")
|
||||
helper.setText(R.id.tv_fairy_name, item.elfName)
|
||||
helper.setBackgroundRes(
|
||||
R.id.ll_root,
|
||||
if (item.selectedNum > 0) R.drawable.treasure_fairy_bg_test_fairy_item_select else 0
|
||||
)
|
||||
}
|
||||
|
||||
}
|
@@ -6,14 +6,10 @@ import android.view.Gravity
|
||||
import android.view.WindowManager
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.mango.core.room.game.GameInfo
|
||||
import com.mango.moshen.R
|
||||
import com.mango.moshen.avroom.adapter.RoomVPAdapter
|
||||
import com.mango.moshen.base.BaseDialog
|
||||
import com.mango.moshen.databinding.TreasureFairyDialogMyFairyBinding
|
||||
import com.mango.moshen.databinding.TreasureFairyDialogTestFairyBinding
|
||||
import com.mango.moshen.home.adapter.FragmentViewPagerAdapter
|
||||
import com.mango.moshen.ui.utils.RVDelegate
|
||||
|
||||
class TestFairyDialog : BaseDialog<TreasureFairyDialogTestFairyBinding>() {
|
||||
|
||||
@@ -36,6 +32,9 @@ class TestFairyDialog : BaseDialog<TreasureFairyDialogTestFairyBinding>() {
|
||||
binding.ivBack.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
binding.tvRecord.setOnClickListener {
|
||||
TestFairyRecordDialog.newInstance().show(context)
|
||||
}
|
||||
binding.rg.setOnCheckedChangeListener { _, checkedId ->
|
||||
when (checkedId) {
|
||||
R.id.rb_epic -> binding.viewPager.currentItem = 0
|
||||
@@ -48,17 +47,19 @@ class TestFairyDialog : BaseDialog<TreasureFairyDialogTestFairyBinding>() {
|
||||
0 -> binding.rg.check(R.id.rb_epic)
|
||||
1 -> binding.rg.check(R.id.rb_legend)
|
||||
}
|
||||
viewModel.cleanTestParam()
|
||||
}
|
||||
})
|
||||
|
||||
binding.viewPager.adapter = RoomVPAdapter(
|
||||
childFragmentManager,
|
||||
listOf(
|
||||
TestFairyFragment.newInstance(MyFairyItemView.EPIC),
|
||||
TestFairyFragment.newInstance(MyFairyItemView.LEGEND)
|
||||
TestFairyFragment.newInstance(MyFairyItemView.BASE),
|
||||
TestFairyFragment.newInstance(MyFairyItemView.EPIC)
|
||||
)
|
||||
)
|
||||
viewModel.getMyFairyInfo()
|
||||
viewModel.cleanTestParam()
|
||||
}
|
||||
|
||||
}
|
@@ -5,8 +5,13 @@ import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.WindowManager
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mango.core.gift.bean.SimpleUserInfo
|
||||
import com.mango.core.room.game.GameInfo
|
||||
import com.mango.core.treasurefairy.FairyInfo
|
||||
import com.mango.core.treasurefairy.SendFairyInfo
|
||||
import com.mango.core.utils.toast
|
||||
import com.mango.moshen.R
|
||||
import com.mango.moshen.base.BaseDialog
|
||||
import com.mango.moshen.base.BaseFragment
|
||||
@@ -15,6 +20,7 @@ import com.mango.moshen.databinding.TreasureFairyDialogMyFairyBinding
|
||||
import com.mango.moshen.databinding.TreasureFairyFragmentMyFairyBinding
|
||||
import com.mango.moshen.databinding.TreasureFairyFragmentTestFairyBinding
|
||||
import com.mango.moshen.ui.utils.RVDelegate
|
||||
import com.mango.moshen.ui.utils.load
|
||||
|
||||
class TestFairyFragment : BaseViewBindingFragment<TreasureFairyFragmentTestFairyBinding>() {
|
||||
|
||||
@@ -31,23 +37,73 @@ class TestFairyFragment : BaseViewBindingFragment<TreasureFairyFragmentTestFairy
|
||||
|
||||
private val fairyType by lazy { requireArguments().getInt("fairyType", MyFairyItemView.BASE) }
|
||||
private val viewModel: FairyViewModel by activityViewModels()
|
||||
private lateinit var rvDelegate: RVDelegate<FairyInfo>
|
||||
private lateinit var testFairyAdapter: TestFairyAdapter
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun init() {
|
||||
val fairyViews = listOf(binding.ivFairy0, binding.ivFairy1, binding.ivFairy2)
|
||||
testFairyAdapter = TestFairyAdapter()
|
||||
rvDelegate = RVDelegate.Builder<FairyInfo>()
|
||||
.setAdapter(testFairyAdapter)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setLayoutManager(GridLayoutManager(context, 5, LinearLayoutManager.VERTICAL, false))
|
||||
.build()
|
||||
|
||||
viewModel.myFairyInfoLiveData.observe(viewLifecycleOwner) {
|
||||
it?.let {
|
||||
val fairyInfos = when (fairyType) {
|
||||
val fairyInfos = it?.let {
|
||||
when (fairyType) {
|
||||
MyFairyItemView.EPIC -> {
|
||||
it.middleElves
|
||||
}
|
||||
else -> {
|
||||
it.highElves
|
||||
it.lowElves
|
||||
}
|
||||
}
|
||||
}
|
||||
rvDelegate.setNewData(fairyInfos)
|
||||
}
|
||||
|
||||
if (fairyType == MyFairyItemView.EPIC){
|
||||
binding.tvTips.text = "点击投入试炼传说精灵"
|
||||
}
|
||||
|
||||
testFairyAdapter.setOnItemClickListener { _, _, position ->
|
||||
testFairyAdapter.getItem(position)?.let {
|
||||
viewModel.addTestFairy(it)
|
||||
}
|
||||
}
|
||||
|
||||
fairyViews.forEachIndexed { index, imageView ->
|
||||
imageView.setOnClickListener {
|
||||
viewModel.minusTestFairy(index)
|
||||
}
|
||||
}
|
||||
binding.tvReset.setOnClickListener {
|
||||
viewModel.cleanTestParam()
|
||||
}
|
||||
binding.tvOneKeyAdd.setOnClickListener {
|
||||
viewModel.oneKeyAdd(testFairyAdapter.data)
|
||||
}
|
||||
|
||||
binding.ivBegin.setOnClickListener {
|
||||
viewModel.testFairy(fairyType)
|
||||
}
|
||||
viewModel.testResultLiveData.observe(viewLifecycleOwner) {
|
||||
it?.getContentIfNotHandled()?.let {
|
||||
TestFairyResultDialog.newInstance().show(context)
|
||||
}
|
||||
}
|
||||
viewModel.compoundFairyInfosLiveData.observe(viewLifecycleOwner) {
|
||||
fairyViews.forEachIndexed { index, imageView ->
|
||||
it?.get(index)?.elfPicUrl?.let { elfPicUrl ->
|
||||
imageView.load(elfPicUrl)
|
||||
} ?: run {
|
||||
imageView.setImageDrawable(null)
|
||||
}
|
||||
}
|
||||
testFairyAdapter.notifyDataSetChanged()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,34 @@
|
||||
package com.mango.moshen.treasurefairy
|
||||
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.mango.core.treasurefairy.PrizeInfo
|
||||
import com.mango.core.treasurefairy.TestFairyRecordInfo
|
||||
import com.mango.moshen.R
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
|
||||
class TestFairyRecordAdapter :
|
||||
BaseQuickAdapter<TestFairyRecordInfo, BaseViewHolder>(R.layout.treasure_fairy_item_test_fairy_record) {
|
||||
|
||||
private val formatYear = SimpleDateFormat("yyyy-MM-dd", Locale.CHINA)
|
||||
private val formatHour = SimpleDateFormat("HH:mm:ss", Locale.CHINA)
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: TestFairyRecordInfo) {
|
||||
|
||||
helper.setText(R.id.tv_time_year, formatYear.format(item.createTime))
|
||||
helper.setText(R.id.tv_time_hour, formatHour.format(item.createTime))
|
||||
helper.setText(R.id.tv_prize_name, item.elfName)
|
||||
helper.setText(
|
||||
R.id.tv_prize_type, when (item.elfLevel) {
|
||||
1 -> "史诗试炼"
|
||||
else -> "传说森林"
|
||||
}
|
||||
)
|
||||
|
||||
helper.setText(
|
||||
R.id.tv_fairy_infos,
|
||||
item.expendList.joinToString(separator = "\n") { "${it.elfName}x${it.elfNum}" })
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,59 @@
|
||||
package com.mango.moshen.treasurefairy
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mango.core.treasurefairy.PrizeInfo
|
||||
import com.mango.core.treasurefairy.TestFairyRecordInfo
|
||||
import com.mango.moshen.base.BaseDialog
|
||||
import com.mango.moshen.databinding.TreasureFairyDialogTestFairyRecordBinding
|
||||
import com.mango.moshen.databinding.TreasureFairyFragmentForestRecordBinding
|
||||
import com.mango.moshen.ui.utils.RVDelegate
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
|
||||
class TestFairyRecordDialog : BaseDialog<TreasureFairyDialogTestFairyRecordBinding>() {
|
||||
|
||||
|
||||
companion object {
|
||||
fun newInstance(): TestFairyRecordDialog {
|
||||
val args = Bundle()
|
||||
val fragment = TestFairyRecordDialog()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
private var page = 1
|
||||
private val pageSize = 20
|
||||
private lateinit var rvDelegate: RVDelegate<TestFairyRecordInfo>
|
||||
private lateinit var prizeAdapter: TestFairyRecordAdapter
|
||||
private val viewModel: FairyViewModel by activityViewModels()
|
||||
override var width: Int = ScreenUtil.dip2px(318f)
|
||||
override var height: Int = ScreenUtil.dip2px(388f)
|
||||
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun init() {
|
||||
prizeAdapter = TestFairyRecordAdapter()
|
||||
rvDelegate = RVDelegate.Builder<TestFairyRecordInfo>()
|
||||
.setAdapter(prizeAdapter)
|
||||
.setPageSize(pageSize)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setLayoutManager(LinearLayoutManager(context))
|
||||
.build()
|
||||
|
||||
viewModel.testRecordLiveData.observe(viewLifecycleOwner) {
|
||||
rvDelegate.loadData(it)
|
||||
}
|
||||
|
||||
prizeAdapter.setOnLoadMoreListener({ loadData(false) }, binding.recyclerView)
|
||||
|
||||
loadData(true)
|
||||
}
|
||||
|
||||
private fun loadData(isRefresh: Boolean) {
|
||||
page = if (isRefresh) 1 else (page + 1)
|
||||
viewModel.getTestFairyRecordList(page, pageSize)
|
||||
}
|
||||
}
|
@@ -0,0 +1,18 @@
|
||||
package com.mango.moshen.treasurefairy
|
||||
|
||||
import android.widget.ImageView
|
||||
import com.chad.library.adapter.base.BaseQuickAdapter
|
||||
import com.chad.library.adapter.base.BaseViewHolder
|
||||
import com.mango.core.treasurefairy.FairyInfo
|
||||
import com.mango.moshen.R
|
||||
import com.mango.moshen.ui.utils.load
|
||||
|
||||
class TestFairyResultAdapter :
|
||||
BaseQuickAdapter<FairyInfo, BaseViewHolder>(R.layout.treasure_fairy_item_forest_prize_single) {
|
||||
|
||||
override fun convert(helper: BaseViewHolder, item: FairyInfo) {
|
||||
helper.getView<ImageView>(R.id.iv_prize_icon).load(item.elfPicUrl)
|
||||
helper.setText(R.id.tv_prize_name, item.elfName)
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
package com.mango.moshen.treasurefairy
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.Gravity
|
||||
import android.view.WindowManager
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.updateLayoutParams
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.mango.core.treasurefairy.FairyInfo
|
||||
import com.mango.core.treasurefairy.PrizeInfo
|
||||
import com.mango.moshen.R
|
||||
import com.mango.moshen.base.BaseDialog
|
||||
import com.mango.moshen.databinding.TreasureFairyDialogForestPrizeBinding
|
||||
import com.mango.moshen.databinding.TreasureFairyDialogTestFairyResultBinding
|
||||
import com.mango.moshen.ui.utils.RVDelegate
|
||||
import com.netease.nim.uikit.common.util.sys.ScreenUtil
|
||||
|
||||
class TestFairyResultDialog : BaseDialog<TreasureFairyDialogTestFairyResultBinding>() {
|
||||
|
||||
private lateinit var rvDelegate: RVDelegate<FairyInfo>
|
||||
private lateinit var prizeAdapter: TestFairyResultAdapter
|
||||
|
||||
override var width = WindowManager.LayoutParams.MATCH_PARENT
|
||||
override var height = WindowManager.LayoutParams.WRAP_CONTENT
|
||||
override var gravity = Gravity.CENTER
|
||||
private val viewModel: FairyViewModel by activityViewModels()
|
||||
|
||||
companion object {
|
||||
fun newInstance(): TestFairyResultDialog {
|
||||
val args = Bundle()
|
||||
val fragment = TestFairyResultDialog()
|
||||
fragment.arguments = args
|
||||
return fragment
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
override fun init() {
|
||||
binding.tvClose.setOnClickListener {
|
||||
dismissAllowingStateLoss()
|
||||
}
|
||||
val prizeInfoList = viewModel.testResultLiveData.value
|
||||
|
||||
prizeAdapter = TestFairyResultAdapter()
|
||||
rvDelegate = RVDelegate.Builder<FairyInfo>()
|
||||
.setAdapter(prizeAdapter)
|
||||
.setRecyclerView(binding.recyclerView)
|
||||
.setLayoutManager(
|
||||
LinearLayoutManager(context)
|
||||
)
|
||||
.build()
|
||||
|
||||
rvDelegate.setNewData(arrayListOf(prizeInfoList?.peekContent()))
|
||||
|
||||
}
|
||||
|
||||
}
|
@@ -80,7 +80,7 @@ public class MsgViewHolderFairy extends MsgViewHolderBase implements View.OnClic
|
||||
public void onClick(View v) {
|
||||
FairySendAttachment attachment = (FairySendAttachment) message.getAttachment();
|
||||
SimpleUserInfo userInfo = new SimpleUserInfo(attachment.getNick(), attachment.getUid(), 0, "", "");
|
||||
FairyInfo fairyInfo = new FairyInfo(attachment.getElfId(), 1, 1, attachment.getElfName(), attachment.getElfPicUrl());
|
||||
FairyInfo fairyInfo = new FairyInfo(attachment.getElfId(), 1, 1, attachment.getElfName(), attachment.getElfPicUrl(),0);
|
||||
Bundle bundle = new Bundle();
|
||||
bundle.putSerializable("userInfo", userInfo);
|
||||
bundle.putSerializable("fairyInfo", fairyInfo);
|
||||
|
8
app/src/main/res/drawable/shape_006e7c_to_00b9af.xml
Normal file
8
app/src/main/res/drawable/shape_006e7c_to_00b9af.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:shape="oval">
|
||||
<gradient
|
||||
android:angle="90"
|
||||
android:endColor="#00B9AF"
|
||||
android:startColor="#006E7C" />
|
||||
</shape>
|
@@ -93,6 +93,7 @@
|
||||
app:layout_constraintTop_toTopOf="@id/rg" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_record"
|
||||
android:layout_width="24dp"
|
||||
android:layout_height="65dp"
|
||||
android:layout_marginTop="4dp"
|
||||
|
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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="318dp"
|
||||
android:layout_height="388dp"
|
||||
android:layout_gravity="center"
|
||||
android:background="@drawable/treasure_fairy_bg_my_fairy_record"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="5dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="53dp"
|
||||
android:text="试炼记录"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="15sp" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="20dp">
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="试炼时间"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="类型"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="投入精灵"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<TextView
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:text="获得奖励"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="42dp"
|
||||
android:overScrollMode="never"
|
||||
android:scrollbars="none" />
|
||||
|
||||
</LinearLayout>
|
@@ -0,0 +1,64 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/root_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<View
|
||||
android:id="@+id/view_bg"
|
||||
android:layout_width="281dp"
|
||||
android:layout_height="285dp"
|
||||
android:background="@drawable/treasure_fairy_bg_forest_prize_single"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintVertical_bias="0.6" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="53dp"
|
||||
android:text="获得精灵"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="15sp"
|
||||
android:textStyle="bold"
|
||||
android:includeFontPadding="false"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="@id/view_bg" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="5dp"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginEnd="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:overScrollMode="never"
|
||||
android:scrollbars="none"
|
||||
app:layout_constraintBottom_toTopOf="@id/tv_close"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_bg"
|
||||
app:layout_constraintStart_toStartOf="@id/view_bg"
|
||||
app:layout_constraintTop_toBottomOf="@id/tv_title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_close"
|
||||
android:layout_width="104dp"
|
||||
android:layout_height="32dp"
|
||||
android:layout_marginBottom="42dp"
|
||||
android:background="@drawable/treasure_fairy_bg_forest_prize_close"
|
||||
android:gravity="center"
|
||||
android:text="关 闭"
|
||||
android:textColor="#ff008573"
|
||||
android:textSize="13sp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_bg"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@@ -27,6 +27,33 @@
|
||||
app:layout_constraintTop_toTopOf="@id/view_bg_top"
|
||||
app:layout_constraintWidth_percent="0.91" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_fairy_0"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginStart="30dp"
|
||||
android:layout_marginBottom="46dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_bg_anim"
|
||||
app:layout_constraintStart_toStartOf="@id/view_bg_anim" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_fairy_1"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginBottom="26dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_bg_anim"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_bg_anim"
|
||||
app:layout_constraintStart_toStartOf="@id/view_bg_anim" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_fairy_2"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginEnd="30dp"
|
||||
android:layout_marginBottom="46dp"
|
||||
app:layout_constraintBottom_toBottomOf="@id/view_bg_anim"
|
||||
app:layout_constraintEnd_toEndOf="@id/view_bg_anim" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_begin"
|
||||
android:layout_width="142dp"
|
||||
@@ -90,6 +117,7 @@
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/recycler_view"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="13dp"
|
||||
|
@@ -16,6 +16,7 @@
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_cover"
|
||||
android:background="@drawable/shape_006e7c_to_00b9af"
|
||||
app:cborder_color="#F4FFC3"
|
||||
app:cborder_width="1px" />
|
||||
|
||||
|
@@ -15,6 +15,7 @@
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_cover"
|
||||
app:cborder_color="#F4FFC3"
|
||||
android:background="@drawable/shape_006e7c_to_00b9af"
|
||||
app:cborder_width="1px" />
|
||||
|
||||
<TextView
|
||||
|
@@ -1,43 +1,53 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<FrameLayout 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="wrap_content"
|
||||
android:layout_marginStart="2dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:background="@drawable/treasure_fairy_bg_test_fairy_item_select"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
android:background="@drawable/treasure_fairy_bg_test_fairy_item_unselect">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_fairy_icon"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_cover" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fairy_name"
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:id="@+id/ll_root"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="5dp"
|
||||
android:ellipsize="end"
|
||||
android:background="@drawable/treasure_fairy_bg_test_fairy_item_select"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:maxLines="1"
|
||||
android:text="精灵球"
|
||||
android:textColor="#1F5764"
|
||||
android:textSize="13sp" />
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fairy_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="1/5"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp" />
|
||||
<ImageView
|
||||
android:id="@+id/iv_fairy_icon"
|
||||
android:layout_width="52dp"
|
||||
android:layout_height="52dp"
|
||||
android:layout_gravity="center"
|
||||
android:scaleType="centerCrop"
|
||||
android:src="@drawable/default_cover" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fairy_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:layout_marginTop="5dp"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center"
|
||||
android:includeFontPadding="false"
|
||||
android:maxLines="1"
|
||||
android:text="精灵球"
|
||||
android:textColor="#1F5764"
|
||||
android:textSize="13sp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fairy_num"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="1/5"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp" />
|
||||
</LinearLayout>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
</LinearLayout>
|
@@ -0,0 +1,69 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout 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="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_marginBottom="5dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal"
|
||||
tools:background="@color/black">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_time_year"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp"
|
||||
tools:text="2023.03.02" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_time_hour"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="11sp"
|
||||
tools:text="18:25:56" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_prize_type"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="13sp"
|
||||
tools:text="类型" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_fairy_infos"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/white"
|
||||
android:textSize="12sp"
|
||||
tools:text="小火龙x1" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_prize_name"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:textColor="#FEF8A8"
|
||||
android:textSize="12sp"
|
||||
tools:text="获得奖励" />
|
||||
|
||||
|
||||
</LinearLayout>
|
Reference in New Issue
Block a user