作者 zhangji

全能题库模块页面写完

正在显示 99 个修改的文件 包含 2752 行增加60 行删除
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="1.8" />
<bytecodeTargetLevel target="11" />
</component>
</project>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
... ...
... ... @@ -73,6 +73,14 @@
<activity android:name=".ui.home.activity.TextCourseActivity" />
<activity android:name=".ui.home.activity.TextDetailActivity" />
<activity android:name=".ui.home.activity.OnlineActivity" />
<activity android:name=".ui.bank.activity.PracticeActivity" />
<activity android:name=".ui.bank.activity.AnswerSheetActivity" />
<activity android:name=".ui.bank.activity.ChallengeActivity" />
<activity android:name=".ui.bank.activity.LeaderboardActivity" />
<activity android:name=".ui.bank.activity.MockExamActivity" />
<activity android:name=".ui.bank.activity.ExamTypeActivity" />
<activity android:name=".ui.bank.activity.ExamDetailActivity" />
<activity android:name=".ui.bank.activity.ExamCardActivity" />
<activity android:name=".ui.home.activity.OnlineDetailActivity"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<activity android:name=".ui.home.activity.LiveCourseActivity"/>
... ...
package com.br_technology.securitytrain_master.ui.home.adapter
package com.br_technology.securitytrain_master.base.view
import android.view.ViewGroup
import androidx.fragment.app.Fragment
... ... @@ -10,7 +10,7 @@ import androidx.fragment.app.FragmentPagerAdapter
* auth:张继
* des:
*/
class ResultPagerAdapter(fm: FragmentManager, behavior: Int) : FragmentPagerAdapter(fm, behavior) {
class BasePagerAdapter(fm: FragmentManager, behavior: Int) : FragmentPagerAdapter(fm, behavior) {
private val fragments: MutableList<Fragment> = ArrayList()
private val titles: MutableList<String> = ArrayList()
... ... @@ -34,7 +34,7 @@ class ResultPagerAdapter(fm: FragmentManager, behavior: Int) : FragmentPagerAdap
// super.destroyItem(container, position, `object`)
}
override fun getPageTitle(position: Int): CharSequence? {
override fun getPageTitle(position: Int): CharSequence {
return titles[position]
}
}
\ No newline at end of file
... ...
... ... @@ -2,7 +2,9 @@ package com.br_technology.securitytrain_master.expand
import android.widget.ImageView
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.util.CircleBorder
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.CircleCrop
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
... ... @@ -19,6 +21,14 @@ fun ImageView.glideRound(pic: Int, round: Int) {
.into(this)
}
fun ImageView.glideRound(pic: Int, borderWidth: Float, borderColor: Int) {
Glide.with(this)
.load(pic)
.apply(RequestOptions.bitmapTransform(CircleCrop()))
.transform(CircleBorder(borderWidth, borderColor))
.into(this)
}
fun ImageView.courseHead(pic: String) {
Glide.with(this)
.load(pic)
... ...
... ... @@ -4,9 +4,13 @@ import android.R.attr
import android.content.Context
import android.graphics.Point
import android.graphics.Rect
import android.text.Spannable
import android.text.SpannableString
import android.text.style.AbsoluteSizeSpan
import android.util.Log
import android.view.View
import android.view.WindowManager
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
... ... @@ -36,7 +40,7 @@ fun View.screenHeight(): Int {
return point.y
}
fun RecyclerView.addItemDecoration3(spanCount: Int, spacing: Int) {
fun RecyclerView.addItemDecoration3(spanCount: Int, spacing: Int, top: Int) {
this.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
... ... @@ -47,25 +51,27 @@ fun RecyclerView.addItemDecoration3(spanCount: Int, spacing: Int) {
super.getItemOffsets(outRect, view, parent, state)
//这里是关键,需要根据你有几列来判断
val position: Int = parent.getChildAdapterPosition(view) // item position
val column = position % spanCount // item column
outRect.top = 32
when (column) {
when (position % spanCount) {
0 -> {
outRect.top = top
outRect.left = 0
outRect.right = spacing
}
1 -> {
outRect.top = top
outRect.left = spacing
outRect.right = spacing
}
else -> {
outRect.top = top
outRect.left = spacing
outRect.right=0
}
}
}
})
}
fun RecyclerView.addItemDecoration2(spanCount: Int, spacing: Int) {
fun RecyclerView.addItemDecoration2(spanCount: Int, spacing: Int, top: Int) {
this.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
... ... @@ -78,14 +84,23 @@ fun RecyclerView.addItemDecoration2(spanCount: Int, spacing: Int) {
val position: Int = parent.getChildAdapterPosition(view) // item position
when (position % spanCount) {
0 -> {
outRect.top = 24
outRect.top = top
outRect.left = 0
outRect.right = spacing
}
else -> {
outRect.top = 24
outRect.top = top
outRect.left = spacing
outRect.right=0
}
}
}
})
}
fun TextView.percentage() {
val text = this.text
val span=SpannableString(text)
span.setSpan(AbsoluteSizeSpan(20.dp2px()),0,text.length-1,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
this.text=span
}
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.br_technology.securitytrain_master.databinding.ActivityAnswerSheetBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.ui.bank.adapter.AnswerSheetAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.AnswerSheetViewModel
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/30 17:26
* auth:张继
* des:答题卡
*/
class AnswerSheetActivity : BaseLifeCycleActivity<AnswerSheetViewModel, ActivityAnswerSheetBinding>(
ActivityAnswerSheetBinding::inflate
) {
override fun initData() {
super.initData()
binding.apply {
// 答题卡
sheet.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
super.getItemOffsets(outRect, view, parent, state)
outRect.top = 16.dp2px()
if (parent.getChildAdapterPosition(view) == 0) {
outRect.left = 16.dp2px()
} else {
outRect.left = 13.dp2px()
}
}
})
// 答题卡适配器
val answerSheetAdapter = AnswerSheetAdapter()
val list = listOf(
"",
"",
"",
"",
"",
"",
"",
"",
)
sheet.adapter = answerSheetAdapter
answerSheetAdapter.addList(list)
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import android.view.View
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.ActivityChallengeBinding
import com.br_technology.securitytrain_master.ui.bank.adapter.ChallengeAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.ChallengeViewModel
import com.br_technology.securitytrain_master.view.DialogTitle
import com.br_technology.securitytrain_master.view.listener.DialogListener
import com.br_technology.securitytrain_master.view.listener.OnItemClickListener
import com.br_technology.securitytrain_master.view.listener.ToolBarClickListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/31 10:47
* auth:张继
* des: 挑战答题
*/
class ChallengeActivity :
BaseLifeCycleActivity<ChallengeViewModel, ActivityChallengeBinding>(ActivityChallengeBinding::inflate) {
private val titleDialog by lazy {
DialogTitle(this)
}
override fun initData() {
super.initData()
binding.apply {
toolBar.setRightText("答题卡")
toolBar.setRightTextDrawable(
ContextCompat.getDrawable(
baseContext,
R.mipmap.answer_sheet
)
)
// 答题卡点击事件
toolBar.addRightListener(object : ToolBarClickListener {
override fun onClick(view: View) {
startActivity(AnswerSheetActivity::class.java)
}
})
val topicAdapter = ChallengeAdapter()
topicAdapter.addListener(object : OnItemClickListener<String> {
override fun onClick(position: Int, data: String) {
topicAdapter.index = position
topicAdapter.notifyDataSetChanged()
}
})
val list = listOf(
"A.泰国奸商回收20万个“二手口罩”翻新出售",
"B.紧急呼叫丨江西539元贪污案宣判",
"C.往武汉送海鲜确诊!浙江男司机冲医生怒吼",
"D.17名驰援湖北“最美逆行者”",
)
topicRecycler.adapter = topicAdapter
topicAdapter.addList(list)
// 上一题
previous.setOnClickListener { }
// 下一题
next.setOnClickListener {
}
// 交卷
finishJob.setOnClickListener {
if (!titleDialog.isShowing) {
titleDialog.setTitleSpan("答对6道题").setInfo("共9道题").show()
}
}
}
// 交卷弹框完成点击事件
titleDialog.setListener(object : DialogListener {
override fun determine() {
finish()
}
})
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import android.graphics.Rect
import android.view.View
import androidx.recyclerview.widget.RecyclerView
import com.br_technology.securitytrain_master.databinding.ActivityExamCardBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.ui.bank.adapter.AnswerSheetAdapter
import com.br_technology.securitytrain_master.ui.bank.adapter.ExamCardAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.ExamCardViewModel
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/31 17:04
* auth:张继
* des:模拟考试答题卡
*/
class ExamCardActivity : BaseLifeCycleActivity<ExamCardViewModel, ActivityExamCardBinding>(
ActivityExamCardBinding::inflate
) {
override fun initData() {
super.initData()
binding.apply {
// 答题卡
sheet.addItemDecoration(object : RecyclerView.ItemDecoration() {
override fun getItemOffsets(
outRect: Rect,
view: View,
parent: RecyclerView,
state: RecyclerView.State
) {
super.getItemOffsets(outRect, view, parent, state)
outRect.top = 16.dp2px()
if (parent.getChildAdapterPosition(view) == 0) {
outRect.left = 16.dp2px()
} else {
outRect.left = 13.dp2px()
}
}
})
// 答题卡适配器
val examCardAdapter = ExamCardAdapter()
val list = listOf(
"",
"",
"",
"",
"",
"",
"",
"",
)
sheet.adapter = examCardAdapter
examCardAdapter.addList(list)
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import android.view.View
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.ActivityExamDetailBinding
import com.br_technology.securitytrain_master.ui.bank.adapter.ExamDetailAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.ExamDetailViewModel
import com.br_technology.securitytrain_master.view.DialogContinueAnswer
import com.br_technology.securitytrain_master.view.listener.DialogListener
import com.br_technology.securitytrain_master.view.listener.OnItemClickListener
import com.br_technology.securitytrain_master.view.listener.ToolBarClickListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/31 10:47
* auth:张继
* des: 模拟考试答题
*/
class ExamDetailActivity :
BaseLifeCycleActivity<ExamDetailViewModel, ActivityExamDetailBinding>(ActivityExamDetailBinding::inflate) {
private val dialogContinueAnswer by lazy {
DialogContinueAnswer(this)
}
override fun initData() {
super.initData()
binding.apply {
toolBar.setTitle("倒计时:00:28:16")
toolBar.setRightText("答题卡")
toolBar.setRightTextDrawable(
ContextCompat.getDrawable(
baseContext,
R.mipmap.answer_sheet
)
)
// 答题卡点击事件
toolBar.addRightListener(object : ToolBarClickListener {
override fun onClick(view: View) {
startActivity(ExamCardActivity::class.java)
}
})
val topicAdapter = ExamDetailAdapter()
topicAdapter.addListener(object : OnItemClickListener<String> {
override fun onClick(position: Int, data: String) {
topicAdapter.index = position
topicAdapter.notifyDataSetChanged()
}
})
val list = listOf(
"A.泰国奸商回收20万个“二手口罩”翻新出售",
"B.紧急呼叫丨江西539元贪污案宣判",
"C.往武汉送海鲜确诊!浙江男司机冲医生怒吼",
"D.17名驰援湖北“最美逆行者”",
)
topicRecycler.adapter = topicAdapter
topicAdapter.addList(list)
// 上一题
previous.setOnClickListener { }
// 下一题
next.setOnClickListener {
}
// 交卷
finishJob.setOnClickListener {
if (!dialogContinueAnswer.isShowing) {
dialogContinueAnswer.show()
}
}
}
// 交卷弹框完成点击事件
dialogContinueAnswer.setListener(object : DialogListener {
override fun determine() {
finish()
}
})
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.ActivityExamTypeBinding
import com.br_technology.securitytrain_master.ui.bank.viewmodel.ExamTypeViewModel
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/31 16:28
* auth:张继
* des:考试题型
*/
class ExamTypeActivity :
BaseLifeCycleActivity<ExamTypeViewModel, ActivityExamTypeBinding>(ActivityExamTypeBinding::inflate) {
override fun initData() {
super.initData()
binding.apply {
toolBar.setBackImg(R.mipmap.ic_back_white)
toolBar.setTitleColor(ContextCompat.getColor(baseContext, R.color.white))
// 开始做题
begin.setOnClickListener {
startActivity(ExamDetailActivity::class.java)
}
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityLeaderboardBinding
import com.br_technology.securitytrain_master.ui.bank.fragment.LeaderboardFragment
import com.br_technology.securitytrain_master.ui.bank.viewmodel.LeaderboardViewModel
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/31 11:06
* auth:张继
* des:排行榜
*/
class LeaderboardActivity : BaseLifeCycleActivity<LeaderboardViewModel, ActivityLeaderboardBinding>(
ActivityLeaderboardBinding::inflate
) {
override fun initData() {
super.initData()
binding.apply {
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
val list =
listOf(LeaderboardFragment(), LeaderboardFragment(), LeaderboardFragment())
val titles = listOf("周榜", "月榜", "总榜")
searchResultAdapter.addData(list)
searchResultAdapter.addTitle(titles)
viewPager.adapter = searchResultAdapter
tabLayout.setupWithViewPager(viewPager)
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.activity
import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityMockBinding
import com.br_technology.securitytrain_master.ui.bank.fragment.MockExamFragment
import com.br_technology.securitytrain_master.ui.bank.viewmodel.MockExamViewModel
import com.br_technology.securitytrain_master.view.ClassifyPop
import com.br_technology.securitytrain_master.view.listener.ToolBarClickListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
/**
* createTime:2021/7/31 15:36
* auth:张继
* des:模拟考试
*/
class MockExamActivity :
BaseLifeCycleActivity<MockExamViewModel, ActivityMockBinding>(ActivityMockBinding::inflate) {
private val classifyPop by lazy {
ClassifyPop(this)
}
override fun initData() {
super.initData()
binding.apply {
toolBar.setRightText("焊工")
toolBar.setRightTextDrawable(
ContextCompat.getDrawable(
baseContext,
R.mipmap.down_arrow
)
)
// 答题卡点击事件
toolBar.addRightListener(object : ToolBarClickListener {
override fun onClick(view: View) {
if (!classifyPop.isShowing) {
classifyPop.showAsDropDown(view)
}
}
})
val listTitle = listOf(
"未答试卷",
"已答试卷",
)
val listFragment = listOf(MockExamFragment(), MockExamFragment())
val adapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
viewPager.adapter = adapter
adapter.addTitle(listTitle)
adapter.addData(listFragment)
tabLayout.setupWithViewPager(viewPager)
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
... ... @@ -43,7 +43,7 @@ class PracticeActivity :
// 答题卡点击事件
toolBar.addRightListener(object : ToolBarClickListener {
override fun onClick(view: View) {
startActivity(AnswerSheetActivity::class.java)
}
})
val topicAdapter = TopicAdapter()
... ...
package com.br_technology.securitytrain_master.ui.bank.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import com.br_technology.securitytrain_master.base.view.BaseAdapter
import com.br_technology.securitytrain_master.databinding.AdapterAnswerSheetBinding
/**
* createTime:2021/7/31 8:43
* auth:张继
* des:
*/
class AnswerSheetAdapter: BaseAdapter<String,AdapterAnswerSheetBinding>() {
override fun getViewBinding(
context: Context,
parent: ViewGroup,
viewType: Int,
from: LayoutInflater
): AdapterAnswerSheetBinding {
return AdapterAnswerSheetBinding.inflate(from,parent,false)
}
override fun onBind(holder: AdapterAnswerSheetBinding, position: Int, data: String) {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BaseAdapter
import com.br_technology.securitytrain_master.databinding.AdapterChallengeBinding
import com.br_technology.securitytrain_master.databinding.AdapterTopicBinding
/**
* createTime:2021/7/30 15:45
* auth:张继
* des: 每日一练选择题列表适配器
*/
class ChallengeAdapter : BaseAdapter<String, AdapterChallengeBinding>() {
var index: Int = -1
override fun getViewBinding(
context: Context,
parent: ViewGroup,
viewType: Int,
from: LayoutInflater
): AdapterChallengeBinding {
return AdapterChallengeBinding.inflate(from, parent, false)
}
override fun onBind(holder: AdapterChallengeBinding, position: Int, data: String) {
holder.name.text = data
holder.name.setBackgroundResource(R.drawable.stroke_eb_4)
holder.name.setTextColor(ContextCompat.getColor(holder.root.context, R.color.color_32))
// 选择与正确
if (position == index) {
holder.name.setBackgroundResource(R.drawable.solid_stroke_25_4_1025)
holder.name.setTextColor(ContextCompat.getColor(holder.root.context, R.color.color_25))
}
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import com.br_technology.securitytrain_master.base.view.BaseAdapter
import com.br_technology.securitytrain_master.databinding.AdapterAnswerSheetBinding
import com.br_technology.securitytrain_master.databinding.AdapterExamCardBinding
/**
* createTime:2021/7/31 8:43
* auth:张继
* des:
*/
class ExamCardAdapter: BaseAdapter<String,AdapterExamCardBinding>() {
override fun getViewBinding(
context: Context,
parent: ViewGroup,
viewType: Int,
from: LayoutInflater
): AdapterExamCardBinding {
return AdapterExamCardBinding.inflate(from,parent,false)
}
override fun onBind(holder: AdapterExamCardBinding, position: Int, data: String) {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BaseAdapter
import com.br_technology.securitytrain_master.databinding.AdapterChallengeBinding
import com.br_technology.securitytrain_master.databinding.AdapterTopicBinding
/**
* createTime:2021/7/30 15:45
* auth:张继
* des: 每日一练选择题列表适配器
*/
class ExamDetailAdapter : BaseAdapter<String, AdapterChallengeBinding>() {
var index: Int = -1
override fun getViewBinding(
context: Context,
parent: ViewGroup,
viewType: Int,
from: LayoutInflater
): AdapterChallengeBinding {
return AdapterChallengeBinding.inflate(from, parent, false)
}
override fun onBind(holder: AdapterChallengeBinding, position: Int, data: String) {
holder.name.text = data
holder.name.setBackgroundResource(R.drawable.stroke_eb_4)
holder.name.setTextColor(ContextCompat.getColor(holder.root.context, R.color.color_32))
// 选择与正确
if (position == index) {
holder.name.setBackgroundResource(R.drawable.solid_stroke_25_4_1025)
holder.name.setTextColor(ContextCompat.getColor(holder.root.context, R.color.color_25))
}
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BaseAdapter
import com.br_technology.securitytrain_master.databinding.AdapterLeaderboardBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.expand.glideRound
/**
* createTime:2021/7/31 14:47
* auth:张继
* des:
*/
class LeaderboardAdapter : BaseAdapter<String, AdapterLeaderboardBinding>() {
override fun getViewBinding(
context: Context,
parent: ViewGroup,
viewType: Int,
from: LayoutInflater
): AdapterLeaderboardBinding {
return AdapterLeaderboardBinding.inflate(from, parent, false)
}
override fun onBind(holder: AdapterLeaderboardBinding, position: Int, data: String) {
holder.head.glideRound(
R.mipmap.banner,
1.dp2px().toFloat(),
ContextCompat.getColor(holder.root.context, R.color.color_cece)
)
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.adapter
import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import com.br_technology.securitytrain_master.base.view.BaseAdapter
import com.br_technology.securitytrain_master.databinding.AdapterMockBinding
/**
* createTime:2021/7/31 15:49
* auth:张继
* des:
*/
class MockExamAdapter : BaseAdapter<String, AdapterMockBinding>() {
override fun getViewBinding(
context: Context,
parent: ViewGroup,
viewType: Int,
from: LayoutInflater
): AdapterMockBinding {
return AdapterMockBinding.inflate(from, parent, false)
}
override fun onBind(holder: AdapterMockBinding, position: Int, data: String) {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.fragment
import com.br_technology.securitytrain_master.databinding.FragmentBankBinding
import com.br_technology.securitytrain_master.ui.bank.activity.ChallengeActivity
import com.br_technology.securitytrain_master.ui.bank.activity.LeaderboardActivity
import com.br_technology.securitytrain_master.ui.bank.activity.MockExamActivity
import com.br_technology.securitytrain_master.ui.bank.activity.PracticeActivity
import com.br_technology.securitytrain_master.ui.bank.adapter.PracticeAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.BankViewModel
import com.br_technology.securitytrain_master.ui.bank.viewmodel.LeaderboardViewModel
import com.br_technology.securitytrain_master.view.ClassifyPop
import com.br_technology.securitytrain_master.view.DialogStar
import com.br_technology.securitytrain_master.view.listener.DialogListener
import com.br_technology.securitytrain_master.view.listener.OnItemClickListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleFragment
... ... @@ -19,6 +25,9 @@ class BankFragment :
private val classifyPop by lazy {
ClassifyPop(requireActivity())
}
private val dialogStarDialog by lazy {
DialogStar(requireActivity())
}
override fun initData() {
super.initData()
... ... @@ -29,9 +38,24 @@ class BankFragment :
classifyPop.showAsDropDown(it)
}
}
// 模拟考试
mockExam.setOnClickListener {
startActivity(MockExamActivity::class.java)
}
// 每日一练
practiceDaily.setOnClickListener {
startActivity(PracticeActivity::class.java)
}
// 挑战答题
challengeAnswer.setOnClickListener {
if (!dialogStarDialog.isShowing) {
dialogStarDialog.show()
}
}
// 排行榜
leaderboardGroup.setOnClickListener{
startActivity(LeaderboardActivity::class.java)
}
// 练习题列表
... ... @@ -53,6 +77,17 @@ class BankFragment :
practice.adapter = practiceAdapter
practiceAdapter.addList(list)
}
// 挑战答题弹框
dialogStarDialog.setListener(object :DialogListener{
override fun determine() {
startActivity(ChallengeActivity::class.java)
dialogStarDialog.dismiss()
}
})
}
... ...
package com.br_technology.securitytrain_master.ui.bank.fragment
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.FragmentLeaderboardBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.expand.glideRound
import com.br_technology.securitytrain_master.expand.percentage
import com.br_technology.securitytrain_master.ui.bank.adapter.LeaderboardAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.LeaderboardFViewModel
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleFragment
/**
* createTime:2021/7/31 15:18
* auth:张继
* des:
*/
class LeaderboardFragment:BaseLifeCycleFragment<LeaderboardFViewModel,FragmentLeaderboardBinding>(FragmentLeaderboardBinding::inflate) {
override fun initData() {
super.initData()
binding.apply {
twoImg.glideRound(
R.mipmap.banner,
1.dp2px().toFloat(),
ContextCompat.getColor(requireContext(), R.color.color_cece)
)
oneImg.glideRound(
R.mipmap.banner,
1.dp2px().toFloat(),
ContextCompat.getColor(requireContext(), R.color.color_cece)
)
threeImg.glideRound(
R.mipmap.banner,
1.dp2px().toFloat(),
ContextCompat.getColor(requireContext(), R.color.color_cece)
)
myHead.glideRound(
R.mipmap.banner,
1.dp2px().toFloat(),
ContextCompat.getColor(requireContext(), R.color.color_cece)
)
val leaderboardAdapter = LeaderboardAdapter()
leaderboardRecycler.adapter = leaderboardAdapter
val list = listOf(
"",
"",
"",
"",
"",
"",
"",
)
leaderboardAdapter.addList(list)
percentage.percentage()
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.fragment
import com.br_technology.securitytrain_master.databinding.FragmentMockBinding
import com.br_technology.securitytrain_master.ui.bank.activity.ExamTypeActivity
import com.br_technology.securitytrain_master.ui.bank.adapter.MockExamAdapter
import com.br_technology.securitytrain_master.ui.bank.viewmodel.MockExamFViewModel
import com.br_technology.securitytrain_master.view.listener.OnItemClickListener
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleFragment
/**
* createTime:2021/7/31 15:43
* auth:张继
* des:
*/
class MockExamFragment :
BaseLifeCycleFragment<MockExamFViewModel, FragmentMockBinding>(FragmentMockBinding::inflate) {
override fun initData() {
super.initData()
binding.apply {
val mockExamAdapter = MockExamAdapter()
mockExamAdapter.addListener(object :OnItemClickListener<String>{
override fun onClick(position: Int, data: String) {
startActivity(ExamTypeActivity::class.java)
}
})
recycler.adapter = mockExamAdapter
val list = listOf(
"",
"",
"",
"",
"",
"",
)
mockExamAdapter.addList(list)
}
}
override fun initDataObserver() {
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class AnswerSheetRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class ChallengeRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class ExamCardRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class ExamDetailRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class ExamTypeRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class LeaderboardFRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class LeaderboardRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class MockExamFRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.repository
import androidx.lifecycle.MutableLiveData
import com.br_technology.securitytrain_master.base.common.State
import com.wjx.android.wanandroidmvvm.base.repository.ApiRepository
/**
* createTime:2021/7/27 15:49
* auth:张继
* des:
*/
class MockExamRepository(val loadState: MutableLiveData<State>):ApiRepository() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.AnswerSheetRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class AnswerSheetViewModel:BaseViewModel<AnswerSheetRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.ChallengeRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class ChallengeViewModel:BaseViewModel<ChallengeRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.AnswerSheetRepository
import com.br_technology.securitytrain_master.ui.bank.repository.ExamCardRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class ExamCardViewModel:BaseViewModel<ExamCardRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.ChallengeRepository
import com.br_technology.securitytrain_master.ui.bank.repository.ExamDetailRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class ExamDetailViewModel:BaseViewModel<ExamDetailRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.BankRepository
import com.br_technology.securitytrain_master.ui.bank.repository.ExamTypeRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class ExamTypeViewModel:BaseViewModel<ExamTypeRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.LeaderboardFRepository
import com.br_technology.securitytrain_master.ui.bank.repository.LeaderboardRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class LeaderboardFViewModel:BaseViewModel<LeaderboardFRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.LeaderboardRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class LeaderboardViewModel:BaseViewModel<LeaderboardRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.LeaderboardRepository
import com.br_technology.securitytrain_master.ui.bank.repository.MockExamFRepository
import com.br_technology.securitytrain_master.ui.bank.repository.MockExamRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class MockExamFViewModel:BaseViewModel<MockExamFRepository>() {
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.ui.bank.viewmodel
import com.br_technology.securitytrain_master.ui.bank.repository.LeaderboardRepository
import com.br_technology.securitytrain_master.ui.bank.repository.MockExamRepository
import com.wjx.android.wanandroidmvvm.base.viewmodel.BaseViewModel
/**
* createTime:2021/7/27 15:48
* auth:张继
* des:
*/
class MockExamViewModel:BaseViewModel<MockExamRepository>() {
}
\ No newline at end of file
... ...
... ... @@ -4,11 +4,9 @@ import android.view.View
import androidx.core.content.ContextCompat
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityLiveCourseBinding
import com.br_technology.securitytrain_master.ui.home.adapter.ResultPagerAdapter
import com.br_technology.securitytrain_master.ui.home.fragment.CourseListFragment
import com.br_technology.securitytrain_master.ui.home.fragment.OnLiveCourseFragment
import com.br_technology.securitytrain_master.ui.home.fragment.OnlineDetailFragment
import com.br_technology.securitytrain_master.ui.home.viewmodel.LiveCourseViewModel
import com.br_technology.securitytrain_master.view.ClassifyPop
import com.br_technology.securitytrain_master.view.listener.ToolBarClickListener
... ... @@ -58,7 +56,7 @@ class LiveCourseActivity
}
})
val searchResultAdapter = ResultPagerAdapter(
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
... ...
... ... @@ -48,7 +48,7 @@ class OnlineActivity :
}
})
onlineRecycler.addItemDecoration2(2, 15)
onlineRecycler.addItemDecoration2(2, 15,24)
val videoCourseAdapter = VideoCourseAdapter()
val list = mutableListOf(
VideoCourse(R.mipmap.banner, "10课时", "自动化制作课程", "", "张钧-三岗职位培训班"),
... ...
... ... @@ -3,8 +3,8 @@ package com.br_technology.securitytrain_master.ui.home.activity
import android.content.res.Configuration
import android.view.View
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityOnlineDetailBinding
import com.br_technology.securitytrain_master.ui.home.adapter.ResultPagerAdapter
import com.br_technology.securitytrain_master.ui.home.fragment.CourseListFragment
import com.br_technology.securitytrain_master.ui.home.fragment.OnlineDetailFragment
import com.br_technology.securitytrain_master.ui.home.viewmodel.OnlineDetailViewModel
... ... @@ -37,7 +37,7 @@ class OnlineDetailActivity
binding.apply {
val searchResultAdapter = ResultPagerAdapter(
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
... ... @@ -55,12 +55,12 @@ class OnlineDetailActivity
"http://9890.vod.myqcloud.com/9890_4e292f9a3dd011e6b4078980237cc3d3.f20.mp4"
videoPlayer.setUp(source1, true, "测试视频")
videoPlayer.backButton.visibility = View.GONE
videoPlayer.startButton.setOnClickListener({
videoPlayer.startButton.setOnClickListener {
videoPlayer.startPlayLogic()
})
}
videoPlayer.fullscreenButton.setOnClickListener {
orientationUtils!!.resolveByClick()
// orientationUtils!!.resolveByClick()
videoPlayer.startWindowFullscreen(this@OnlineDetailActivity,true,true)
}
... ...
package com.br_technology.securitytrain_master.ui.home.activity
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.view.MotionEvent
import android.view.View
import android.widget.EditText
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivitySearchBinding
import com.br_technology.securitytrain_master.ui.home.adapter.HistoryAdapter
import com.br_technology.securitytrain_master.ui.home.adapter.ResultPagerAdapter
import com.br_technology.securitytrain_master.ui.home.fragment.HomeFragment
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.ui.home.fragment.ResultFragment
import com.br_technology.securitytrain_master.ui.home.viewmodel.SearchViewModel
import com.br_technology.securitytrain_master.view.DialogSureCancel
... ... @@ -71,7 +67,7 @@ class SearchActivity :
viewPager.visibility = View.GONE
}
val searchResultAdapter = ResultPagerAdapter(
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
... ...
package com.br_technology.securitytrain_master.ui.home.fragment
import android.app.Activity
import android.content.Intent
import android.graphics.Rect
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.recyclerview.widget.RecyclerView
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.FragmentHomeBinding
import com.br_technology.securitytrain_master.expand.addItemDecoration2
... ... @@ -22,11 +12,8 @@ import com.br_technology.securitytrain_master.ui.home.viewmodel.MineViewModel
import com.bumptech.glide.Glide
import com.bumptech.glide.load.resource.bitmap.RoundedCorners
import com.bumptech.glide.request.RequestOptions
import com.gyf.immersionbar.ImmersionBar
import com.gyf.immersionbar.components.SimpleImmersionOwner
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleFragment
import com.youth.banner.Banner
import com.youth.banner.adapter.BannerAdapter
import com.youth.banner.adapter.BannerImageAdapter
import com.youth.banner.holder.BannerImageHolder
import com.youth.banner.indicator.CircleIndicator
... ... @@ -93,7 +80,7 @@ class HomeFragment :
}
// 视频课程
videoCourse.addItemDecoration2(2,15)
videoCourse.addItemDecoration2(2,15,24)
val videoCourseAdapter = VideoCourseAdapter()
val list = mutableListOf(
VideoCourse(R.mipmap.banner, "10课时", "自动化制作课程", "", "张钧-三岗职位培训班"),
... ...
... ... @@ -28,7 +28,7 @@ class OnLiveCourseFragment
super.initData()
binding.apply {
onlineRecycler.addItemDecoration2(2, 15)
onlineRecycler.addItemDecoration2(2, 15,24)
val videoCourseAdapter = VideoCourseAdapter()
val list = mutableListOf(
VideoCourse(R.mipmap.banner, "10课时", "自动化制作课程", "", "张钧-三岗职位培训班"),
... ...
package com.br_technology.securitytrain_master.ui.mine.activity
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityMyErrorQuestionBinding
import com.br_technology.securitytrain_master.ui.home.adapter.ResultPagerAdapter
import com.br_technology.securitytrain_master.ui.home.fragment.OnLiveCourseFragment
import com.br_technology.securitytrain_master.ui.mine.fragment.MyErrorQuestionFragment
import com.br_technology.securitytrain_master.ui.mine.viewmodel.MyErrorQuestionViewModel
import com.gyf.immersionbar.ImmersionBar
... ... @@ -31,7 +30,7 @@ class MyErrorQuestionActivity :
override fun initData() {
super.initData()
binding.apply {
val searchResultAdapter = ResultPagerAdapter(
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
... ...
package com.br_technology.securitytrain_master.ui.mine.activity
import androidx.fragment.app.FragmentPagerAdapter
import com.br_technology.securitytrain_master.base.view.BasePagerAdapter
import com.br_technology.securitytrain_master.databinding.ActivityQuestionRecordBinding
import com.br_technology.securitytrain_master.ui.home.adapter.ResultPagerAdapter
import com.br_technology.securitytrain_master.ui.mine.fragment.MockExaminationFragment
import com.br_technology.securitytrain_master.ui.mine.fragment.MyErrorQuestionFragment
import com.br_technology.securitytrain_master.ui.mine.fragment.SpecialExercisesFragment
import com.br_technology.securitytrain_master.ui.mine.viewmodel.QuestionRecordViewModel
import com.wjx.android.wanandroidmvvm.base.view.BaseLifeCycleActivity
... ... @@ -25,7 +24,7 @@ class QuestionRecordActivity :
override fun initData() {
super.initData()
binding.apply {
val searchResultAdapter = ResultPagerAdapter(
val searchResultAdapter = BasePagerAdapter(
supportFragmentManager,
FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
)
... ...
package com.br_technology.securitytrain_master.util
import android.content.res.Resources
import android.graphics.*
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation
import java.security.MessageDigest
/**
* createTime:2021/7/31 13:59
* auth:张继
* des:
*/
class CircleBorder(private val borderWidth: Float, borderColor: Int) : BitmapTransformation() {
private var borderPaint: Paint? = null
init {
borderPaint = Paint()
borderPaint!!.isDither = true
borderPaint!!.isAntiAlias = true
borderPaint!!.color = borderColor
borderPaint!!.style = Paint.Style.STROKE
borderPaint!!.strokeWidth = this.borderWidth
}
override fun transform(
pool: BitmapPool,
toTransform: Bitmap,
outWidth: Int,
outHeight: Int
): Bitmap? {
return circleCrop(pool, toTransform)
}
private fun circleCrop(pool: BitmapPool, source: Bitmap?): Bitmap? {
if (source == null) {
return null
}
val size = (Math.min(source.width, source.height) - borderWidth / 2).toInt()
val x = (source.width - size) / 2
val y = (source.height - size) / 2
val squared = Bitmap.createBitmap(source, x, y, size, size)
var result: Bitmap? = pool[size, size, Bitmap.Config.ARGB_8888]
if (result == null) {
result = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888)
}
//创建画笔 画布 手动描绘边框
val canvas = Canvas(result!!)
val paint = Paint()
paint.shader =
BitmapShader(squared, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP)
paint.isAntiAlias = true
val r = size / 2f
canvas.drawCircle(r, r, r - borderWidth, paint)
if (borderPaint != null) {
val borderRadius = r - borderWidth / 2
canvas.drawCircle(r, r, borderRadius, borderPaint!!)
}
return result
}
override fun updateDiskCacheKey(messageDigest: MessageDigest) {}
}
\ No newline at end of file
... ...
... ... @@ -2,12 +2,12 @@ package com.br_technology.securitytrain_master.view
import android.app.Activity
import android.view.LayoutInflater
import android.view.Window
import android.widget.PopupWindow
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.PopClassifyBinding
import com.br_technology.securitytrain_master.expand.*
import com.br_technology.securitytrain_master.expand.addItemDecoration3
import com.br_technology.securitytrain_master.expand.screenHeight
import com.br_technology.securitytrain_master.expand.screenWidth
import com.br_technology.securitytrain_master.ui.home.adapter.TextCourseTypeAdapter
import com.br_technology.securitytrain_master.view.listener.OnItemClickListener
... ... @@ -32,7 +32,7 @@ class ClassifyPop(context: Activity) : PopupWindow(context) {
binding.apply {
courseType.addItemDecoration3(3, 14)
courseType.addItemDecoration3(3, 14,32)
val list = listOf(
"测试",
"岗位1",
... ...
package com.br_technology.securitytrain_master.view
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.DialogContinueBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.expand.screenWidth
import com.br_technology.securitytrain_master.view.listener.DialogListener
/**
* createTime:2021/7/31 17:16
* auth:张继
* des:继续答题弹框
*/
class DialogContinueAnswer(context: Context) : Dialog(context, R.style.UserDefaultDialog) {
private var listener: DialogListener? = null
private val binding by lazy {
DialogContinueBinding.inflate(LayoutInflater.from(context))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
val attributes = window?.attributes
attributes?.width = binding.root.screenWidth() - 80.dp2px()
// 点击区域外不取消
setCanceledOnTouchOutside(false)
binding.apply {
// 继续
proceed.setOnClickListener {
listener?.determine()
}
close.setOnClickListener {
dismiss()
}
}
}
fun setListener(listener: DialogListener): DialogContinueAnswer {
this.listener = listener
return this
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.view
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.DialogStarBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.expand.screenWidth
import com.br_technology.securitytrain_master.view.listener.DialogListener
/**
* createTime:2021/7/28 13:45
* auth:张继
* des:
*/
class DialogStar(context: Context) : Dialog(context, R.style.UserDefaultDialog) {
private var listener: DialogListener? = null
private val binding by lazy {
DialogStarBinding.inflate(LayoutInflater.from(context))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
val attributes = window?.attributes
attributes?.width = binding.root.screenWidth() - 80.dp2px()
// 点击区域外不取消
setCanceledOnTouchOutside(false)
binding.apply {
// 确定
complete.setOnClickListener {
listener?.determine()
}
}
}
fun setListener(listener: DialogListener): DialogStar {
this.listener = listener
return this
}
fun setTitle(title: String): DialogStar {
binding.title.text = title
return this
}
}
\ No newline at end of file
... ...
package com.br_technology.securitytrain_master.view
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.DialogSubmitBinding
import com.br_technology.securitytrain_master.databinding.DialogSureCancelBinding
import com.br_technology.securitytrain_master.expand.dp2px
import com.br_technology.securitytrain_master.expand.screenWidth
import com.br_technology.securitytrain_master.view.listener.DialogListener
/**
* createTime:2021/7/28 13:45
* auth:张继
* des:提交弹框
*/
class DialogSubmit(context: Context) : Dialog(context, R.style.UserDefaultDialog) {
private var submitListener: DialogListener? = null
private var sheetListener: DialogListener? = null
private val binding by lazy {
DialogSubmitBinding.inflate(LayoutInflater.from(context))
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
val attributes = window?.attributes
attributes?.width = binding.root.screenWidth() - 80.dp2px()
// 点击区域外不取消
setCanceledOnTouchOutside(false)
binding.apply {
// 取消
close.setOnClickListener {
dismiss()
}
// 提交
submit.setOnClickListener {
submitListener?.determine()
}
answerSheet.setOnClickListener {
sheetListener?.determine()
}
}
}
fun addSubmitListener(listener: DialogListener): DialogSubmit {
this.submitListener = listener
return this
}
fun addSheetListener(listener: DialogListener): DialogSubmit {
this.sheetListener = listener
return this
}
}
\ No newline at end of file
... ...
... ... @@ -26,7 +26,7 @@ class DialogSureCancel(context: Context) : Dialog(context, R.style.UserDefaultDi
super.onCreate(savedInstanceState)
setContentView(binding.root)
val attributes = window?.attributes
attributes?.width = binding.root.screenWidth() - 40.dp2px()
attributes?.width = binding.root.screenWidth() - 80.dp2px()
// 点击区域外不取消
setCanceledOnTouchOutside(false)
... ...
... ... @@ -8,6 +8,7 @@ import android.text.SpannableString
import android.text.style.AbsoluteSizeSpan
import android.text.style.ForegroundColorSpan
import android.view.LayoutInflater
import android.view.View
import androidx.core.content.ContextCompat
import com.br_technology.securitytrain_master.R
import com.br_technology.securitytrain_master.databinding.DialogTitleBinding
... ... @@ -32,7 +33,7 @@ class DialogTitle(context: Context) : Dialog(context, R.style.UserDefaultDialog)
super.onCreate(savedInstanceState)
setContentView(binding.root)
val attributes = window?.attributes
attributes?.width = binding.root.screenWidth() - 40.dp2px()
attributes?.width = binding.root.screenWidth() - 80.dp2px()
// 点击区域外不取消
setCanceledOnTouchOutside(false)
... ... @@ -72,5 +73,11 @@ class DialogTitle(context: Context) : Dialog(context, R.style.UserDefaultDialog)
return this
}
fun setInfo(title: String): DialogTitle {
binding.info.text = title
binding.info.visibility = View.VISIBLE
return this
}
}
\ No newline at end of file
... ...
... ... @@ -51,6 +51,10 @@ class ViewToolBar(context: Context, attrs: AttributeSet) : RelativeLayout(contex
inflate.back.setImageResource(img)
}
fun setTitleColor(color: Int) {
inflate.title.setTextColor(color)
}
fun setTitle(text: String) {
inflate.title.text = text
}
... ...
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/collect_y" android:state_selected="true" />
<item android:drawable="@mipmap/collect_n" />
</selector>
\ No newline at end of file
... ...
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<padding
android:bottom="2px"
android:left="2px"
android:right="2px"
android:top="2px" />
<solid android:color="#0DCCCCCC" />
<corners android:radius="4dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="2px"
android:left="2px"
android:right="2px"
android:top="2px" />
<solid android:color="#10CCCCCC" />
<corners android:radius="4dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="2px"
android:left="2px"
android:right="2px"
android:top="2px" />
<solid android:color="#15CCCCCC" />
<corners android:radius="4dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="2px"
android:left="2px"
android:right="2px"
android:top="2px" />
<solid android:color="#20CCCCCC" />
<corners android:radius="4dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<padding
android:bottom="2px"
android:left="2px"
android:right="2px"
android:top="2px" />
<solid android:color="#30CCCCCC" />
<corners android:radius="4dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<solid android:color="#14898989" />
<corners android:radius="4dp" />
<padding
android:bottom="2px"
android:left="2px"
android:right="2px"
android:top="2px" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="4dp" />
<solid android:color="#FFFFFF" />
<padding
android:bottom="3px"
android:left="3px"
android:right="3px"
android:top="3px" />
</shape>
</item>
</layer-list>
... ...
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/solid_stroke_25_4_1025" android:state_selected="true" />
<item android:drawable="@drawable/solid_ff_4" />
</selector>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color_25" android:state_selected="true" />
<item android:color="@color/color_32" />
</selector>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/color_25" android:state_selected="true" />
<item android:color="@color/color_96" />
</selector>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/stroke_25_4" android:state_selected="true" />
<item android:drawable="@drawable/stroke_eb_4" />
</selector>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_eb" />
<corners android:radius="4dp" />
</shape>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_e3" />
<corners android:radius="4dp" />
</shape>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/color_f7" />
</shape>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<corners android:radius="12dp" />
</shape>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/practice_back" />
<include layout="@layout/layout_tool_bar" />
<com.br_technology.securitytrain_master.view.ViewToolBar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/status_bar"
app:toolTitle="每日一练" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tool_bar"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginBottom="8dp"
android:text="答题卡"
android:textColor="@color/color_32"
android:textSize="24sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/sheet"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_marginEnd="16dp"
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4" />
</RelativeLayout>
\ No newline at end of file
... ...
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/practice_back" />
<include layout="@layout/layout_tool_bar" />
<com.br_technology.securitytrain_master.view.ViewToolBar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/status_bar"
app:toolTitle="挑战答题" />
<TextView
android:id="@+id/topic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tool_bar"
android:layout_margin="16dp"
android:text="(1/9)男子从国外赶回陪产,回家第二天被隔离:孩子出生了我却见不到?"
android:textColor="@color/color_25"
android:textSize="18sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/topic_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/topic"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:overScrollMode="never"
android:paddingBottom="12dp"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/color_f7" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@mipmap/previous"
android:drawablePadding="4dp"
android:gravity="center_vertical"
android:text="上一题"
android:textColor="@color/color_25"
android:textSize="14sp" />
<View
android:layout_width="40dp"
android:layout_height="match_parent" />
<TextView
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@mipmap/next"
android:drawablePadding="4dp"
android:gravity="center_vertical"
android:text="下一题"
android:textColor="@color/color_25"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/finish_job"
android:layout_width="104dp"
android:layout_height="44dp"
android:background="@drawable/solid_25_4"
android:gravity="center"
android:text="交卷"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="match_parent"
android:orientation="vertical">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/practice_back" />
<include layout="@layout/layout_tool_bar" />
<com.br_technology.securitytrain_master.view.ViewToolBar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/status_bar"
app:toolTitle="倒计时" />
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tool_bar"
android:layout_marginStart="16dp"
android:layout_marginTop="24dp"
android:layout_marginBottom="8dp"
android:text="答题卡"
android:textColor="@color/color_32"
android:textSize="24sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/sheet"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_marginEnd="16dp"
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
app:spanCount="4" />
</RelativeLayout>
\ No newline at end of file
... ...
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/practice_back" />
<include layout="@layout/layout_tool_bar" />
<com.br_technology.securitytrain_master.view.ViewToolBar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/status_bar"
app:toolTitle="倒计时" />
<TextView
android:id="@+id/topic"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/tool_bar"
android:layout_margin="16dp"
android:text="(1/9)男子从国外赶回陪产,回家第二天被隔离:孩子出生了我却见不到?"
android:textColor="@color/color_25"
android:textSize="18sp" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/topic_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/topic"
android:layout_marginStart="16dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="16dp"
android:overScrollMode="never"
android:paddingBottom="12dp"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<FrameLayout
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_below="@id/topic_recycler"
android:layout_alignParentEnd="true"
android:layout_marginTop="40dp"
android:layout_marginEnd="50dp"
android:background="@drawable/selector_stroke_eb_25">
<TextView
android:id="@+id/collect"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:drawableTop="@drawable/collect"
android:drawablePadding="4dp"
android:text="收藏"
android:textColor="@drawable/selector_96_25"
android:textSize="12sp" />
</FrameLayout>
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="@color/color_f7" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/previous"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableStart="@mipmap/previous"
android:drawablePadding="4dp"
android:gravity="center_vertical"
android:text="上一题"
android:textColor="@color/color_25"
android:textSize="14sp" />
<View
android:layout_width="40dp"
android:layout_height="match_parent" />
<TextView
android:id="@+id/next"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableEnd="@mipmap/next"
android:drawablePadding="4dp"
android:gravity="center_vertical"
android:text="下一题"
android:textColor="@color/color_25"
android:textSize="14sp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/finish_job"
android:layout_width="104dp"
android:layout_height="44dp"
android:background="@drawable/solid_25_4"
android:gravity="center"
android:text="交卷"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
... ...
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/exam_back"
android:orientation="vertical">
<include layout="@layout/layout_tool_bar" />
<com.br_technology.securitytrain_master.view.ViewToolBar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:toolTitle="模拟考试" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="40dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="40dp"
android:background="@mipmap/exam_group"
android:orientation="vertical"
android:paddingStart="20dp"
android:paddingEnd="20dp">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="公共写字楼消防模拟测试"
android:textColor="@color/color_32"
android:textSize="18sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="考试时长:"
android:textColor="@color/color_32"
android:textSize="14sp" />
<TextView
android:id="@+id/duration"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="60分钟"
android:textColor="@color/color_25"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="12dp"
android:background="@color/color_eb" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="考试题数:"
android:textColor="@color/color_32"
android:textSize="14sp" />
<TextView
android:id="@+id/title_num"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="32道"
android:textColor="@color/color_25"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="12dp"
android:background="@color/color_eb" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="12dp"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="合格标准:"
android:textColor="@color/color_32"
android:textSize="14sp" />
<TextView
android:id="@+id/score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="80分"
android:textColor="@color/color_25"
android:textSize="14sp" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="12dp"
android:background="@color/color_eb" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@drawable/solid_eff2_4"
android:orientation="vertical"
android:minHeight="93dp">
<TextView
android:id="@+id/rule"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="问卷规则"
android:textColor="@color/color_64"
android:textSize="12sp" />
<TextView
android:id="@+id/rule_info"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:text="适用于:三七人员、矿下人员等适用于:三七人员、矿下人员等适用于:三七人员、矿下人员等适用于:三七人员、矿下人员等"
android:textColor="@color/color_64"
android:textSize="11sp" />
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/begin"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_marginStart="32dp"
android:layout_marginTop="64dp"
android:layout_marginEnd="32dp"
android:background="@drawable/solid_ff_12"
android:gravity="center"
android:text="开始考试"
android:textColor="@color/color_25"
android:textSize="16sp" />
</LinearLayout>
\ No newline at end of file
... ...
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout
android:id="@+id/group"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/leaderboard_back" />
<include layout="@layout/layout_tool_bar" />
<ImageView
android:id="@+id/back"
android:layout_width="wrap_content"
android:layout_height="?actionBarSize"
android:layout_below="@+id/status_bar"
android:layout_marginStart="16dp"
android:contentDescription="@string/logo"
android:src="@mipmap/ic_back_white" />
</RelativeLayout>
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/SearchTab"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:scrollbars="none" />
</LinearLayout>
\ No newline at end of file
... ...
<?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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/layout_tool_bar" />
<com.br_technology.securitytrain_master.view.ViewToolBar
android:id="@+id/tool_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:toolTitle="模拟考试" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
style="@style/SearchTab"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<View
android:layout_width="match_parent"
android:layout_height="8dp"
android:background="@color/color_f7" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:overScrollMode="never"
android:scrollbars="none" />
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="76dp"
android:layout_height="76dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/solid_ff_eb_4"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="1"
android:textColor="@color/color_32"
android:textSize="36sp" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="4dp"
android:src="@mipmap/error" />
</FrameLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="12dp"
android:gravity="center_vertical"
android:minHeight="62dp"
android:orientation="vertical"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:textSize="14sp" />
... ...
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="76dp"
android:layout_height="76dp"
android:layout_gravity="center_horizontal"
android:background="@drawable/selector_1025_ff"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="1"
android:textColor="@drawable/selector_32_25"
android:textSize="36sp" />
</FrameLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="88dp"
android:background="@drawable/leaderboard"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:id="@+id/rank"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="16dp"
android:background="@drawable/solid_ce_4"
android:gravity="center"
android:text="45"
android:textColor="@color/white"
android:textSize="14sp" />
<ImageView
android:id="@+id/head"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/banner" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:text="老人与海"
android:textColor="@color/color_19"
android:textSize="15sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginTop="2dp"
android:text="积分"
android:textColor="@color/color_a7"
android:textSize="11sp" />
</LinearLayout>
<TextView
android:id="@+id/percentage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="24dp"
android:text="867"
android:textColor="@color/color_69"
android:textSize="20sp" />
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="83dp"
android:background="@drawable/solid_eff2_4"
android:layout_marginBottom="8dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="24dp"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/logo"
android:src="@mipmap/txt" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_weight="1"
android:text="三岗练习"
android:textColor="@color/color_32"
android:textSize="14sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="12dp"
android:text="100分"
android:textColor="@color/color_25"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="7dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="44dp"
android:background="@drawable/solid_e3_4"
android:gravity="center"
android:minWidth="66dp"
android:minHeight="20dp"
android:text="57人做过"
android:textColor="@color/color_25"
android:textSize="12sp" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginEnd="12dp"
android:gravity="center_vertical"
android:text="2020-09-10 10:12:21"
android:textColor="@color/color_96"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/solid_ff_8"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32sp"
android:text="继续答题"
android:textColor="@color/color_32"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="剩余时间"
android:textColor="@color/color_96"
android:textSize="12sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="00:00:01"
android:textColor="@color/color_252"
android:textSize="24sp" />
<TextView
android:id="@+id/proceed"
android:layout_width="118dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="16sp"
android:layout_marginBottom="24dp"
android:background="@drawable/solid_25_4"
android:gravity="center"
android:text="继续答题"
android:textColor="@color/white"
android:textSize="15sp" />
</LinearLayout>
<ImageView
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="24dp"
android:contentDescription="@string/logo"
android:src="@mipmap/close" />
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:background="@drawable/solid_ff_8"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="80dp"
android:background="@drawable/solid_top_25_4">
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:contentDescription="@string/logo"
android:src="@mipmap/dialog_star_title" />
</FrameLayout>
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="32dp"
android:text="规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则规则" />
<TextView
android:id="@+id/complete"
android:layout_width="118dp"
android:layout_height="40dp"
android:layout_gravity="center_horizontal"
android:layout_marginTop="20dp"
android:layout_marginBottom="24dp"
android:background="@drawable/solid_25_4"
android:gravity="center"
android:text="进入练习"
android:textColor="@color/white"
android:textSize="15sp" />
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="40dp"
android:layout_marginEnd="40dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/solid_ff_8"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="32sp"
android:text="您还有9题未答,是否提交?"
android:textColor="@color/color_32"
android:textSize="18sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="8dp"
android:text="剩余时间"
android:textColor="@color/color_96"
android:textSize="12sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="00:00:01"
android:textColor="@color/color_252"
android:textSize="24sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="20dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="20dp"
android:layout_marginBottom="24dp"
android:orientation="horizontal">
<TextView
android:id="@+id/answer_sheet"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@drawable/solid_f2_4"
android:gravity="center"
android:text="答题卡"
android:textColor="@color/color_64"
android:textSize="15sp" />
<View
android:layout_width="20dp"
android:layout_height="match_parent" />
<TextView
android:id="@+id/submit"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_weight="1"
android:background="@drawable/solid_25_4"
android:gravity="center"
android:text="提交"
android:textColor="@color/white"
android:textSize="15sp" />
</LinearLayout>
</LinearLayout>
<ImageView
android:id="@+id/close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="24dp"
android:contentDescription="@string/logo"
android:src="@mipmap/close" />
</LinearLayout>
\ No newline at end of file
... ...
... ... @@ -31,6 +31,18 @@
android:text="答对6道题" />
<TextView
android:id="@+id/info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp"
android:layout_marginBottom="16dp"
android:gravity="center"
android:text="共9道题"
android:textColor="@color/color_96"
android:textSize="12sp"
android:visibility="gone" />
<TextView
android:id="@+id/complete"
android:layout_width="118dp"
android:layout_height="40dp"
... ...
<?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"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:overScrollMode="never"
android:scrollbars="none">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:orientation="horizontal">
<FrameLayout
android:layout_width="108dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:background="@drawable/leaderboard"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="53dp"
android:gravity="center"
android:text="二号葫芦娃"
android:textColor="@color/color_252"
android:textSize="13sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:gravity="center"
android:text="积分"
android:textColor="@color/color_a7"
android:textSize="11sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:gravity="center"
android:text="1000"
android:textColor="@color/color_69"
android:textSize="20sp" />
</LinearLayout>
<ImageView
android:id="@+id/two_img"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/banner" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="44dp"
android:src="@mipmap/two" />
</FrameLayout>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<FrameLayout
android:layout_width="108dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:background="@drawable/leaderboard"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="53dp"
android:gravity="center"
android:text="二号葫芦娃"
android:textColor="@color/color_252"
android:textSize="13sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:gravity="center"
android:text="积分"
android:textColor="@color/color_a7"
android:textSize="11sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:gravity="center"
android:text="1000"
android:textColor="@color/color_69"
android:textSize="20sp" />
</LinearLayout>
<ImageView
android:id="@+id/one_img"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/banner" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="44dp"
android:src="@mipmap/two" />
</FrameLayout>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<FrameLayout
android:layout_width="108dp"
android:layout_height="wrap_content"
android:layout_marginTop="30dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="30dp"
android:background="@drawable/leaderboard"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="53dp"
android:gravity="center"
android:text="二号葫芦娃"
android:textColor="@color/color_252"
android:textSize="13sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:gravity="center"
android:text="积分"
android:textColor="@color/color_a7"
android:textSize="11sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginBottom="16dp"
android:gravity="center"
android:text="1000"
android:textColor="@color/color_69"
android:textSize="20sp" />
</LinearLayout>
<ImageView
android:id="@+id/three_img"
android:layout_width="60dp"
android:layout_height="60dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitXY"
android:src="@mipmap/banner" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="44dp"
android:src="@mipmap/two" />
</FrameLayout>
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/leaderboard_recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:nestedScrollingEnabled="false"
android:overScrollMode="never"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@drawable/solid_f7"
android:gravity="center_vertical"
android:orientation="horizontal"
android:paddingStart="16dp">
<TextView
android:id="@+id/my_rank"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_marginStart="21dp"
android:background="@drawable/solid_ce_4"
android:gravity="center"
android:text="45"
android:textColor="@color/white"
android:textSize="14sp" />
<ImageView
android:id="@+id/my_head"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginStart="16dp"
android:contentDescription="@string/logo"
android:scaleType="fitXY"
android:src="@mipmap/banner" />
<TextView
android:id="@+id/my_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_weight="1"
android:text="老人与海"
android:textColor="@color/color_19"
android:textSize="14sp" />
<TextView
android:id="@+id/percentage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="12dp"
android:layout_marginEnd="32dp"
android:text="92.1%"
android:textColor="@color/color_25"
android:textSize="12sp" />
</LinearLayout>
</LinearLayout>
\ No newline at end of file
... ...
<?xml version="1.0" encoding="utf-8"?>
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:overScrollMode="never"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:scrollbars="none"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
... ...
... ... @@ -26,6 +26,11 @@
<color name="color_10BE8A">#10BE8A</color>
<color name="color_e8">#00E8A1</color>
<color name="color_e9">#E9405A</color>
<color name="color_ce">#CECED6</color>
<color name="color_19">#191833</color>
<color name="color_a7">#A7A6B3</color>
<color name="color_69">#696C7A</color>
<color name="color_cece">#CECECE</color>
<color name="color_f7">#F7F8FA</color>
<color name="color_e3">#E3F1FF</color>
<color name="color_dcdee0">#DCDEE0</color>
... ...