From dace50800b1446d4eca3715ca4b6f5dae6a38467 Mon Sep 17 00:00:00 2001 From: yuqian Date: Tue, 30 Sep 2025 14:58:40 +0800 Subject: [PATCH] add all fragment --- app/src/main/AndroidManifest.xml | 6 + .../device/devcheck/adapter/AppListAdapter.kt | 45 +++ .../device/devcheck/adapter/TempAdapter.kt | 33 +++ .../devcheck/base/BaseDialogFragment.kt | 17 +- .../devcheck/dashboard/AppDialogFragment.kt | 64 ++++ .../device/devcheck/dashboard/AppsFragment.kt | 86 ++++++ .../devcheck/dashboard/DashboardFragment.kt | 36 ++- .../devcheck/dashboard/DialogAppInstall.kt | 29 ++ .../devcheck/dashboard/DialogBattery.kt | 4 +- .../devcheck/dashboard/DialogDisplay.kt | 4 +- .../device/devcheck/dashboard/DialogMemory.kt | 28 ++ .../devcheck/dashboard/DialogNetwork.kt | 4 +- .../devcheck/dashboard/DialogOperating.kt | 28 ++ .../devcheck/dashboard/DialogStorage.kt | 28 ++ .../devcheck/dashboard/SensorsFragment.kt | 95 ++++++ .../devcheck/dashboard/TemperatureActivity.kt | 22 ++ .../device/devcheck/main/MainActivity.kt | 6 +- app/src/main/res/drawable/all_false.png | Bin 0 -> 680 bytes app/src/main/res/drawable/all_ic_sel.xml | 5 + app/src/main/res/drawable/all_true.png | Bin 0 -> 462 bytes app/src/main/res/drawable/app_full_ic.png | Bin 0 -> 418 bytes app/src/main/res/drawable/app_ic.png | Bin 0 -> 465 bytes app/src/main/res/drawable/app_install.png | Bin 0 -> 8152 bytes app/src/main/res/drawable/battery_ic.png | Bin 0 -> 547 bytes app/src/main/res/drawable/blue_tooth_ic.png | Bin 0 -> 1597 bytes .../drawable/dashboard_model_background.xml | 2 +- .../dashboard_model_background_top.xml | 7 + .../drawable/dashboard_model_left_both.xml | 7 + .../drawable/dashboard_tool_background.xml | 7 + app/src/main/res/drawable/display_ic.png | Bin 0 -> 629 bytes app/src/main/res/drawable/go_sensor.png | Bin 0 -> 397 bytes app/src/main/res/drawable/green_rec.xml | 5 + app/src/main/res/drawable/item_point.png | Bin 0 -> 352 bytes app/src/main/res/drawable/main_logo.png | Bin 0 -> 3600 bytes app/src/main/res/drawable/mem_ic.png | Bin 0 -> 1594 bytes app/src/main/res/drawable/per_no.png | Bin 0 -> 930 bytes app/src/main/res/drawable/per_special.png | Bin 0 -> 762 bytes app/src/main/res/drawable/per_yes.png | Bin 0 -> 825 bytes app/src/main/res/drawable/radius_bg.png | Bin 0 -> 1543 bytes app/src/main/res/drawable/setting_ic.png | Bin 0 -> 2481 bytes app/src/main/res/drawable/storyge.png | Bin 0 -> 1063 bytes app/src/main/res/drawable/stroke_bg.png | Bin 0 -> 2241 bytes app/src/main/res/drawable/system_false.png | Bin 0 -> 1836 bytes app/src/main/res/drawable/system_ic_sel.xml | 5 + app/src/main/res/drawable/system_true.png | Bin 0 -> 1041 bytes app/src/main/res/drawable/test_ic.png | Bin 0 -> 933 bytes app/src/main/res/drawable/tool_ic.png | Bin 0 -> 1506 bytes app/src/main/res/drawable/user_false.png | Bin 0 -> 963 bytes app/src/main/res/drawable/user_ic_sel.xml | 5 + app/src/main/res/drawable/user_true.png | Bin 0 -> 620 bytes app/src/main/res/drawable/wifi_ic.png | Bin 0 -> 1387 bytes app/src/main/res/font/candal.ttf | Bin 0 -> 31292 bytes app/src/main/res/layout/activity_main.xml | 24 +- .../main/res/layout/activity_temperature.xml | 63 ++++ .../main/res/layout/common_check_style1.xml | 27 ++ .../main/res/layout/common_dialog_item.xml | 9 +- .../main/res/layout/common_sensor_style.xml | 41 +++ .../res/layout/dashboard_module_bottom.xml | 41 ++- .../res/layout/dashboard_module_center.xml | 51 ++-- .../main/res/layout/dashboard_module_cpu.xml | 14 +- app/src/main/res/layout/dialog_app_click.xml | 193 ++++++++++++ .../main/res/layout/dialog_app_install.xml | 65 ++++ app/src/main/res/layout/dialog_base.xml | 13 +- app/src/main/res/layout/dialog_memory.xml | 192 ++++++++++++ app/src/main/res/layout/dialog_operating.xml | 47 +++ app/src/main/res/layout/dialog_storage.xml | 279 ++++++++++++++++++ app/src/main/res/layout/fragment_apps.xml | 169 +++++++++++ .../main/res/layout/fragment_hard_ware.xml | 2 +- app/src/main/res/layout/fragment_sensors.xml | 237 +++++++++++++++ app/src/main/res/layout/item_app_list.xml | 37 +++ app/src/main/res/layout/item_common_temp.xml | 33 +++ app/src/main/res/values/colors.xml | 5 +- app/src/main/res/values/dimens.xml | 8 +- app/src/main/res/values/strings.xml | 38 ++- app/src/main/res/values/styles.xml | 36 ++- 75 files changed, 2096 insertions(+), 106 deletions(-) create mode 100644 app/src/main/java/com/tools/device/devcheck/adapter/AppListAdapter.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/adapter/TempAdapter.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/AppDialogFragment.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/AppsFragment.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/DialogAppInstall.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/DialogMemory.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/DialogOperating.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/DialogStorage.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/SensorsFragment.kt create mode 100644 app/src/main/java/com/tools/device/devcheck/dashboard/TemperatureActivity.kt create mode 100644 app/src/main/res/drawable/all_false.png create mode 100644 app/src/main/res/drawable/all_ic_sel.xml create mode 100644 app/src/main/res/drawable/all_true.png create mode 100644 app/src/main/res/drawable/app_full_ic.png create mode 100644 app/src/main/res/drawable/app_ic.png create mode 100644 app/src/main/res/drawable/app_install.png create mode 100644 app/src/main/res/drawable/battery_ic.png create mode 100644 app/src/main/res/drawable/blue_tooth_ic.png create mode 100644 app/src/main/res/drawable/dashboard_model_background_top.xml create mode 100644 app/src/main/res/drawable/dashboard_model_left_both.xml create mode 100644 app/src/main/res/drawable/dashboard_tool_background.xml create mode 100644 app/src/main/res/drawable/display_ic.png create mode 100644 app/src/main/res/drawable/go_sensor.png create mode 100644 app/src/main/res/drawable/green_rec.xml create mode 100644 app/src/main/res/drawable/item_point.png create mode 100644 app/src/main/res/drawable/main_logo.png create mode 100644 app/src/main/res/drawable/mem_ic.png create mode 100644 app/src/main/res/drawable/per_no.png create mode 100644 app/src/main/res/drawable/per_special.png create mode 100644 app/src/main/res/drawable/per_yes.png create mode 100644 app/src/main/res/drawable/radius_bg.png create mode 100644 app/src/main/res/drawable/setting_ic.png create mode 100644 app/src/main/res/drawable/storyge.png create mode 100644 app/src/main/res/drawable/stroke_bg.png create mode 100644 app/src/main/res/drawable/system_false.png create mode 100644 app/src/main/res/drawable/system_ic_sel.xml create mode 100644 app/src/main/res/drawable/system_true.png create mode 100644 app/src/main/res/drawable/test_ic.png create mode 100644 app/src/main/res/drawable/tool_ic.png create mode 100644 app/src/main/res/drawable/user_false.png create mode 100644 app/src/main/res/drawable/user_ic_sel.xml create mode 100644 app/src/main/res/drawable/user_true.png create mode 100644 app/src/main/res/drawable/wifi_ic.png create mode 100644 app/src/main/res/font/candal.ttf create mode 100644 app/src/main/res/layout/activity_temperature.xml create mode 100644 app/src/main/res/layout/common_check_style1.xml create mode 100644 app/src/main/res/layout/common_sensor_style.xml create mode 100644 app/src/main/res/layout/dialog_app_click.xml create mode 100644 app/src/main/res/layout/dialog_app_install.xml create mode 100644 app/src/main/res/layout/dialog_memory.xml create mode 100644 app/src/main/res/layout/dialog_operating.xml create mode 100644 app/src/main/res/layout/dialog_storage.xml create mode 100644 app/src/main/res/layout/fragment_apps.xml create mode 100644 app/src/main/res/layout/fragment_sensors.xml create mode 100644 app/src/main/res/layout/item_app_list.xml create mode 100644 app/src/main/res/layout/item_common_temp.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3c8ac87..20e8803 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,6 +12,12 @@ android:supportsRtl="true" android:theme="@style/Theme.DevCheck" tools:targetApi="31"> + + diff --git a/app/src/main/java/com/tools/device/devcheck/adapter/AppListAdapter.kt b/app/src/main/java/com/tools/device/devcheck/adapter/AppListAdapter.kt new file mode 100644 index 0000000..6150384 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/adapter/AppListAdapter.kt @@ -0,0 +1,45 @@ +package com.tools.device.devcheck.adapter + +import android.app.Activity +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.tools.device.devcheck.dashboard.AppDialogFragment +import com.tools.device.devcheck.databinding.ItemAppListBinding +import com.tools.device.devcheck.databinding.ItemListBinding + +class AppListAdapter: RecyclerView.Adapter() { + private lateinit var context: Context + private lateinit var listener: OnShowDialogListener + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): ListViewHolder { + context = parent.context + val binding= ItemAppListBinding.inflate(LayoutInflater.from(context), parent, false) + return ListViewHolder(binding) + } + + override fun onBindViewHolder( + holder: ListViewHolder, + position: Int + ) { + holder.binding.view.setOnClickListener { + listener.onShowAppSelectDialog() + } + } + fun setOnclickListener(listener: OnShowDialogListener) { + this.listener = listener + } + + override fun getItemCount(): Int { + return 3 + } + + class ListViewHolder(val binding: ItemAppListBinding): RecyclerView.ViewHolder(binding.root) + interface OnShowDialogListener { + fun onShowAppSelectDialog() + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/adapter/TempAdapter.kt b/app/src/main/java/com/tools/device/devcheck/adapter/TempAdapter.kt new file mode 100644 index 0000000..1ea2809 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/adapter/TempAdapter.kt @@ -0,0 +1,33 @@ +package com.tools.device.devcheck.adapter + +import android.content.Context +import android.view.LayoutInflater +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import com.tools.device.devcheck.databinding.ItemCommonTempBinding +import com.tools.device.devcheck.databinding.ItemListBinding + +class TempAdapter: RecyclerView.Adapter() { + private lateinit var context: Context + override fun onCreateViewHolder( + parent: ViewGroup, + viewType: Int + ): ListViewHolder { + context = parent.context + val binding= ItemCommonTempBinding.inflate(LayoutInflater.from(context), parent, false) + return ListViewHolder(binding) + } + + override fun onBindViewHolder( + holder: ListViewHolder, + position: Int + ) { + + } + + override fun getItemCount(): Int { + return 3 + } + + class ListViewHolder(val binding: ItemCommonTempBinding): RecyclerView.ViewHolder(binding.root) +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/base/BaseDialogFragment.kt b/app/src/main/java/com/tools/device/devcheck/base/BaseDialogFragment.kt index f2bba58..41794f0 100644 --- a/app/src/main/java/com/tools/device/devcheck/base/BaseDialogFragment.kt +++ b/app/src/main/java/com/tools/device/devcheck/base/BaseDialogFragment.kt @@ -10,6 +10,7 @@ import android.view.WindowManager import androidx.core.graphics.drawable.toDrawable import androidx.fragment.app.DialogFragment import androidx.viewbinding.ViewBinding +import com.tools.device.devcheck.R import com.tools.device.devcheck.databinding.DialogBaseBinding abstract class BaseDialogFragment( @@ -22,6 +23,7 @@ abstract class BaseDialogFragment( protected val binding get() = _contentBinding!! abstract fun getTitle(): String + open fun getIconRes(): Int? = null @@ -45,8 +47,19 @@ abstract class BaseDialogFragment( super.onViewCreated(view, savedInstanceState) baseBinding.dialogTitle.text = getTitle() - getIconRes()?.let { - baseBinding.imageIcon.setImageResource(it) + getIconRes()?.let {iconRes -> + when (iconRes) { + 1 -> baseBinding.imageIcon.setImageResource(R.drawable.battery_ic) // 替换为实际的资源ID + 2 -> baseBinding.imageIcon.setImageResource(R.drawable.wifi) + 3 -> baseBinding.imageIcon.setImageResource(R.drawable.app_full_ic) + 4 -> baseBinding.imageIcon.setImageResource(R.drawable.display) + 5 -> baseBinding.imageIcon.setImageResource(R.drawable.blue_tooth_ic) + 6 -> baseBinding.imageIcon.setImageResource(R.drawable.mem_ic) + 7-> baseBinding.imageIcon.setImageResource(R.drawable.setting_ic) + 8 -> baseBinding.imageIcon.setImageResource(R.drawable.storyge) + // 添加更多数字对应的图片... + else -> baseBinding.imageIcon.setImageResource(R.drawable.main_logo) + } baseBinding.imageIcon.visibility = View.VISIBLE } baseBinding.textCancel.setOnClickListener { diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/AppDialogFragment.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/AppDialogFragment.kt new file mode 100644 index 0000000..8907fad --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/AppDialogFragment.kt @@ -0,0 +1,64 @@ +package com.tools.device.devcheck.dashboard + +import android.graphics.Color +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import androidx.core.graphics.drawable.toDrawable +import androidx.fragment.app.DialogFragment +import androidx.viewbinding.ViewBinding +import com.tools.device.devcheck.R +import com.tools.device.devcheck.databinding.DialogAppClickBinding +import com.tools.device.devcheck.databinding.DialogBaseBinding + +class AppDialogFragment : DialogFragment() { + + private var _binding: DialogAppClickBinding? = null + private val baseBinding get() = _binding!! + + + open fun onPositiveClick() {} + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = DialogAppClickBinding.inflate(inflater, container, false) + return baseBinding.root + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + baseBinding.textCancel.setOnClickListener { + onPositiveClick() + dismiss() + } + } + + override fun onStart() { + super.onStart() + dialog?.window?.let { window -> + window.setBackgroundDrawable(Color.TRANSPARENT.toDrawable()) + + val params = window.attributes + val displayMetrics = resources.displayMetrics + val margin = (10 * displayMetrics.density).toInt() + params.width = displayMetrics.widthPixels - margin * 2 + params.height = WindowManager.LayoutParams.WRAP_CONTENT + window.attributes = params + window.setGravity(Gravity.CENTER) + } + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } +} + + diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/AppsFragment.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/AppsFragment.kt new file mode 100644 index 0000000..a9bee0b --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/AppsFragment.kt @@ -0,0 +1,86 @@ +package com.tools.device.devcheck.dashboard + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.LinearLayoutManager +import com.tools.device.devcheck.R +import com.tools.device.devcheck.adapter.AppListAdapter +import com.tools.device.devcheck.databinding.FragmentAppsBinding + +class AppsFragment : Fragment(),AppListAdapter.OnShowDialogListener { + private lateinit var binding: FragmentAppsBinding + private lateinit var dialogFragment: AppDialogFragment + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + binding = FragmentAppsBinding.inflate(inflater, container, false) + initButtons() + val adapter= AppListAdapter() + adapter.setOnclickListener(this) + binding.recyclerView.adapter = adapter + binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + return binding.root + } + + companion object { + @JvmStatic + fun newInstance() = + AppsFragment().apply { + arguments = Bundle().apply { + + } + } + } + private fun initButtons() { + switchTab(0) + binding.llUser.setOnClickListener { switchTab(0) } + binding.llSystem.setOnClickListener { switchTab(1) } + binding.llAll.setOnClickListener { switchTab(2) } + } + + private fun switchTab(n: Int) { + when(n){ + 0->{ + binding.back1.visibility = View.VISIBLE + binding.back2.visibility = View.INVISIBLE + binding.back3.visibility = View.INVISIBLE + binding.imgUser.isSelected = true + binding.imgSystem.isSelected = false + binding.imgAll.isSelected = false + binding.tvTitle.text=getString(R.string.user_apps)+"("+30+")" + } + 1->{ + binding.back1.visibility = View.INVISIBLE + binding.back2.visibility = View.VISIBLE + binding.back3.visibility = View.INVISIBLE + binding.imgUser.isSelected = false + binding.imgSystem.isSelected = true + binding.imgAll.isSelected = false + binding.tvTitle.text=getString(R.string.system_apps)+"("+30+")" + } + 2->{ + binding.back1.visibility = View.INVISIBLE + binding.back2.visibility = View.INVISIBLE + binding.back3.visibility = View.VISIBLE + binding.imgUser.isSelected = false + binding.imgSystem.isSelected = false + binding.imgAll.isSelected = true + binding.tvTitle.text=getString(R.string.installed_apps)+"("+30+")" + } + } + } + + override fun onShowAppSelectDialog() { + dialogFragment = AppDialogFragment() + dialogFragment?.show(requireActivity().supportFragmentManager, "AppDialogFragment") + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DashboardFragment.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DashboardFragment.kt index 07244e2..3086b3d 100644 --- a/app/src/main/java/com/tools/device/devcheck/dashboard/DashboardFragment.kt +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DashboardFragment.kt @@ -21,6 +21,11 @@ class DashboardFragment : BaseFragment() { private var dialogBattery: DialogBattery? = null private var dialogNetwork: DialogNetwork? = null private var dialogDisplay: DialogDisplay? = null + private var dialogOperating: DialogOperating? = null + private var dialogAppInstall: DialogAppInstall? = null + private var dialogMemory: DialogMemory? = null + private var dialogStorage: DialogStorage? = null + companion object { @JvmStatic @@ -83,7 +88,7 @@ class DashboardFragment : BaseFragment() { } private fun initClick() { - binding.layoutCpu.moduleCpu.setOnClickListener { + binding.layoutCpu.showCpu.setOnClickListener { startActivity(Intent(requireContext(), CpuStatusActivity::class.java)) } binding.layoutCenter.run { @@ -99,13 +104,32 @@ class DashboardFragment : BaseFragment() { dialogDisplay = dialogDisplay?: DialogDisplay() dialogDisplay?.show(parentFragmentManager, "") } + relayoutApps.setOnClickListener { + dialogAppInstall = dialogAppInstall ?: DialogAppInstall() + dialogAppInstall?.show(parentFragmentManager, "") + } + relayoutRam.setOnClickListener { + dialogMemory = dialogMemory ?: DialogMemory() + dialogMemory?.show(parentFragmentManager, "") + } + relayoutStorage.setOnClickListener { + dialogStorage = dialogStorage ?: DialogStorage() + dialogStorage?.show(parentFragmentManager, "") + } } - binding.layoutBottom.relayoutTools.setOnClickListener { - startActivity(Intent(requireContext(), ToolsActivity::class.java)) - } - binding.layoutBottom.relayoutTests.setOnClickListener { - startActivity(Intent(requireContext(), TestActivity::class.java)) + binding.layoutBottom.run { + relayoutTools.setOnClickListener { + startActivity(Intent(requireContext(), ToolsActivity::class.java)) + } + relayoutTests.setOnClickListener { + startActivity(Intent(requireContext(), TestActivity::class.java)) + } + relayoutPhoneInfo.setOnClickListener { + dialogOperating = dialogOperating ?: DialogOperating() + dialogOperating?.show(parentFragmentManager, "") + } } + } } \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogAppInstall.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogAppInstall.kt new file mode 100644 index 0000000..7315fc7 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogAppInstall.kt @@ -0,0 +1,29 @@ +package com.tools.device.devcheck.dashboard + +import android.os.Bundle +import android.view.View +import com.tools.device.devcheck.R +import com.tools.device.devcheck.base.BaseDialogFragment +import com.tools.device.devcheck.databinding.DialogAppInstallBinding +import com.tools.device.devcheck.databinding.DialogBatteryBinding +import com.tools.device.devcheck.databinding.DialogNetworkBinding + +class DialogAppInstall :BaseDialogFragment(DialogAppInstallBinding::inflate){ + override fun getTitle(): String = resources.getString(R.string.installed_apps) + + override fun getIconRes(): Int=3 + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + } + + override fun onNegativeClick() { + super.onNegativeClick() + + } + + override fun onPositiveClick() { + super.onPositiveClick() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogBattery.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogBattery.kt index ba8a534..8a8c298 100644 --- a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogBattery.kt +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogBattery.kt @@ -9,9 +9,7 @@ import com.tools.device.devcheck.databinding.DialogBatteryBinding class DialogBattery :BaseDialogFragment(DialogBatteryBinding::inflate){ override fun getTitle(): String = resources.getString(R.string.battery) - override fun getIconRes(): Int? { - return super.getIconRes() - } + override fun getIconRes(): Int? =1 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogDisplay.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogDisplay.kt index 74cf831..01e2a1d 100644 --- a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogDisplay.kt +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogDisplay.kt @@ -11,9 +11,7 @@ import com.tools.device.devcheck.databinding.DialogNetworkBinding class DialogDisplay :BaseDialogFragment(DialogDisplayBinding::inflate){ override fun getTitle(): String = resources.getString(R.string.display) - override fun getIconRes(): Int? { - return super.getIconRes() - } + override fun getIconRes(): Int=4 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogMemory.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogMemory.kt new file mode 100644 index 0000000..04ec805 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogMemory.kt @@ -0,0 +1,28 @@ +package com.tools.device.devcheck.dashboard + +import android.os.Bundle +import android.view.View +import com.tools.device.devcheck.R +import com.tools.device.devcheck.base.BaseDialogFragment +import com.tools.device.devcheck.databinding.DialogBatteryBinding +import com.tools.device.devcheck.databinding.DialogMemoryBinding +import com.tools.device.devcheck.databinding.DialogNetworkBinding + +class DialogMemory :BaseDialogFragment(DialogMemoryBinding::inflate){ + override fun getTitle(): String = resources.getString(R.string.memory) + + override fun getIconRes(): Int=6 + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + } + + override fun onNegativeClick() { + super.onNegativeClick() + + } + + override fun onPositiveClick() { + super.onPositiveClick() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogNetwork.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogNetwork.kt index dd1f093..f814f18 100644 --- a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogNetwork.kt +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogNetwork.kt @@ -10,9 +10,7 @@ import com.tools.device.devcheck.databinding.DialogNetworkBinding class DialogNetwork :BaseDialogFragment(DialogNetworkBinding::inflate){ override fun getTitle(): String = resources.getString(R.string.network) - override fun getIconRes(): Int? { - return super.getIconRes() - } + override fun getIconRes(): Int=2 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogOperating.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogOperating.kt new file mode 100644 index 0000000..3287464 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogOperating.kt @@ -0,0 +1,28 @@ +package com.tools.device.devcheck.dashboard + +import android.os.Bundle +import android.view.View +import com.tools.device.devcheck.R +import com.tools.device.devcheck.base.BaseDialogFragment +import com.tools.device.devcheck.databinding.DialogBatteryBinding +import com.tools.device.devcheck.databinding.DialogOperatingBinding + +class DialogOperating :BaseDialogFragment(DialogOperatingBinding::inflate){ + override fun getTitle(): String = resources.getString(R.string.operating_system) + + override fun getIconRes(): Int? =7 + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + } + + override fun onNegativeClick() { + super.onNegativeClick() + + } + + override fun onPositiveClick() { + super.onPositiveClick() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/DialogStorage.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogStorage.kt new file mode 100644 index 0000000..021aff7 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/DialogStorage.kt @@ -0,0 +1,28 @@ +package com.tools.device.devcheck.dashboard + +import android.os.Bundle +import android.view.View +import com.tools.device.devcheck.R +import com.tools.device.devcheck.base.BaseDialogFragment +import com.tools.device.devcheck.databinding.DialogBatteryBinding +import com.tools.device.devcheck.databinding.DialogStorageBinding + +class DialogStorage :BaseDialogFragment(DialogStorageBinding::inflate){ + override fun getTitle(): String = resources.getString(R.string.storage) + + override fun getIconRes(): Int? =8 + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + } + + override fun onNegativeClick() { + super.onNegativeClick() + + } + + override fun onPositiveClick() { + super.onPositiveClick() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/SensorsFragment.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/SensorsFragment.kt new file mode 100644 index 0000000..2fbddf1 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/SensorsFragment.kt @@ -0,0 +1,95 @@ +package com.tools.device.devcheck.dashboard + +import android.content.Intent +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import com.tools.device.devcheck.R +import com.tools.device.devcheck.databinding.FragmentSensorsBinding + +class SensorsFragment : Fragment() { +private lateinit var binding: FragmentSensorsBinding + + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + } + + override fun onCreateView( + inflater: LayoutInflater, container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + // Inflate the layout for this fragment + binding = FragmentSensorsBinding.inflate(inflater, container, false) + initView() + binding.sensor1.root.setOnClickListener { + val intent = Intent(requireContext(), TemperatureActivity::class.java) + startActivity(intent) + } + return binding.root + } + + private fun initView() { + binding.sensor1.sensorName.text=getString(R.string.temperatures) + binding.sensor2.sensorName.text=getString(R.string.accelerometer) + binding.sensor3.sensorName.text=getString(R.string.magnetic_field) + binding.sensor4.sensorName.text=getString(R.string.orientation) + binding.sensor5.sensorName.text=getString(R.string.light) + binding.sensor6.sensorName.text=getString(R.string.proximity) + binding.sensor7.sensorName.text=getString(R.string.gravity) + binding.sensor8.sensorName.text=getString(R.string.linear_acceleration) + binding.sensor9.sensorName.text=getString(R.string.rotation_vector) + binding.sensor10.sensorName.text=getString(R.string.step_counter) + + binding.hallText1.textTitle.text=getString(R.string.manufacturer) + binding.hallText2.textTitle.text=getString(R.string.type) + binding.hallText3.textTitle.text=getString(R.string.resolution) + binding.hallText4.textTitle.text=getString(R.string.maximum_range) + binding.hallText5.textTitle.text=getString(R.string.power) + binding.hallText6.textTitle.text=getString(R.string.wakeup_sensor) + + binding.signText1.textTitle.text=getString(R.string.manufacturer) + binding.signText2.textTitle.text=getString(R.string.type) + binding.signText3.textTitle.text=getString(R.string.resolution) + binding.signText4.textTitle.text=getString(R.string.maximum_range) + binding.signText5.textTitle.text=getString(R.string.power) + binding.signText6.textTitle.text=getString(R.string.wakeup_sensor) + + binding.geoText1.textTitle.text=getString(R.string.manufacturer) + binding.geoText2.textTitle.text=getString(R.string.type) + binding.geoText3.textTitle.text=getString(R.string.resolution) + binding.geoText4.textTitle.text=getString(R.string.maximum_range) + binding.geoText5.textTitle.text=getString(R.string.power) + binding.geoText6.textTitle.text=getString(R.string.wakeup_sensor) + + binding.rpcText1.textTitle.text=getString(R.string.manufacturer) + binding.rpcText2.textTitle.text=getString(R.string.type) + binding.rpcText3.textTitle.text=getString(R.string.resolution) + binding.rpcText4.textTitle.text=getString(R.string.maximum_range) + binding.rpcText5.textTitle.text=getString(R.string.power) + binding.rpcText6.textTitle.text=getString(R.string.wakeup_sensor) + + } + + companion object { + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment SensorsFragment. + */ + // TODO: Rename and change types and number of parameters + @JvmStatic + fun newInstance() = + SensorsFragment().apply { + arguments = Bundle().apply { + + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/dashboard/TemperatureActivity.kt b/app/src/main/java/com/tools/device/devcheck/dashboard/TemperatureActivity.kt new file mode 100644 index 0000000..7671470 --- /dev/null +++ b/app/src/main/java/com/tools/device/devcheck/dashboard/TemperatureActivity.kt @@ -0,0 +1,22 @@ +package com.tools.device.devcheck.dashboard + +import android.os.Bundle +import androidx.activity.enableEdgeToEdge +import androidx.appcompat.app.AppCompatActivity +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import androidx.recyclerview.widget.LinearLayoutManager +import com.tools.device.devcheck.R +import com.tools.device.devcheck.adapter.TempAdapter +import com.tools.device.devcheck.databinding.ActivityTemperatureBinding + +class TemperatureActivity : AppCompatActivity() { + private lateinit var binding: ActivityTemperatureBinding + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityTemperatureBinding.inflate(layoutInflater) + setContentView(binding.root) + binding.rvTemperature.adapter = TempAdapter() + binding.rvTemperature.layoutManager =LinearLayoutManager(this) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/tools/device/devcheck/main/MainActivity.kt b/app/src/main/java/com/tools/device/devcheck/main/MainActivity.kt index 05305bd..fbe575c 100644 --- a/app/src/main/java/com/tools/device/devcheck/main/MainActivity.kt +++ b/app/src/main/java/com/tools/device/devcheck/main/MainActivity.kt @@ -7,11 +7,13 @@ import androidx.viewpager2.widget.ViewPager2 import com.google.android.material.tabs.TabLayoutMediator import com.tools.device.devcheck.base.BaseActivity import com.tools.device.devcheck.R +import com.tools.device.devcheck.dashboard.AppsFragment import com.tools.device.devcheck.dashboard.BatteryFragment import com.tools.device.devcheck.dashboard.CameraFragment import com.tools.device.devcheck.dashboard.DashboardFragment import com.tools.device.devcheck.dashboard.HardWareFragment import com.tools.device.devcheck.dashboard.NetworkFragment +import com.tools.device.devcheck.dashboard.SensorsFragment import com.tools.device.devcheck.dashboard.SystemShowFragment import com.tools.device.devcheck.databinding.ActivityMainBinding @@ -32,9 +34,9 @@ class MainActivity : BaseActivity() { SystemShowFragment.newInstance(), BatteryFragment.newInstance(), NetworkFragment.newInstance(), - DashboardFragment.newInstance(), + AppsFragment.newInstance(), CameraFragment.newInstance(), - DashboardFragment.newInstance() + SensorsFragment.newInstance() ) ) registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() { diff --git a/app/src/main/res/drawable/all_false.png b/app/src/main/res/drawable/all_false.png new file mode 100644 index 0000000000000000000000000000000000000000..6e53a9a489a5a36d54fbfe0b7d5d4fb92f373937 GIT binary patch literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBoCO|{#S9E$svykh8Km+7D9BhG zz?kLSuxYuw~ z@p!KjJTaB*Ivu*IAPzZ9!?U)Z*pOKdwAV!L{lLyxEFtyod- zp!@4SYrX$^KXm1~U-FKhpZvI*wCREsV>0KF+$*ht8xCad+gbfV{qXer^7~X=qkFSv zZED&0OL4n>{(I4ouFS3bOniSucjg#*gs*nf>F2W-O5}YvaU;#ga4BxgWU*OniMrmFv>1@T`L$m~=TSnp!F{x(#F2cSPU1$MRQu(Si$| zO-|}uTyr%vN+6u)c3g`zZ4Pwpzn#P)@*!vn_rW#y4l!q~^Lu?{)&l!0Gf%X?+-E5H zKw$3rd>-!TJ4Yf;+RZt1bLllF^ZsY^^bg)$HTzlYgt)Zgzh74$`O{^Xv1R#1Wyk&i z;jmX;4acV+-pe!5L#62b&b!-sOSA8sQ@g#*Qg+4uyW8Ydq<^W31qyG@RbTMtvVrdZ zrArq~Eq52Uy3(r6@?Gux<;|-UwdL>SIPA1GH27$7-{<(qWoxq%FEV?-d!A}q&*y{ZcIwu>bq;1*?rIond{5}vz4fl8 zb4nCSf-ZgkRkLGv-SrD66Vk8tT(xs(RC_UN*=L34o07NuVX6G^cxTMCGBserV(@hJ Kb6Mw<&;$TS!8WS^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/all_ic_sel.xml b/app/src/main/res/drawable/all_ic_sel.xml new file mode 100644 index 0000000..6a8884e --- /dev/null +++ b/app/src/main/res/drawable/all_ic_sel.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/all_true.png b/app/src/main/res/drawable/all_true.png new file mode 100644 index 0000000000000000000000000000000000000000..43b0da6100b1df77bfea2d2390b816aa4325de27 GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^CLqkg1|*MGNWTVBoCO|{#S9E$svykh8Km+7D9BhG zX(mt z-hG_W_~b1nTi4Ud3Y@`tyq?jSHZ>4c!*%IZv9sl^Oib}IzRNQnpADouQ zEgOB-q5NUvn$Hf`DivPaOemE*Va1%P zGON>4TG{Y<}!^KY(PwW{u1l9Ydzl-&7-IzJmjsOxnO<6)+8x6zdlqO*oN7Qr z-<{V!4Se=%%+E7NK1X%h*~7oQ)BILH7kD9TRaE}W>cx)>yBKcxl`i}AT;eh7f$T!g t&`0tdnpH=9HcdO0JvY1BZCBe*W{nrQFPM|}e**?TgQu&X%Q~loCIC3yz=;3= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/app_full_ic.png b/app/src/main/res/drawable/app_full_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd9ebe85f0735b3e3981ab012881f1884a7b4a2 GIT binary patch literal 418 zcmeAS@N?(olHy`uVBq!ia0vp^b|B2b1|*9Qu5bZToCO|{#S9E$svykh8Km+7D9BhG zt6;d@&!@-!ABmXu?(>5eljMVT z*BSi1y4fUl_WZWR;dL6)Ve)p`&9kmtVgIHdpSkz`S+4grP8(yjcl6(WU>8>)Z+`B% wU0>U8G&^7xzk8gqqd)qQo!*_}XFr>Nv;O??d(`CHz#wJtboFyt=akR{0En!;UjP6A literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/app_ic.png b/app/src/main/res/drawable/app_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d65712e412de00ad2b7a3096f1005524c7c342 GIT binary patch literal 465 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 E0Dh|BRsaA1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/blue_tooth_ic.png b/app/src/main/res/drawable/blue_tooth_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..cb6b50f6399190724308b9ec2675c308e94082f6 GIT binary patch literal 1597 zcmV-D2EzG?P)eniIgB07V!Svx6JJ z5tzjcg!_}u?2jZwcUAwS_S^93YISzj%a@;$fCb^V{>N&mte*g24G?ZYXvXFCpMOD) z&|pE(^wPO&I72`cz!`2FedDvUN7B*UZh>HEqm*q_J>=@h=qAR60{5SVplJZ z4t5|TmT$a=iUy+3G^+KD3Zz6)#{0k>Q-6NNG=mf<*mwwNbd!cg#T)O#qfzf9$u2D0 z_-k_Yo#guK5=rd(ac>o3V5!C<;@`Gutp1XCD>}zf4%!92^)ZL?q9dMx;h{+q4@&X`xLF*M(O|39R@* zV{8n1H)#_{Qe3pUhKAUX?gGFn)9ClXK^+3)LB~DU=y_yFAZhTe)jeYx(St|sKM?N1 zY;uG+^`JE^O8(xiEM7B{gv&Ig8qVpH645mpiH)zM^_oV;p}cLQ23uHm6U#h3n7c%R zK*C@=8jDE4G`VQ)M&_7A(*u5}rfcVN8byPR*FYOlUO5d-ij##vGKfu1TC&eeHTqE1 zA(1xmu1G23t{T~<(~J{8spmFXcOldm1x=o;hm6=9^bRSY-$53Tb_;NtEYnGD%VlD= zIrvy}Ks!md3pgs9_l;58xJ!CxZsR^zL3GUkArjO+NZQ>!gp|m2R_RONm0C{I(PSPv zn+KKlgNPtYnb34X?Dor?y8Jcj(OZ$BqruU>;Mv}fcmGMtJCwl;Cw{ATcOcVEI zsfAPAay{E*%aC~V;Z}jvEGP|UZ&Po;N#_B6aZ6sC8tAx9cASnaw()+=-B(wEUQlw~ z%`{<}>R;;$uKL!e;QKZgKYHoCD(y(T43*4X0 zln?MwDTz`QVt}bd&)U+SmHOoAsHVH(pC+!B&Hwg;QXE)m0*zw0w<&3$M!>N=t2@Mzn5i;(0eH^%pnNc?n}i0$~B* zU5GKgsA#&_nbJmAv}Q0JJ!CDYRNxmtP28x~O=v^gRB@-4VW6NCU^fcl-b$h1=A5$hqlww&+wS4)F$*`#LBdJX{xWok0p2S5xI8n6@il_^b-6BT&H8&5Pr zOEkvq?sd{z3q8IMYNc_zlh|-ZF`oBnLP;l6A5eht+`u@EpZ2SXo?-qG{0v;0nD@DS vr;@QS&)cTe49=an$SYCO`PSM!gB - + \ No newline at end of file diff --git a/app/src/main/res/drawable/dashboard_model_background_top.xml b/app/src/main/res/drawable/dashboard_model_background_top.xml new file mode 100644 index 0000000..f30b600 --- /dev/null +++ b/app/src/main/res/drawable/dashboard_model_background_top.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dashboard_model_left_both.xml b/app/src/main/res/drawable/dashboard_model_left_both.xml new file mode 100644 index 0000000..8889cc9 --- /dev/null +++ b/app/src/main/res/drawable/dashboard_model_left_both.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/dashboard_tool_background.xml b/app/src/main/res/drawable/dashboard_tool_background.xml new file mode 100644 index 0000000..64f1258 --- /dev/null +++ b/app/src/main/res/drawable/dashboard_tool_background.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/display_ic.png b/app/src/main/res/drawable/display_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..9909b0ee00a6df16e3e1b17c3d546c28accadbcf GIT binary patch literal 629 zcmeAS@N?(olHy`uVBq!ia0vp^Iza5l!3HFwcYFx|Qk(@Ik;M!QVyYm_=ozH)0Vv2= z9OUlAu+2ps#EA18CjJh-TUD3)zkIXBzRq1*5AV9rrMr(%%Sf@ zw9AzyrMn5w{Lem}f3PMZY_;#vhc7(R*7B={_#C%dZ81~)e%beVG2ep?@BUx9bwgBc zn`F&nA&+Uw{HpvV7YkWcvkn#&Zq5IvYtt-rRN3e5x#J&iuZ}*ytx(*{<8#vr!;`wY zZIyp51-_dkyH33-&Z4>IU%aAQzebd;Zu-NEn{sm)19`sHJ9^H)p8fA- ou$JkiBQpF?8n?vmxA`jn*?pRG{BFY{U@BqoboFyt=akR{05!86*#H0l literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/go_sensor.png b/app/src/main/res/drawable/go_sensor.png new file mode 100644 index 0000000000000000000000000000000000000000..8808dcde893b947eaa43050de44b66d5c2726189 GIT binary patch literal 397 zcmeAS@N?(olHy`uVBq!ia0vp^VnD3M!3HD`oXegDq&N#aB8!3Isvykh8Km+7D9BhG zEM#V5NDU2j_j@X(y{9*D^19bac|fMMa)=-Q4vQJxKP@<#n4$&F z$9>4*{=%Ipb4=P(W*PsIf`}@O#^$#T-O-79`?!if_}&mNZ>lXwpV2irfy=Kgwore^ z@xng)!kzQyJxr;|cq%EgQl0x()~si*LJQ|T7iW1VcIC?smBV@~Zca`JpTZIx0Mu!9 z(C&rWo9=aoWUg=(Uv!ONntL$l1;0)w-v*OkjsF{Gz1Wu9e`&?Z<)V?(?iPNEUvh!* nUE!X&DibP0l+XkKj5nQ9 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/green_rec.xml b/app/src/main/res/drawable/green_rec.xml new file mode 100644 index 0000000..130f225 --- /dev/null +++ b/app/src/main/res/drawable/green_rec.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/item_point.png b/app/src/main/res/drawable/item_point.png new file mode 100644 index 0000000000000000000000000000000000000000..858a311cb9580edd05684338c500e4c5a5fbb74c GIT binary patch literal 352 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/per_no.png b/app/src/main/res/drawable/per_no.png new file mode 100644 index 0000000000000000000000000000000000000000..d24a3bf6cb71fde9a24d7668f5782c83bad7e18b GIT binary patch literal 930 zcmV;T16}-yP)NQ;t$ABKuW7%rZ8dV2b8Hk(b0Aqi~iv$L~r78e)q zP17v$Oyke?_V(*$vl++I?eTa-CX=}mLlA&{#1w8c8byHK0Q5oI+}!jz9F8!?1cnZU z<+-`JM|gTE{zGWj>2!XPTccjDzg${cN;@@8^8(0a(bb{&o?eT8l%1WOJ=i_8o&lrK znx#Sz(_V*XS58k)(_#R@MFTKSTYCEp>DoOzJKN{Fl|$q#jWGVg(k;WP0U}m{oUWmuz z1<^&cZhz!*x#G;sOdcij07EW@mLAK{wl0CZCF!Jm}K*M59r&pDj%&2+F1~KR*vV2Z^Ku+>kjV{X@w2*OQZzyoxO)KnlwSHF=K^ zd$D!3!7!4?$H%v-cAR1W0oWwGvo?lFbfTL9OsIRvE`li_{xpLF08d~x&@6O#f39jr z$wPqoFa;%82wnw7M@JV}b1WChRwe1nQd!v7lA#0(+Ai}0lfet&zfeDWT0gK_t(GJh zYYeR_Y}WyUkH}yGs)X0k3yfU^OCRPCYAhmp$kx^t->VF53K!e$rl)lQV>A8$ue_+S zb<|i|^bx+o__hI)!|<4%Unl{}F!IyDi|+AGwV)-aiCVp5Zw2Tr8-`uy8A|~c#6-|_ zl~!dJhMrLY=o$#+vH$;94%ss?`2e=xtK+K*^6E#3udU7D$-|9}4HrV_DwRsXVSrJ_ z#>P_Qf%Su|1<1VNCVHh(N%37Mh9r?lq=?YoS-%Q@1AbGV>&|>OyZ`_I07*qoM6N<$ Ef-C!_XaE2J literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/per_special.png b/app/src/main/res/drawable/per_special.png new file mode 100644 index 0000000000000000000000000000000000000000..f0ec80797819d0ae60f6f6e56a9ad8082a9d9f6f GIT binary patch literal 762 zcmVAL<6 z)m)e%EZaT$SFB(%1}1YR0*cXoI~)$LB8i}cKl}_Br_t_uy}q4HCMywwdcAI7pE@AD z@C|EPuix*tpAeA*Gx^TVRuy2M+T-!q5zj!Q(I`XhFY!-V3(9`5tn)+9VxvOBnOjit z^|>U(Xf(1hu}{)Dhz_^ICqidcm5qTbDv4UEIB;V7{r(HfocMOTZMj5}(F~05yhKSD z8M3Y52q^gX?-L%Q!Md8Vb%J&mVxY zEs}$UbPi9<=`j4DbkGSLkr1$aHtbJnQ-`7t;+-Iu@6uD06YmHJv9sB%qvP(nQ`&R5 zN@^lmEU65tbVoVKzTYPZiyvJYca#oOUapA%*O=uJA$G7Z4fJ1&gy3CcDSnE@;tHxh zqiD!}qf{!1*=#ly3Be_r&*y&%g~9{&i)0^VpZOXxMuL1kZ!Q*#-)j4Rfe-P7q2f9a zlWcfqn<3x?0pA!GaI7-k4p;IF`ADl3`1=I+5}kt&67Rj>1~WK_1tUH5E!Eotr@u<$ zXydVPFgEnAjC!2Z@H2m`1k^=BPU4PU78b{1pIZ!ClBl96RIviV1o=I3D{grsi9E=M s2bC?wV@Rp+fTONq?<~~qQ~O8!1vf-X&rsn+W&i*H07*qoM6N<$f+jdoWdHyG literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/per_yes.png b/app/src/main/res/drawable/per_yes.png new file mode 100644 index 0000000000000000000000000000000000000000..df017f76b135efc4ea2db5c83c1bb3e67f176bb6 GIT binary patch literal 825 zcmV-91IGM`P)DDp*3t(vZA&|n>F&)#X zq&N{H-8xdK3J8p^?-^_vT7Co)$X7zTdv|9(e!qMS9)XNlEMzS%Djeo4L)R567))9K z)w#mN_x55fA(8^1n9XLZ4CbVLO;ZJ9CkPTsXEIx43&0#iAU5ZRAVm1KUf*)A87`I z-!Uh`n6z8ze7^L*eGeWc%8^zucupWVJx-_7r9pciG=UwEPL3#8!XL4OkB03J_zoo* zV>QdRkEsE{v>+H77X(W4E6_ zp%8+;F$c~W#@=HIpTZsG^%;sQ#h2m?y|fhjWz2)4fgrY>a6xc?aT1Uo7(WmWOZ`CT z{^i&4_<`T9Ynp)`F)+V2X-+Tlr(RFMgp&FVCMN6l&Q8v@tf%-Vif`!|&TAX894edU z6HgMywqtDdMVM03s0{;vycXb8PA2mK?m;7AJfLXw3Oe3caqUz&pEH?v za8DZh3h@cU&=z91Tl&>$D`zSgl3V($Q#t=!8>iJ@k^exCwn`4=00000NkvXXu0mjf DKD2K` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/radius_bg.png b/app/src/main/res/drawable/radius_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..ba849a8de54348407be2cc9db3d8aa1080173bad GIT binary patch literal 1543 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/storyge.png b/app/src/main/res/drawable/storyge.png new file mode 100644 index 0000000000000000000000000000000000000000..405131270a3533fd3e5659c8224fb4be69c41ebb GIT binary patch literal 1063 zcmV+?1laqDP)}=388D68IZ6MUHXoMX{};=CdQS)?srsS44G2vPU!dcCef7EzB?!T?X2uaJ zb01K+ECYl!0I9~KvJAo~fST{EkM7>z0|MJZ<55`xVFUm-js)v~bRCMwFbJ&xv>K1f z5C|;*j2e$hGl)U}tQwDsfglca=qUL7qj7KvIh6}Qsm7yXAgBYUWEAxCfKURkP{yOm z2|^0MLK}}t5kw|{r7|AXT_OB`kq=Xs&<8kA&_tOqoArPra zP$=R3e~Ce48t0OJ04@&*I$-(#j_itX0${UuTw_T=6Ik^Usna^&eKSZqU~xgv0h{M6 z_Jcv%H&FK-ts=(%E4%`} zNCYngvDrIhCv%(TLFh3)8Hv>kCij48*M_pL4OSpqC4$groMpbOSOToFyx*UD3g`r( zFqS}KtBkEb15~&Cc&?{pHy!&*<*#}Df`B`a&-k2*Zfk|*{Dn#=PJ|| zl?I`Z4cao!rKKh`D*1Y5#B hyf^;c7Zoo}=`TNK5{U@ZS39wIK`2@x%h;jnil`^FA;`Ipx27{9q z#nbEG`S0yC$L5ctL^n7$rFG2>X)@p_MIVb|?6;QaMkiH{S zD@afPq5>e__e0PC#0Ed8%dZi^zE*J3YQcWH-QHU-l^T#i5Hf&>trxVf0ew{X7>QQE zAcVNb4Yx-C0YdBJFZWAz$N*ClUj)B%$J-!+r~IoA4w1%CKoz3)yJo7 zaMuXd#7{)`UP5Lq{W|P7f^qSafmFXF!sjp(U#8(KBth9(k!_qbLBnENn$Zst0$t~IRx z{Qc4%On`zhxw*m%R18C^?fiYX0TVEm_kqMJe?dq^BZIb4JFi;D^DmHw+bj=jc-f5hq$mj7h)^{(G|- zzMW(rW%u~N=f>FNfAWd@hQK=S1C@q-|0~6h-HpcIz!gN2f$*l;Y;W7hHrPED_X)iD zhedEi6h*Io{b{*;)$3P_e|&i2#NAjH{UYugp?&YFO}K#rZn8b>#LowSVTpZX*;Q`M zFZUl+0K!#vM~-5(-j&|tlI6P_WFw9aUEL*J5cdLt*AB*mfrIY=%b(w{Dm=Rxwz~Cc z3opdIfO}py)6F6;2R%7JeA)zCu<$wxSJxgqdJ7pL@yFq+sb`Oi|qzb2pbY|J@;JqL1#nA2P??nI()U4 z1(F89XJCiI!h+iDf1)Qok+PI$gOw}{u4xe?A&Opr1rXJf{@>Nv3;GEdN4jw9737Sy z2g}<;V8ccF{jMh#KXEzc2U_k;Z?cjLKPre|#ro&xbZ_8IEI-sf7>DX>50rovNAiQWjSWYs*y?|9f7rk@cC4R@)lR5UB?EwI zf3E_V5qReF4h(Y#=a=PPd7ft>HcPp;`YxxZQ3VVWhV7EvE3G5b;y3cJph`<;t2+RL zD1~?9d%hLHEScRx7?&u5k6@7Q7|Y_TyI>Fwof-Y2SpYeB4+bGh;s**1=Ui$n3AD2X zVraNGClegiZ3Sb0mZE=Q#;~aq$UIHx6b5By<&{pr+XsV0lxXnGs?Qg&7zv6IC| z_3lPpcadd00D`EuAm)=mPlg2f1 zEg?%M?nz0d!ZUi}+saK85Y_8EEWE@;hB|%igb`_+{?|H}fOT$5*+zC&AJxD9In3qV)>}o?BfK#7HB*x90PX>RMYyqyXYpMOT(IT_Hb7E{ zb$!yq-V+^;kU_ZF3`?>d05=Ana3qCT1DFtl7b!a^1Hjbx=f&xEwD z&YT;PLad-(nJ(UB^h}n_gv1T;YS?Bd(lvp&85>ozj9Pv_G8hwiRUQv=dRRghllaVL z1r=-JcbP`r`iXE@Qr^1wT{7PYj_ddf&cyH1yOhRsE(bD*fNxW&c%xNe3DD;+^w|6$Eh#Ed0I}ecT?EG@nGpXXoeLbVa3d^- z5!}-X?(+1t5RVs91L5M1YV5C-Toj?96x8`MU->g9{F!~W?!ByteUbkGckjw^n<~&` P00000NkvXXu0mjfFxxzi literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/system_false.png b/app/src/main/res/drawable/system_false.png new file mode 100644 index 0000000000000000000000000000000000000000..81249b42a6509bc56e1a2908aaf20976274a389e GIT binary patch literal 1836 zcmV+{2h;e8P)0K~#7F-C9jj z8&?qSej1TVvaoJ|IDy5^2B(m2fKPzEOvTt}VTdaWi$%%>PL*&V$F(`sa1`bU%a{;?^I}%4S%o0@?}~GY=Lj zGLC>H`At9rL>Ta210s4?0PGB1+k0Do(uWxV;gYzs|Ga7qt?=gW@n*{~9ePCejdf}7 zvdm4*kT60BPg&Ykm?@}(WVVmiA9r91ya;8LBoLrD5?~VPpe7 zBUpHi?hl*WS?Mz|bgTKSTqqV^@t+l#21I?5mm!v6I`q7ucQ=c+Od7#bbGK4(oD)c5 zhS+lcVbLZ_d^P$~ zqaO55y)J1_04mlpxRHgu{qHRcGXyiroI72R~ZqpPvcT?aE-4_rC zci2)!OJ{{|B7)%<)H9@eNHN{8=exj=m>Q^{dRQ})MGdYg^qr)b(XIc~QxCqes~Wv% zO1!D|ENprchL(QajY}?D+F1}(o6S;83eH8*!j`LX)&Z~fN%{~9O{2;&;xaQ!mV&6I8mtbyVh}k(*oU8HyRUXIY zQ|It=yh{Fgk#(xdU{4RG$@8S1;jn)%hch|?`?~w!$JM0eZXZ0~FhC)O#M^AvAP1KA zci)G@1zC8}efYSQG>^_0@6s!eFK~6Rvd5#Jo6Qlwk_+c~LDyoI>>LkurE0 zh@LY}R_9>`AZt_4u#2V~8RWXT85PgN57HUJ894xhMiD~#+NcVh2F9xXoKg#ln%iWx zO;L!{+<(mHLjYR*l-Pvl5nuT(N%lT|i$p1LQO;PT*Dr7&t(Uy>ILTghaCp{%VlmT% z@bs)N$_*A2yYt*(!4BPbeip}h(LY(D^Zy(@&LbB`-$O|y*lPl5n8|N5`r#eIHHUQn zoO5lO3Vn4IgbJUTNY#|bxJZ(c55^QcrYVvHKX;r7ExFrVpRPvMK(lhZ zzS+>$monC{IE*kP%yb`awjcpgHd89=gRWn$(s3^I$he`xq|7$S<@|O>Ox^4D!H!x) zk+QBf2Mw)33bXZ z0lw1czuVtgB3m@=iT)8(WO4srbjf+ONhG%!A&>mQ^j>R65IM2n3^yqeIhiV z*gEbVKX_c1zn1rRTAH~@JJNCg?WNv>kPe~?wYb)fzZRsxKQoqIWw>L|;!L}$C8x4s z1Y5GGcri8~_Tha=x%~@Mc2#h_9zw0kEt0NV|2c7Ly}mS z_HvWY1iW$Fk9* + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/system_true.png b/app/src/main/res/drawable/system_true.png new file mode 100644 index 0000000000000000000000000000000000000000..d15beb6291ccd83b7ac2b0b5d0441ff2ebe298e7 GIT binary patch literal 1041 zcmV+s1n&EZP)r4V5L4qI!sDO+>L}eefEtM^+;Ylcm=j)_A+45k^u_%fTJ_@W7wJkea45s7JmcuY1 z@2ZH#{LmyD-U??_WR72W&K0x5OI!B%_Sivg&`e=(=czEbe2*!}0V}Ao<;Bw>wYQFT znvhy(GuWG#4`#7a0m@KYgS|O!1e$gt?@pj0WtF3S+Fu1J2vA1jWX6y;DKn!f1(|w6 zqtNYi;*}bN8i&yBjJ^(`8)zGWwhp92j5R-$m0@QG`8{9++0rT<7}_<;R-!|6AtC#i zS;2laIqV&M9FU)^lA(2(eght5q`?s?fk$!%%F$0H@N5M7wPRe$rH~PrwhkW6(0k26 z;JbIwOM6O73|_a(@RS12E%+7MGJG!(KM90-r1>(T|1QXRM!^&;z6$lFgU1EpYwWWV z+8>~QJ(*)Sv_U~X*zb==xNO|ed)3wOXA75)4gHKOL}!MA%SLBc=%)B2<~HJnoI))$ zK7bo^2v!MvbJR@T5&F18EMG01+V>t|lG_ctj-1LdjGRpXpJw!-}bUU7}E~6w7$Xz#){YgB(t+}mFYEX_(i|;rn zhp{%`0rFw9#bK;ahK~?v+zDfAU7bj)M36$kTYU~Ik> z{VB;7Pt%Q>p*dM4lvgJ7-4xiY-LKKh@*qaEs)f)OB1{ZgrSV0GUO#5idy}kP9iXg#1OaWRhpt`if00000 LNkvXXu0mjfk5|&X literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/test_ic.png b/app/src/main/res/drawable/test_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..5243453719c4bb77a675f18ed9783db0d9287f0a GIT binary patch literal 933 zcmeAS@N?(olHy`uVBq!ia0vp^Za^Hu!3HGl4ID*)6lZ})WHAGSm?{V}dIqU{017e| z2e~^jtUD+363Agmcl32+VA$Bt{U?!?fq~h|)5S5Qg7NL0{r(h_FckT^e^~yMWbMW1bJ51RdJUc|r-2D0I#qlpkqJB>Dn(^;V$^1=Mq62Pl2DWTy zlWMcOQ|AzUDR0K5X-SdV6MH|MZ=1Va|MIlOFXwDax_CDztMu5Tsy@FJjW<`SXsP$C zC=h!x#qEN!Le>TCO>9f`8dp4hv+RP@W%fnWHosrycttf)La0pvV zrJ1}IEGKi88OvwOGp^nAz_|47QIjS?pZ)UH7R+`p=GRUO^s;4?m$aYy=;zwX51xxA ze0a*ZLM@x;u*I3at9AS}o91q4KbWp}O+qR~edfwC2y{uaT&F^4=o4OIjo~CsWYw?~ivid%CjA7FtODIJ$lP>ovm9S!S#fRt>fE z@tSb)R#I2D({)xmpYtb!6O#68sC-E5GyS0z@^*oSN|AL%uZ!YDuFDxBLNg7{0+}3_ zb3}xG8K?z%thnd$?rZMn^i1>pH#J<8ot({iq`Hj06%ZA9idJk# zD>(%97YXdOv71<|CTPjQxPH-uORFc%)$g$?jCv)ma`uxEmuBliYll|Nl6L}3X{mp^ zp9gyE;466(D6;5PY=l*kw(Oje?-p~`)}Qcf;SJa!bv~cB^6TPF`zK^SVdY(+xC5B0 O7(8A5T-G@yGywooshQ9K literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/tool_ic.png b/app/src/main/res/drawable/tool_ic.png new file mode 100644 index 0000000000000000000000000000000000000000..51c9993a6642e3bf736efa4925ebe09fcb5641b5 GIT binary patch literal 1506 zcmbVM`9ISQ0RC$3DI}v1nMqnXi-hJIHgb+3=IU}r&bdj1N|;{Ww;@pxIhS*2A+xY8 z#_PdASc%(o5*$f$`nL zTn_*M7~&5(jIeUc2PH=U77YTW49U5J!0D!Ess{iSDbO8PE&$*n80qU-hj1)rGtDH> zlC)?t#Ug$!RU3ud;$C~$ZLN}kS$rD`$+{_uFK44PU0+zta#-0{)jZdbDX{i@U8^YL zvktFags?N?U}ZD^jv^_%%cZ|kqA4dyo0!cRN78IdC&4XRjm*nR?e{kZ46go;3fUHqjqu(2BR6P@YvX$wi1}s*_OLPas#UJ0W|6k<$G^oNvv@|Ap2Z_F zjvF{7OaO5>2{Z#Hua498AAh{~E9`@)C{G>Kad;%B=FZ|b(BLblL1xp2tMDZfi6yy` z_81?K;aJ!v>l`$n z2PUt?FZD(-ubw)E%j4>{~ryW`dLCYn7$K zJ?mDLyJP~n#&RZeE;KJC=C$JmacY^z3NYr^L z){CegKr1*a^}bdrH`8a_>7<$ea@I|2wwL;zoafiD(lEbky1PLqT#lxe&to4ZAay`rqH}C{`&lR z6Z_qzxlB6Zsh6W(1qe}{_CDIyh`Ol_mbFwqxSAPctHrx+^n%Pk0xS2BV<$}H{@BQz zuz#nq=J#Er{@ijEN&}N>nr96&%+4z|iH`zB<>rU$$gm*0!v%qkVWkBYu|5X2`A<(J zqI1s-@*`v^4Gal*AWSPw{AK6=L#oA>LlCjMP=x0ua+1y|(MPvkFh#+G0?Q*CD*eW8 z&-&fYM+z+@_H$g-V#~VtYxG=p!0tCRC`jQhdXkq0XbR(Rg-J1}SKCYQZ|D0J#_>9| z=!&;drpz~XKI{PW%S)3vjr>D*C-fV;I&2WZpvI?_bno;yh)R~WgKv-Yw@)LBgC(KA zQ9zIvXQ+&$x16J^)LC`vKD9D~bfb=5D`B2y=S~fr`EH=wU3hv`S+$B)Y+}w>(eBby zA+lnUItQMR+9zCuPbdptx(w>d-^aNF=8UjV*nP#>SNqzf2jj%YIU&3lc|yH~HxG?y z@l!aH6bx^n#;=sf547-<8^=FvD`$q*?pGRi*EEmj_|}{>90wt>S&hT+GVU+1_s9YB qo%Rv{RpL<8J-OsHazmNFy&w!DEnSLqg68j(Dq}R9r literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/user_false.png b/app/src/main/res/drawable/user_false.png new file mode 100644 index 0000000000000000000000000000000000000000..46147608c275259f025a4605d165715b84b12192 GIT binary patch literal 963 zcmV;!13dhRP)2{mG|E$j97yM@IXVu0WnBS_!)62SSc7c*)su<`N!qh&b8sj$&kr6pn%(JNY@ z4CI8%=s6QMwpLo#hiOD-Uq^aEM{f@f5O9Er6zoJ9GNiCIQhu6+1FVIOzAQ~gT7I1% zWWBUlhXd>*7A6XpP~IdUSYjpY=IV2u&XI*RuieL>87WmosrJ!xp4+upqLq0~}-!BP7H{Sm5M6mP8^88^X{&VuTfcfd!F;`Gvwh z>lzPnLEs<6OHn1I|yJZ#uj`c}d!vx~l7Gd>(6>(aVEv(AdL9?WQQ z&Jqc+df}okvlbTKgi>xgVCGsXI4Hsa9vtxX&D-7K+qVcrc|=8vl7X726dr$r1Dw5} zE3*ql!F-qX4Wd_=H`Bq7>xr}mnwSpQONk-_<3yA_{%ZF1Gqv1ELT+&`>@cQZliIB! z@~-{)MXo8OEx452*}WH!^)_I@fB}(lZE@!yk<*zkOM-^kn4pZTZf{!MHc{g}$E3?J z#Z`S$6GXMj>_Z<8u@YvSBnr}Z1o5PHc5;U%DiL8{zu>C^-nOmKo`vPh#mvuh=jVt` z`E-JbN>oe}OYlvlAEhEWu`p9nh;!Z)DVn#BOwVleDzK}tR)kJR&{0k-@K|Aul8DN& z`iBwFW6Eq!X`#QqnKnS}l&EKCq7 z?_JWCUKct}LR-SlsHi4w;#wW_85U(|8}o+3#@1F6m-%`o9P@^`A;b%3$b@I;4=!KP zrjj<7e4&fgDfAKAXPFC+V{0WwpCLVYRk(C + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/user_true.png b/app/src/main/res/drawable/user_true.png new file mode 100644 index 0000000000000000000000000000000000000000..94afc5ae881395286de423de72332d02ef2bfb4d GIT binary patch literal 620 zcmV-y0+aoTP)gk00009a7bBm000&x z000&x0ZCFM@Bjb+0drDELIAGL9O(c600d`2O+f$vv5yPxAHzM*P*7VCGlCx;p+F-j zfgeViveO6}!XK>&3KET=Zv==&&<1|kX}aL6P#QqEaPzA;Ci#Mc(Msh z1A7P4o9%4KKC|N0%*T>{<;oQ$O?cb!{$UMx+fD@8NhdHq!_ba`_$PQ+iNWcD&|LNaQH%$YDUrKL6EU6GQe6sh`M zPZLO~S9ey)-Hn1Tq-rkn?#QIJ3&_=Gd_4c?SPTynbccfD{;+f3n zHnMz+AaN}F;J}p5>y14{zM$K@o|yd9?h&Cb(*7ieI(`8BK=pFCYRr)U0000Y#DT(XIFJ@X%LnI7e6vB4v)I7(}W$3?xlmi&G}-^73*UjcXV*u7j-&l1^NO0O#lD zYas7C4mX6p4-N574OJhPNf^H>M!jE}4e5ZOLs(DS$G2&@7syak#p=V)t#}kk(gL`H!@=y|LGm3S}&HBow}ok3=N_-F6FB z$FQfYP`v|dt0h@mkZ@!AgQKh)zZat7&>${^TlpFHyKe}C32&lOGph@tP7D62@t%l^ zBGOei6{^>lmX?~MlOS@FU3rrGvhuX5ktm0h zipEiE@^U#^SH^CkkeLd`arkJbd5Y|diwh2HyJ>Ysqy<@I$p+V8mTh4HYE7B7;E1&* z@&SY36J{xFtzOZ$)dPeM*D00wMc2V>C=4(n3EO4?S~CQ39aG6eD0I<&0CW5^=4E;^ zkkdAM4>A|V848jHt3AU16MI1bQ*6Q%w`1jpAZtgLEDuvW#)A}iIgo1M75oT+3{smg z#UHY~wYnb{R%9LX(DZ zq(V;D;bkf|0Vp)$0ViifvP^RdXM~ZMcp0S$UN)D|f*O(Cj;n+co~=Fkp$gZd_BeP$SW2MVX9Ca{(p-iWS^!!5 zV^l#&P7-?oZwO<4Eah@ut9`8D4Pi2EJPxi`{wTvI3mZE>2r`d_C-8}|T9TEq48gC9 t#G?_sA&gQ-&LIw_zD6@UEc0pl?jLXQPqi zF;SzKjag$ZOx8qm?YibZ$-PH5=kB|SGCjXUo~3 zda5Oq5aNtK0+~83FTViSvk9R=$n}_3URI^5`u1I1{*e&d=ciTGf^|px}>LdN$Jz`PT*M+%5MWu(8m+TBL@Kc;c!QRkL8*0 zXNU|_H8s&8-202=Bt}Rgeu@pm7x#Ef=a4&yiY!1Y*&Bq|F%Qy;?mK)yo)$WkHI-YKq32KToLXd`96 zTrkgvU9i-WJmTx5wRsG;HZl>o;uSG;CsBZZ`xK0`fpW@UA`2Lu98vI6BJ>mTt%<0o z<4*eNYQ1SWF%fcADYwDqF*>Lw#Faf1lE48%)Py@jNH{qQ%9Ml)C(q#`g6N4iaU)Yu zz$W}T)R0DEhz<-J&EZKr%ILgt>P<%^0Ftl4SAeFMB%_yXZn64h=L(1za>IVDsd)f6Er%Eog`J{tOwK zkU`1B43jkjoB$4RBL58SF9$LtI*l*O&}noU&{>~{x@{w-SJmZ%QcXREzAWxchTN

Fj3&}lnnw%iEZRz!(lzuh&X-H#UgAFFRlF1L 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 + android:src="@drawable/main_logo" /> - - + style="@style/TextTitleBig" + android:text="@string/app_name" /> + android:paddingHorizontal="7dp" + android:layout_marginEnd="10dp" + android:src="@drawable/more_point"/> @@ -61,14 +59,14 @@ android:background="@color/forground_color" app:tabGravity="center" app:layout_collapseMode="pin" - app:tabIndicatorColor="@color/main_tab_indicatorColor" + app:tabIndicatorColor="@color/module_title_color" app:tabIndicatorFullWidth="true" app:tabIndicatorHeight="@dimen/tab_indicator_height" app:tabMaxWidth="100dp" app:tabMinWidth="100dp" app:tabMode="scrollable" app:tabRippleColor="@null" - app:tabSelectedTextColor="@color/main_tab_selected" + app:tabSelectedTextColor="@color/module_title_color" app:tabTextColor="@color/main_tab_unselected" /> diff --git a/app/src/main/res/layout/activity_temperature.xml b/app/src/main/res/layout/activity_temperature.xml new file mode 100644 index 0000000..e073d5b --- /dev/null +++ b/app/src/main/res/layout/activity_temperature.xml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/common_check_style1.xml b/app/src/main/res/layout/common_check_style1.xml new file mode 100644 index 0000000..e8a2216 --- /dev/null +++ b/app/src/main/res/layout/common_check_style1.xml @@ -0,0 +1,27 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/common_dialog_item.xml b/app/src/main/res/layout/common_dialog_item.xml index 0fa933b..93687e2 100644 --- a/app/src/main/res/layout/common_dialog_item.xml +++ b/app/src/main/res/layout/common_dialog_item.xml @@ -3,9 +3,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" - android:paddingStart="20dp" + android:paddingStart="25dp" android:paddingTop="12dp" - android:paddingEnd="20dp"> + android:paddingEnd="25dp"> + android:text="333" + android:layout_marginBottom="6dp" /> \ No newline at end of file diff --git a/app/src/main/res/layout/common_sensor_style.xml b/app/src/main/res/layout/common_sensor_style.xml new file mode 100644 index 0000000..038bde3 --- /dev/null +++ b/app/src/main/res/layout/common_sensor_style.xml @@ -0,0 +1,41 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dashboard_module_bottom.xml b/app/src/main/res/layout/dashboard_module_bottom.xml index a840613..cda0cb2 100644 --- a/app/src/main/res/layout/dashboard_module_bottom.xml +++ b/app/src/main/res/layout/dashboard_module_bottom.xml @@ -12,9 +12,9 @@ android:id="@+id/relayout_tests" android:layout_width="0dp" android:layout_height="wrap_content" - android:background="@drawable/dashboard_model_background" + android:background="@drawable/dashboard_model_left_both" android:gravity="center" - android:orientation="vertical" + android:orientation="horizontal" android:paddingHorizontal="@dimen/dashboard_model_padding_horizontal" android:paddingVertical="@dimen/dashboard_model_padding_vertical" app:layout_constraintHorizontal_weight="1" @@ -24,14 +24,16 @@ + android:layout_height="35dp" + android:src="@drawable/test_ic" /> @@ -43,9 +45,9 @@ android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/common_module_interval_small" - android:background="@drawable/dashboard_model_background" + android:background="@drawable/dashboard_tool_background" android:gravity="center" - android:orientation="vertical" + android:orientation="horizontal" android:paddingHorizontal="@dimen/dashboard_model_padding_horizontal" android:paddingVertical="@dimen/dashboard_model_padding_vertical" app:layout_constraintHorizontal_weight="1" @@ -55,8 +57,8 @@ + android:layout_height="35dp" + android:src="@drawable/tool_ic" /> - + style="@style/TextDeviceLogo" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="OPPO" + android:layout_marginHorizontal="20dp" + android:layout_centerVertical="true" + tools:ignore="RelativeOverlap" /> @@ -141,10 +152,10 @@ + android:src="@drawable/item_point" /> diff --git a/app/src/main/res/layout/dashboard_module_center.xml b/app/src/main/res/layout/dashboard_module_center.xml index c824e63..e33f0bf 100644 --- a/app/src/main/res/layout/dashboard_module_center.xml +++ b/app/src/main/res/layout/dashboard_module_center.xml @@ -4,7 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/common_module_interval_medium" + android:layout_marginTop="@dimen/dashboard_model_padding_horizontal" android:orientation="vertical"> + android:src="@drawable/item_point" /> + android:src="@drawable/battery_ic" /> + android:src="@drawable/item_point" /> + android:src="@drawable/wifi_ic" /> + android:src="@drawable/item_point" /> + android:src="@drawable/app_ic" /> + android:src="@drawable/item_point" /> + android:src="@drawable/display_ic" /> + android:src="@drawable/item_point" /> + android:src="@drawable/radius_bg" /> + android:src="@drawable/item_point" /> + android:src="@drawable/stroke_bg" /> + android:paddingHorizontal="5dp" + android:src="@drawable/item_point" /> diff --git a/app/src/main/res/layout/dialog_app_click.xml b/app/src/main/res/layout/dialog_app_click.xml new file mode 100644 index 0000000..46555e4 --- /dev/null +++ b/app/src/main/res/layout/dialog_app_click.xml @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/dialog_app_install.xml b/app/src/main/res/layout/dialog_app_install.xml new file mode 100644 index 0000000..065894f --- /dev/null +++ b/app/src/main/res/layout/dialog_app_install.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_base.xml b/app/src/main/res/layout/dialog_base.xml index 5b2551d..664e8d2 100644 --- a/app/src/main/res/layout/dialog_base.xml +++ b/app/src/main/res/layout/dialog_base.xml @@ -8,11 +8,11 @@ @@ -20,18 +20,19 @@ android:id="@+id/view_line" android:layout_width="match_parent" android:layout_height="1dp" - android:layout_marginTop="60dp" + android:layout_marginTop="80dp" android:background="@color/module_title_color" app:layout_constraintTop_toTopOf="parent" /> @@ -63,8 +64,10 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" + android:layout_marginBottom="10dp" android:text="@string/settings" app:layout_constraintRight_toRightOf="parent" + app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintTop_toBottomOf="@id/contentContainer" /> diff --git a/app/src/main/res/layout/dialog_memory.xml b/app/src/main/res/layout/dialog_memory.xml new file mode 100644 index 0000000..e530255 --- /dev/null +++ b/app/src/main/res/layout/dialog_memory.xml @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_operating.xml b/app/src/main/res/layout/dialog_operating.xml new file mode 100644 index 0000000..a930718 --- /dev/null +++ b/app/src/main/res/layout/dialog_operating.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_storage.xml b/app/src/main/res/layout/dialog_storage.xml new file mode 100644 index 0000000..052e2f1 --- /dev/null +++ b/app/src/main/res/layout/dialog_storage.xml @@ -0,0 +1,279 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_apps.xml b/app/src/main/res/layout/fragment_apps.xml new file mode 100644 index 0000000..c412f66 --- /dev/null +++ b/app/src/main/res/layout/fragment_apps.xml @@ -0,0 +1,169 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_hard_ware.xml b/app/src/main/res/layout/fragment_hard_ware.xml index 86b57d4..e2b5c2f 100644 --- a/app/src/main/res/layout/fragment_hard_ware.xml +++ b/app/src/main/res/layout/fragment_hard_ware.xml @@ -218,7 +218,7 @@ tools:ignore="RelativeOverlap" /> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_app_list.xml b/app/src/main/res/layout/item_app_list.xml new file mode 100644 index 0000000..1998989 --- /dev/null +++ b/app/src/main/res/layout/item_app_list.xml @@ -0,0 +1,37 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_common_temp.xml b/app/src/main/res/layout/item_common_temp.xml new file mode 100644 index 0000000..74ae56f --- /dev/null +++ b/app/src/main/res/layout/item_common_temp.xml @@ -0,0 +1,33 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 8665cdb..0c91d86 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,16 +3,15 @@ #FF000000 #FFFFFFFF #1E8C29 - #C3C0C0 + #7F7F7F #1E8C29 - #1E8C29 #FFFFFF #EDEDED #3B948A - #444544 #626262 #757575 #484848 #666666 #757575 + #2B2B2B \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 667f2e4..e90d92f 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -2,7 +2,7 @@ 20sp 15sp - 13sp + 14sp @@ -12,8 +12,8 @@ 3dp 3dp - 13dp - 2dp + 10dp + 0dp 8dp 15dp @@ -26,7 +26,7 @@ 8dp - 3dp + 5dp 7dp 10dp \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5be2d74..9a6ec8e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -213,6 +213,42 @@ Input devices Bluetooth 4 features Bluetooth 5 features - + Security patch + Build + EMUI + Instruction sets + System apps + User apps + Installed apps + size + User + All + ScreenReader + Package name + Target SDK + Minimum SDK + Installer type + Installed + UID + Permissions + = Allowed + = Special access + = Not allowed + Temperatures + Magnetic field + Orientation + Light + Gravity + Linear acceleration + Rotation vector + Step counter + HALL sensor + Type + Maximum range + Power + Wakeup sensor + Signifcant Motion + Geomagnetic Rotation Vector + RPC sensor \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 144fb0f..edf5221 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,30 +1,35 @@ - - + + @@ -39,7 +44,7 @@ @@ -56,6 +62,7 @@ @@ -63,6 +70,7 @@ @@ -95,7 +103,7 @@ @@ -190,4 +198,10 @@ @anim/popup_enter @anim/popup_exit + + + \ No newline at end of file