From e3ef108511c3f71e1953c1004a662a1da339cdfe Mon Sep 17 00:00:00 2001 From: yuqian Date: Mon, 22 Dec 2025 11:42:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9Edisplay=E5=92=8Capp=E5=BC=B9?= =?UTF-8?q?=E6=A1=86=EF=BC=8C=E4=BF=AE=E6=94=B9=E7=94=B5=E6=B1=A0=E5=B8=83?= =?UTF-8?q?=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../myphoneinfo/dashboard/AppsFragment.kt | 13 ++ .../myphoneinfo/dashboard/BatteryFragment.kt | 10 +- .../myphoneinfo/dashboard/HardWareFragment.kt | 13 +- .../dialog/BottomDialogFragment.kt | 125 ++++++++++++++++++ .../res/drawable/dialog_top_background.xml | 7 + .../src/main/res/layout/fragment_apps.xml | 32 +++-- .../res/layout/fragment_bottom_dialog.xml | 38 ++++++ .../main/res/layout/item_bottom_dialog.xml | 28 ++++ .../src/main/res/mipmap-xhdpi/app_more.png | Bin 0 -> 430 bytes .../src/main/res/mipmap-xhdpi/select.png | Bin 0 -> 444 bytes .../src/main/res/mipmap-xhdpi/user_bottom.png | Bin 0 -> 256 bytes 11 files changed, 255 insertions(+), 11 deletions(-) create mode 100644 myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/BottomDialogFragment.kt create mode 100644 myphoneinfo/src/main/res/drawable/dialog_top_background.xml create mode 100644 myphoneinfo/src/main/res/layout/fragment_bottom_dialog.xml create mode 100644 myphoneinfo/src/main/res/layout/item_bottom_dialog.xml create mode 100644 myphoneinfo/src/main/res/mipmap-xhdpi/app_more.png create mode 100644 myphoneinfo/src/main/res/mipmap-xhdpi/select.png create mode 100644 myphoneinfo/src/main/res/mipmap-xhdpi/user_bottom.png diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt index 1add48c..36e1642 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/AppsFragment.kt @@ -1,6 +1,7 @@ package com.xyzshell.myphoneinfo.dashboard import android.os.Bundle +import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -10,10 +11,14 @@ import com.xyzshell.myphoneinfo.R import com.xyzshell.myphoneinfo.adapter.AppListAdapter import com.xyzshell.myphoneinfo.databinding.FragmentAppsBinding import com.xyzshell.myphoneinfo.dialog.AppDialogFragment +import com.xyzshell.myphoneinfo.dialog.BottomDialogFragment +import com.xyzshell.myphoneinfo.main.MainScrollActivity class AppsFragment : Fragment(),AppListAdapter.OnShowDialogListener { private lateinit var binding: FragmentAppsBinding private lateinit var dialogFragment: AppDialogFragment + private lateinit var bottomDialog: BottomDialogFragment + private var sel: Int? = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } @@ -28,6 +33,14 @@ class AppsFragment : Fragment(),AppListAdapter.OnShowDialogListener { adapter.setOnclickListener(this) binding.recyclerView.adapter = adapter binding.recyclerView.layoutManager = LinearLayoutManager(requireContext()) + binding.llTitle.setOnClickListener { + bottomDialog= BottomDialogFragment(type = "apps", sel = sel, invoke = {item-> + sel = item + }) + Log.d("sel", sel.toString()) + bottomDialog.show(requireActivity().supportFragmentManager, "BottomDialogFragment") + } + return binding.root } diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/BatteryFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/BatteryFragment.kt index b124dcd..66300d4 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/BatteryFragment.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/BatteryFragment.kt @@ -6,8 +6,10 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import com.xyzshell.myphoneinfo.R +import com.xyzshell.myphoneinfo.databinding.FragmentBatteryBinding class BatteryFragment : Fragment() { + private lateinit var binding: FragmentBatteryBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } @@ -17,7 +19,13 @@ class BatteryFragment : Fragment() { savedInstanceState: Bundle? ): View? { // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_battery, container, false) + binding = FragmentBatteryBinding.inflate(inflater, container, false) + initView() + return binding.root + } + + private fun initView() { + } companion object { diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/HardWareFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/HardWareFragment.kt index de83e00..453c7c5 100644 --- a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/HardWareFragment.kt +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dashboard/HardWareFragment.kt @@ -14,6 +14,7 @@ import com.xyzshell.myphoneinfo.dialog.DialogBlueTooth import com.xyzshell.myphoneinfo.dialog.DialogDiskPart import com.xyzshell.myphoneinfo.dialog.DialogExtension import com.xyzshell.myphoneinfo.dialog.DialogInput +import kotlin.math.roundToInt class HardWareFragment : Fragment() { private lateinit var binding: FragmentHardWareBinding @@ -115,14 +116,24 @@ class HardWareFragment : Fragment() { } } //display + val defaultDisplayInfo = AndInfo.instance.display.getDefaultDisplayInfo() + if(defaultDisplayInfo!=null){ + binding.disText1.textContent.text=defaultDisplayInfo.widthPixels.toString()+"x"+defaultDisplayInfo.heightPixels.toString() + } binding.disText1.textTitle.text=getString(R.string.resolution) - binding.disText2.textTitle.text=getString(R.string.screen_density) + + binding.disText2.textTitle.text=getString(R.string.screen_density)//这个是px binding.disText3.textTitle.text=getString(R.string.screen_density_d) + val dpiStr=defaultDisplayInfo?.densityDpi.toString()+"(xxhdpi)\n"+defaultDisplayInfo?.xdpi?.roundToInt()+"dp"+defaultDisplayInfo?.ydpi?.roundToInt()+"dp" + binding.disText3.textContent.text=dpiStr binding.disText4.textTitle.text=getString(R.string.screen_size_e) binding.disText5.textTitle.text=getString(R.string.aspect_ratio) binding.disText6.textTitle.text=getString(R.string.refresh_rate) + binding.disText6.textContent.text=defaultDisplayInfo?.refreshRate.toString()+"HZ" binding.disText7.textTitle.text=getString(R.string.wide_color_gamut) + binding.disText7.textContent.text=defaultDisplayInfo?.isWideColorGamut.toString() binding.disText8.textTitle.text=getString(R.string.hdr_support) + binding.disText8.textContent.text=defaultDisplayInfo?.isHdr.toString() //memory val storageInfo = AndInfo.instance.storage//存储信息 diff --git a/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/BottomDialogFragment.kt b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/BottomDialogFragment.kt new file mode 100644 index 0000000..38017e6 --- /dev/null +++ b/myphoneinfo/src/main/java/com/xyzshell/myphoneinfo/dialog/BottomDialogFragment.kt @@ -0,0 +1,125 @@ +package com.xyzshell.myphoneinfo.dialog + +import android.app.Dialog +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.Window +import androidx.core.graphics.drawable.toDrawable +import androidx.fragment.app.DialogFragment +import com.xyzshell.myphoneinfo.R +import com.xyzshell.myphoneinfo.databinding.FragmentBottomDialogBinding + + +class BottomDialogFragment(val type:String, sel:Int? = null,val invoke:(Int)->Unit) : DialogFragment() { + private lateinit var vb: FragmentBottomDialogBinding + private var select=sel?:0 + private var appType=type + companion object { + const val FROMAPP = "app" + const val USER = 0 + const val SYSTEM = 1 + const val ALL = 2 + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + vb = FragmentBottomDialogBinding.inflate(layoutInflater) + init() + return vb.root + } + + private fun showUI(select: Int) { + when (select) { + USER->{ + vb.user.nameText.setTextColor(Color.parseColor("#3B948A")) + vb.user.check.visibility=View.VISIBLE + vb.system.nameText.setTextColor(Color.parseColor("#C1C5C2")) + vb.system.check.visibility=View.GONE + vb.all.nameText.setTextColor(Color.parseColor("#C1C5C2")) + vb.all.check.visibility=View.GONE + } + SYSTEM->{ + vb.user.nameText.setTextColor(Color.parseColor("#C1C5C2")) + vb.user.check.visibility=View.GONE + vb.system.nameText.setTextColor(Color.parseColor("#3B948A")) + vb.system.check.visibility=View.VISIBLE + vb.all.nameText.setTextColor(Color.parseColor("#C1C5C2")) + vb.all.check.visibility=View.GONE + } + ALL->{ + vb.user.nameText.setTextColor(Color.parseColor("#C1C5C2")) + vb.user.check.visibility=View.GONE + vb.system.nameText.setTextColor(Color.parseColor("#C1C5C2")) + vb.system.check.visibility=View.GONE + vb.all.nameText.setTextColor(Color.parseColor("#3B948A")) + vb.all.check.visibility=View.VISIBLE + } + + } + } + + override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { + val dialog = super.onCreateDialog(savedInstanceState) + + dialog.window?.apply { + requestFeature(Window.FEATURE_NO_TITLE) + setWindowAnimations(R.style.BottomSheetDialogStyle) + setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) + setGravity(Gravity.BOTTOM) + } + + return dialog + } + + override fun onStart() { + super.onStart() + dialog?.apply { + setCanceledOnTouchOutside(true) + window?.apply { + setBackgroundDrawable(Color.TRANSPARENT.toDrawable()) + setLayout( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) + } + } + } + + + private fun init() { + vb.user.nameText.text=getString(R.string.user) + vb.system.nameText.text=getString(R.string.system) + vb.all.nameText.text=getString(R.string.all) + showUI(select) + if(appType == FROMAPP){ + showUI(select) + } + vb.user.root.setOnClickListener { + showUI(USER) + invoke(USER) + dismiss() + } + + vb.system.root.setOnClickListener { + showUI(SYSTEM) + invoke(SYSTEM) + dismiss() + } + vb.all.root.setOnClickListener { + showUI(ALL) + invoke(ALL) + dismiss() + } + } + +} \ No newline at end of file diff --git a/myphoneinfo/src/main/res/drawable/dialog_top_background.xml b/myphoneinfo/src/main/res/drawable/dialog_top_background.xml new file mode 100644 index 0000000..f30b600 --- /dev/null +++ b/myphoneinfo/src/main/res/drawable/dialog_top_background.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/layout/fragment_apps.xml b/myphoneinfo/src/main/res/layout/fragment_apps.xml index bd7498d..edd8b09 100644 --- a/myphoneinfo/src/main/res/layout/fragment_apps.xml +++ b/myphoneinfo/src/main/res/layout/fragment_apps.xml @@ -23,16 +23,30 @@ android:background="@drawable/dashboard_model_background" android:paddingVertical="15sp" android:orientation="vertical"> - + android:gravity="center_vertical" + android:paddingHorizontal="20dp" + android:paddingVertical="10dp" + android:orientation="horizontal"> + + + + + + + + + + + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/layout/item_bottom_dialog.xml b/myphoneinfo/src/main/res/layout/item_bottom_dialog.xml new file mode 100644 index 0000000..3d71879 --- /dev/null +++ b/myphoneinfo/src/main/res/layout/item_bottom_dialog.xml @@ -0,0 +1,28 @@ + + + + + + + \ No newline at end of file diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/app_more.png b/myphoneinfo/src/main/res/mipmap-xhdpi/app_more.png new file mode 100644 index 0000000000000000000000000000000000000000..56c33e391a7658b5553883daaab4cc90c770fb20 GIT binary patch literal 430 zcmV;f0a5;mP)NA>VBf^d?S|V>6=2~wF;DquuOZ}eG4sQ@j`EMNsOQMP>vt@3ExLQq(sIct>XQwG zG!hwOXuKR^O3^M_UK&6OF5J){K8A)2pmE^1VR=o3cjnEAZySUlNA^}#bwI)Q{4G2< zJwfq}4pr)r=yt`tdzD(H0Mgg|b)gbME?+Y51{5LGbUb}{79q}e4kP}!WLK9^L+t?4 z;A!%L1ZUYZBA5ltwV|fUOSnrnvE-%9+-?fH=})7trO_LZhQ8lR%w#PGl>KNlP1CCU Y0>Tx7B^F9o7XSbN07*qoM6N<$f;pkL`v3p{ literal 0 HcmV?d00001 diff --git a/myphoneinfo/src/main/res/mipmap-xhdpi/select.png b/myphoneinfo/src/main/res/mipmap-xhdpi/select.png new file mode 100644 index 0000000000000000000000000000000000000000..9e1fc795f7e6c7203dda9ea7373fed596ed7de5f GIT binary patch literal 444 zcmV;t0Ym~a97VlJ@CpsUGXlNIQ^+oSPz_Fy9 z=z#NB;^t@iH9Nh&L_qAP-tkUuuH4^`&v(%{4jzJwllC4sDj mK6vf0Q9auAXVs?7-ewKwrRs0;KMV>00000sRSOM9XK_X7rY1xC)5CwEJWS;ckDY51%1C;#4C$r!K9@DqY*vP;As_A_2D*IfSD zV9y)z)tPdFS*<2#gZ7_%a#ZP>)#kEnvrEsnxvx+z{Zb_CBpWXocuII-Uy1Tk=QV4Z z%s;vRKXK4swfNoB<-&<4ojrG*zxU$z+8+$|sgTe~DWM4f#fe+@ literal 0 HcmV?d00001