Skip to content

Commit ba95ce5

Browse files
committed
number selection
1 parent e1ee909 commit ba95ce5

File tree

10 files changed

+261
-24
lines changed

10 files changed

+261
-24
lines changed

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,15 @@
1414

1515
## 更新日志
1616

17+
### v1.4.5(高版本专用)
18+
19+
* 数字选台配置
20+
21+
### v1.4.4(通用版)
22+
23+
* 优化图标显示
24+
* 增加换台反转
25+
1726
### v1.3.3
1827

1928
* 部分错误会提示用户

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
<uses-permission android:name="android.permission.INTERNET" />
1010
<application
1111
android:allowBackup="true"
12-
android:icon="@mipmap/ic_launcher"
12+
android:icon="@drawable/logo"
1313
android:label="@string/app_name"
1414
android:supportsRtl="true"
1515
android:theme="@style/Theme.MyTV">
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package com.lizongying.mytv
2+
3+
import android.os.Bundle
4+
import android.os.Handler
5+
import android.util.Log
6+
import android.view.LayoutInflater
7+
import android.view.View
8+
import android.view.ViewGroup
9+
import androidx.fragment.app.Fragment
10+
import com.lizongying.mytv.databinding.ChannelBinding
11+
import com.lizongying.mytv.models.TVViewModel
12+
13+
class ChannelFragment : Fragment() {
14+
private var _binding: ChannelBinding? = null
15+
private val binding get() = _binding!!
16+
17+
private val handler = Handler()
18+
private val delay: Long = 3000
19+
20+
override fun onCreateView(
21+
inflater: LayoutInflater, container: ViewGroup?,
22+
savedInstanceState: Bundle?
23+
): View {
24+
_binding = ChannelBinding.inflate(inflater, container, false)
25+
(activity as MainActivity).fragmentReady()
26+
return binding.root
27+
}
28+
29+
fun show(tvViewModel: TVViewModel) {
30+
binding.channelContent.text = tvViewModel.id.value.toString()
31+
handler.removeCallbacks(removeRunnable)
32+
view?.visibility = View.VISIBLE
33+
handler.postDelayed(removeRunnable, delay)
34+
}
35+
36+
fun show(channel: String) {
37+
if (binding.channelContent.text == "") {
38+
binding.channelContent.text = channel
39+
handler.removeCallbacks(removeRunnable)
40+
view?.visibility = View.VISIBLE
41+
handler.postDelayed(removeRunnable, delay)
42+
} else {
43+
val ch = "${binding.channelContent.text}$channel".toInt()
44+
Log.i(TAG, "channel $ch")
45+
(activity as MainActivity).play(ch)
46+
binding.channelContent.text = ""
47+
view?.visibility = View.GONE
48+
}
49+
}
50+
51+
override fun onResume() {
52+
super.onResume()
53+
handler.postDelayed(removeRunnable, delay)
54+
}
55+
56+
override fun onPause() {
57+
super.onPause()
58+
handler.removeCallbacks(removeRunnable)
59+
}
60+
61+
private val removeRunnable = Runnable {
62+
binding.channelContent.text = ""
63+
view?.visibility = View.GONE
64+
}
65+
66+
override fun onDestroyView() {
67+
super.onDestroyView()
68+
_binding = null
69+
}
70+
71+
companion object {
72+
private const val TAG = "ChannelFragment"
73+
}
74+
}

app/src/main/java/com/lizongying/mytv/MainActivity.kt

Lines changed: 110 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,22 @@ class MainActivity : FragmentActivity() {
2727
var playerFragment = PlayerFragment()
2828
private val mainFragment = MainFragment()
2929
private val infoFragment = InfoFragment()
30+
private val channelFragment = ChannelFragment()
3031

3132
private var doubleBackToExitPressedOnce = false
3233

3334
private lateinit var gestureDetector: GestureDetector
3435

3536
private val handler = Handler()
3637
private val delay: Long = 4000
38+
private val delayHideHelp: Long = 10000
3739

3840
private lateinit var sharedPref: SharedPreferences
3941
private var channelReversal = false
42+
private var channelNum = true
43+
44+
private var versionName = ""
45+
private lateinit var dialogFragment: MyDialogFragment
4046

4147
override fun onCreate(savedInstanceState: Bundle?) {
4248
super.onCreate(savedInstanceState)
@@ -50,26 +56,39 @@ class MainActivity : FragmentActivity() {
5056
supportFragmentManager.beginTransaction()
5157
.add(R.id.main_browse_fragment, playerFragment)
5258
.add(R.id.main_browse_fragment, infoFragment)
59+
.add(R.id.main_browse_fragment, channelFragment)
5360
.add(R.id.main_browse_fragment, mainFragment)
5461
.hide(infoFragment)
62+
.hide(channelFragment)
5563
.commit()
5664
mainFragment.view?.requestFocus()
5765
}
5866
gestureDetector = GestureDetector(this, GestureListener())
5967

6068
sharedPref = getPreferences(Context.MODE_PRIVATE)
61-
channelReversal = sharedPref.getBoolean(CHANNEL_REVERSAL, false)
69+
channelReversal = sharedPref.getBoolean(CHANNEL_REVERSAL, channelReversal)
70+
channelNum = sharedPref.getBoolean(CHANNEL_NUM, channelNum)
71+
72+
versionName = getPackageInfo().versionName
73+
dialogFragment = MyDialogFragment(versionName, channelReversal, channelNum)
6274
}
6375

6476
fun showInfoFragment(tvViewModel: TVViewModel) {
6577
infoFragment.show(tvViewModel)
78+
if (channelNum) {
79+
channelFragment.show(tvViewModel)
80+
}
6681
}
6782

6883
fun play(tvViewModel: TVViewModel) {
6984
playerFragment.play(tvViewModel)
7085
mainFragment.view?.requestFocus()
7186
}
7287

88+
fun play(itemPosition: Int) {
89+
mainFragment.play(itemPosition)
90+
}
91+
7392
fun prev() {
7493
mainFragment.prev()
7594
}
@@ -79,11 +98,11 @@ class MainActivity : FragmentActivity() {
7998
}
8099

81100
private fun prevSource() {
82-
mainFragment.prevSource()
101+
// mainFragment.prevSource()
83102
}
84103

85104
private fun nextSource() {
86-
mainFragment.nextSource()
105+
// mainFragment.nextSource()
87106
}
88107

89108
fun switchMainFragment() {
@@ -182,14 +201,34 @@ class MainActivity : FragmentActivity() {
182201
this.channelReversal = channelReversal
183202
}
184203

204+
fun saveChannelNum(channelNum: Boolean) {
205+
with(sharedPref.edit()) {
206+
putBoolean(CHANNEL_NUM, channelNum)
207+
apply()
208+
}
209+
this.channelNum = channelNum
210+
}
211+
185212
private fun showHelp() {
186213
if (!mainFragment.isHidden) {
187214
return
188215
}
189216

190-
val versionName = getPackageInfo().versionName
191-
val dialogFragment = MyDialogFragment(versionName, channelReversal)
192-
dialogFragment.show(supportFragmentManager, "settings_dialog")
217+
Log.i(TAG, "dialogFragment ${dialogFragment.isVisible}")
218+
if (!dialogFragment.isVisible) {
219+
dialogFragment.show(supportFragmentManager, "settings_dialog")
220+
handler.removeCallbacks(hideHelp)
221+
handler.postDelayed(hideHelp, delayHideHelp)
222+
} else {
223+
handler.removeCallbacks(hideHelp)
224+
dialogFragment.dismiss()
225+
}
226+
}
227+
228+
private val hideHelp = Runnable {
229+
if (dialogFragment.isVisible) {
230+
dialogFragment.dismiss()
231+
}
193232
}
194233

195234
private fun channelUp() {
@@ -244,8 +283,72 @@ class MainActivity : FragmentActivity() {
244283
}, 2000)
245284
}
246285

286+
private fun showChannel(channel: String) {
287+
if (!mainFragment.isHidden) {
288+
return
289+
}
290+
291+
if (dialogFragment.isVisible) {
292+
return
293+
}
294+
295+
if (channelNum) {
296+
channelFragment.show(channel)
297+
}
298+
}
299+
247300
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
248301
when (keyCode) {
302+
KeyEvent.KEYCODE_0 -> {
303+
showChannel("0")
304+
return true
305+
}
306+
307+
KeyEvent.KEYCODE_1 -> {
308+
showChannel("1")
309+
return true
310+
}
311+
312+
KeyEvent.KEYCODE_2 -> {
313+
showChannel("2")
314+
return true
315+
}
316+
317+
KeyEvent.KEYCODE_3 -> {
318+
showChannel("3")
319+
return true
320+
}
321+
322+
KeyEvent.KEYCODE_4 -> {
323+
showChannel("4")
324+
return true
325+
}
326+
327+
KeyEvent.KEYCODE_5 -> {
328+
showChannel("5")
329+
return true
330+
}
331+
332+
KeyEvent.KEYCODE_6 -> {
333+
showChannel("6")
334+
return true
335+
}
336+
337+
KeyEvent.KEYCODE_7 -> {
338+
showChannel("7")
339+
return true
340+
}
341+
342+
KeyEvent.KEYCODE_8 -> {
343+
showChannel("8")
344+
return true
345+
}
346+
347+
KeyEvent.KEYCODE_9 -> {
348+
showChannel("9")
349+
return true
350+
}
351+
249352
KeyEvent.KEYCODE_ESCAPE -> {
250353
back()
251354
return true
@@ -388,5 +491,6 @@ class MainActivity : FragmentActivity() {
388491
companion object {
389492
private const val TAG = "MainActivity"
390493
private const val CHANNEL_REVERSAL = "channel_reversal"
494+
private const val CHANNEL_NUM = "channel_num"
391495
}
392496
}

app/src/main/java/com/lizongying/mytv/MainFragment.kt

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ class MainFragment : BrowseSupportFragment() {
216216
fun fragmentReady() {
217217
ready++
218218
Log.i(TAG, "ready $ready")
219-
if (ready == 3) {
219+
if (ready == 4) {
220220
// request.fetchPage()
221221
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
222222
tvViewModel?.changed()
@@ -225,16 +225,24 @@ class MainFragment : BrowseSupportFragment() {
225225
}
226226
}
227227

228+
fun play(itemPosition: Int) {
229+
view?.post {
230+
if (itemPosition < tvListViewModel.size()) {
231+
this.itemPosition = itemPosition
232+
tvListViewModel.setItemPosition(itemPosition)
233+
tvListViewModel.getTVViewModel(itemPosition)?.changed()
234+
}
235+
}
236+
}
237+
228238
fun prev() {
229239
view?.post {
230240
itemPosition--
231241
if (itemPosition == -1) {
232242
itemPosition = tvListViewModel.size() - 1
233243
}
234244
tvListViewModel.setItemPosition(itemPosition)
235-
236-
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
237-
tvViewModel?.changed()
245+
tvListViewModel.getTVViewModel(itemPosition)?.changed()
238246
}
239247
}
240248

@@ -245,9 +253,7 @@ class MainFragment : BrowseSupportFragment() {
245253
itemPosition = 0
246254
}
247255
tvListViewModel.setItemPosition(itemPosition)
248-
249-
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
250-
tvViewModel?.changed()
256+
tvListViewModel.getTVViewModel(itemPosition)?.changed()
251257
}
252258
}
253259

@@ -297,9 +303,7 @@ class MainFragment : BrowseSupportFragment() {
297303
if (itemPosition != item.id.value!!) {
298304
itemPosition = item.id.value!!
299305
tvListViewModel.setItemPosition(itemPosition)
300-
301-
val tvViewModel = tvListViewModel.getTVViewModel(itemPosition)
302-
tvViewModel?.changed()
306+
tvListViewModel.getTVViewModel(itemPosition)?.changed()
303307
}
304308
(activity as? MainActivity)?.switchMainFragment()
305309
}

0 commit comments

Comments
 (0)