From 1fd0951f926d31369b7dcbe348e2c0f628956bbf Mon Sep 17 00:00:00 2001 From: Li ZongYing Date: Tue, 16 Jan 2024 19:04:43 +0800 Subject: [PATCH] channel reversal --- .../java/com/lizongying/mytv/MainActivity.kt | 92 ++++++++++--------- .../com/lizongying/mytv/MyDialogFragment.kt | 44 +++++++++ app/src/main/res/layout/dialog.xml | 44 +++++++++ app/src/main/res/layout/info.xml | 1 - app/src/main/res/values/strings.xml | 2 +- app/src/main/res/values/styles.xml | 1 - 6 files changed, 140 insertions(+), 44 deletions(-) create mode 100644 app/src/main/java/com/lizongying/mytv/MyDialogFragment.kt create mode 100644 app/src/main/res/layout/dialog.xml diff --git a/app/src/main/java/com/lizongying/mytv/MainActivity.kt b/app/src/main/java/com/lizongying/mytv/MainActivity.kt index 4a39d67..a7d4363 100644 --- a/app/src/main/java/com/lizongying/mytv/MainActivity.kt +++ b/app/src/main/java/com/lizongying/mytv/MainActivity.kt @@ -1,11 +1,11 @@ package com.lizongying.mytv -import android.app.AlertDialog +import android.content.Context +import android.content.SharedPreferences import android.content.pm.PackageInfo import android.content.pm.PackageManager import android.content.pm.Signature import android.content.pm.SigningInfo -import android.graphics.Color import android.os.Build import android.os.Bundle import android.os.Handler @@ -16,11 +16,7 @@ import android.view.KeyEvent import android.view.MotionEvent import android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION import android.view.WindowManager -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView import android.widget.Toast -import androidx.core.content.ContextCompat import androidx.fragment.app.FragmentActivity import com.lizongying.mytv.models.TVViewModel import java.security.MessageDigest @@ -39,6 +35,9 @@ class MainActivity : FragmentActivity() { private val handler = Handler() private val delay: Long = 4000 + private lateinit var sharedPref: SharedPreferences + private var channelReversal = false + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) @@ -57,6 +56,9 @@ class MainActivity : FragmentActivity() { mainFragment.view?.requestFocus() } gestureDetector = GestureDetector(this, GestureListener()) + + sharedPref = getPreferences(Context.MODE_PRIVATE) + channelReversal = sharedPref.getBoolean(CHANNEL_REVERSAL, false) } fun showInfoFragment(tvViewModel: TVViewModel) { @@ -170,42 +172,30 @@ class MainActivity : FragmentActivity() { } } + fun saveChannelReversal(channelReversal: Boolean) { + with(sharedPref.edit()) { + putBoolean(CHANNEL_REVERSAL, channelReversal) + apply() + } + this.channelReversal = channelReversal + } + private fun showHelp() { + if (!mainFragment.isHidden) { + return + } + val versionName = getPackageInfo().versionName - - val textView = TextView(this) - textView.text = - "当前版本: $versionName\n获取最新: https://github.com/lizongying/my-tv/releases/" - textView.setBackgroundColor(0xFF263238.toInt()) - textView.setPadding(20, 50, 20, 20) - - val imageView = ImageView(this) - val drawable = ContextCompat.getDrawable(this, R.drawable.appreciate) - imageView.setImageDrawable(drawable) - imageView.setBackgroundColor(Color.WHITE) - - val linearLayout = LinearLayout(this) - linearLayout.orientation = LinearLayout.VERTICAL - linearLayout.addView(textView) - linearLayout.addView(imageView) - - val layoutParams = LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT - ) - imageView.layoutParams = layoutParams - textView.layoutParams = layoutParams - - val builder: AlertDialog.Builder = AlertDialog.Builder(this) - builder - .setView(linearLayout) - - val dialog: AlertDialog = builder.create() - dialog.show() + val dialogFragment = MyDialogFragment(versionName, channelReversal) + dialogFragment.show(supportFragmentManager, "settings_dialog") } private fun channelUp() { if (mainFragment.isHidden) { + if (channelReversal) { + next() + return + } prev() } else { // if (mainFragment.selectedPosition == 0) { @@ -219,6 +209,10 @@ class MainActivity : FragmentActivity() { private fun channelDown() { if (mainFragment.isHidden) { + if (channelReversal) { + prev() + return + } next() } else { // if (mainFragment.selectedPosition == mainFragment.tvListViewModel.maxNum.size - 1) { @@ -250,12 +244,22 @@ class MainActivity : FragmentActivity() { override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { when (keyCode) { + KeyEvent.KEYCODE_ESCAPE -> { + back() + return true + } + KeyEvent.KEYCODE_BACK -> { back() return true } - KeyEvent.KEYCODE_SETTINGS -> { + KeyEvent.KEYCODE_BOOKMARK -> { + showHelp() + return true + } + + KeyEvent.KEYCODE_UNKNOWN -> { showHelp() return true } @@ -265,6 +269,11 @@ class MainActivity : FragmentActivity() { return true } + KeyEvent.KEYCODE_SETTINGS -> { + showHelp() + return true + } + KeyEvent.KEYCODE_MENU -> { showHelp() return true @@ -282,14 +291,14 @@ class MainActivity : FragmentActivity() { channelUp() } - KeyEvent.KEYCODE_DPAD_DOWN -> { - channelDown() - } - KeyEvent.KEYCODE_CHANNEL_UP -> { channelUp() } + KeyEvent.KEYCODE_DPAD_DOWN -> { + channelDown() + } + KeyEvent.KEYCODE_CHANNEL_DOWN -> { channelDown() } @@ -376,5 +385,6 @@ class MainActivity : FragmentActivity() { companion object { private const val TAG = "MainActivity" + private const val CHANNEL_REVERSAL = "channel_reversal" } } \ No newline at end of file diff --git a/app/src/main/java/com/lizongying/mytv/MyDialogFragment.kt b/app/src/main/java/com/lizongying/mytv/MyDialogFragment.kt new file mode 100644 index 0000000..71c328d --- /dev/null +++ b/app/src/main/java/com/lizongying/mytv/MyDialogFragment.kt @@ -0,0 +1,44 @@ +package com.lizongying.mytv + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.DialogFragment +import com.lizongying.mytv.databinding.DialogBinding + + +class MyDialogFragment(private val versionName: String, private val channelReversal: Boolean) : + DialogFragment() { + + private var _binding: DialogBinding? = null + private val binding get() = _binding!! + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { + _binding = DialogBinding.inflate(inflater, container, false) + _binding?.version?.text = + "当前版本: $versionName\n获取最新: https://github.com/lizongying/my-tv/releases/" + + val switchView = _binding?.switchView + switchView?.isChecked = channelReversal + switchView?.setOnCheckedChangeListener { _, isChecked -> + (activity as MainActivity).saveChannelReversal(isChecked) + } + + return binding.root + } + + override fun onDestroyView() { + super.onDestroyView() + _binding = null + } + + companion object { + const val TAG = "MyDialogFragment" + } +} + diff --git a/app/src/main/res/layout/dialog.xml b/app/src/main/res/layout/dialog.xml new file mode 100644 index 0000000..45bf1fc --- /dev/null +++ b/app/src/main/res/layout/dialog.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/info.xml b/app/src/main/res/layout/info.xml index b3e3e69..1678e33 100644 --- a/app/src/main/res/layout/info.xml +++ b/app/src/main/res/layout/info.xml @@ -12,7 +12,6 @@ android:layout_width="100dp" android:layout_height="wrap_content" android:layout_marginTop="8dp" - android:contentDescription="@string/logo" android:padding="10dp" /> 我的电视 - logo + 频道反转 \ 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 9b249ed..3deb8ab 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,6 +1,5 @@ -