Skip to content

Commit

Permalink
optimize style
Browse files Browse the repository at this point in the history
  • Loading branch information
lizongying committed Apr 29, 2024
1 parent fe888c3 commit df5b006
Show file tree
Hide file tree
Showing 21 changed files with 286 additions and 197 deletions.
4 changes: 4 additions & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
## 更新日志

### v1.8.8(通用)

* 样式优化

### v1.8.6(通用)

* 增加错误显示
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,9 @@
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data
android:name="android.windowLayoutInDisplayCutoutMode"
android:value="shortEdges" />
</activity>

<receiver
Expand All @@ -58,5 +61,7 @@
android:name=".InitializerProvider"
android:authorities="${applicationId}.InitializerProvider"
android:exported="false" />

<meta-data android:name="android.max_aspect" android:value="2.5" />
</application>
</manifest>
28 changes: 5 additions & 23 deletions app/src/main/java/com/lizongying/mytv/ChannelFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,37 +30,19 @@ class ChannelFragment : Fragment() {

val application = requireActivity().applicationContext as MyTvApplication

val width = application.getWidth()
val height = application.getHeight()

val ratio = 16f / 9f

if (width.toFloat() / height > ratio) {
val x =
((Resources.getSystem().displayMetrics.widthPixels - height * ratio) / 2).toInt()
val originalLayoutParams =
binding.channel.layoutParams as ViewGroup.MarginLayoutParams
originalLayoutParams.marginEnd += x
binding.channel.layoutParams = originalLayoutParams
}

if (width.toFloat() / height < ratio) {
val y =
((height - Resources.getSystem().displayMetrics.widthPixels / ratio) / 2).toInt()
val originalLayoutParams =
binding.channel.layoutParams as ViewGroup.MarginLayoutParams
originalLayoutParams.topMargin += y
binding.channel.layoutParams = originalLayoutParams
}

binding.channel.layoutParams.width = application.px2Px(binding.channel.layoutParams.width)
binding.channel.layoutParams.height = application.px2Px(binding.channel.layoutParams.height)

val layoutParams = binding.channel.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.topMargin = application.px2Px(binding.channel.marginTop)
layoutParams.marginEnd = application.px2Px(binding.channel.marginEnd)
binding.channel.layoutParams = layoutParams

binding.content.textSize = application.px2PxFont(binding.content.textSize)

binding.main.layoutParams.width = application.shouldWidthPx()
binding.main.layoutParams.height = application.shouldHeightPx()

(activity as MainActivity).fragmentReady("ChannelFragment")
return binding.root
}
Expand Down
20 changes: 8 additions & 12 deletions app/src/main/java/com/lizongying/mytv/InfoFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -30,24 +30,14 @@ class InfoFragment : Fragment() {
_binding = InfoBinding.inflate(inflater, container, false)

val application = requireActivity().applicationContext as MyTvApplication
val width = application.getWidth()
val height = application.getHeight()

val ratio = 16f / 9f

if (width.toFloat() / height < ratio) {
val y =
((height - Resources.getSystem().displayMetrics.widthPixels / ratio) / 2).toInt()
val originalLayoutParams = binding.info.layoutParams as ViewGroup.MarginLayoutParams
originalLayoutParams.bottomMargin += y
binding.info.layoutParams = originalLayoutParams
}

binding.info.layoutParams.width = application.px2Px(binding.info.layoutParams.width)
binding.info.layoutParams.height = application.px2Px(binding.info.layoutParams.height)

val layoutParams = binding.info.layoutParams as ViewGroup.MarginLayoutParams
layoutParams.bottomMargin = application.px2Px(binding.info.marginBottom)
binding.info.layoutParams = layoutParams

binding.logo.layoutParams.width = application.px2Px(binding.logo.layoutParams.width)
binding.logo.setPadding(application.px2Px(binding.logo.paddingTop))
binding.main.layoutParams.width = application.px2Px(binding.main.layoutParams.width)
Expand All @@ -64,13 +54,19 @@ class InfoFragment : Fragment() {
binding.title.textSize = application.px2PxFont(binding.title.textSize)
binding.desc.textSize = application.px2PxFont(binding.desc.textSize)

binding.container.layoutParams.width = application.shouldWidthPx()
binding.container.layoutParams.height = application.shouldHeightPx()

_binding!!.root.visibility = View.GONE

(activity as MainActivity).fragmentReady("InfoFragment")
return binding.root
}

fun show(tvViewModel: TVViewModel) {
if (_binding == null) {
return
}
binding.title.text = tvViewModel.getTV().title

Glide.with(this)
Expand Down
37 changes: 37 additions & 0 deletions app/src/main/java/com/lizongying/mytv/LoadingFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.lizongying.mytv

import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import com.lizongying.mytv.databinding.LoadingBinding

class LoadingFragment : Fragment() {
private var _binding: LoadingBinding? = null
private val binding get() = _binding!!

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
_binding = LoadingBinding.inflate(inflater, container, false)

val application = requireActivity().applicationContext as MyTvApplication

binding.bar.layoutParams.width = application.px2Px(binding.bar.layoutParams.width)
binding.bar.layoutParams.height = application.px2Px(binding.bar.layoutParams.height)

(activity as MainActivity).fragmentReady(TAG)
return binding.root
}

override fun onDestroyView() {
super.onDestroyView()
_binding = null
}

companion object {
private const val TAG = "LoadingFragment"
}
}
18 changes: 16 additions & 2 deletions app/src/main/java/com/lizongying/mytv/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,10 @@ import android.util.Log
import android.view.GestureDetector
import android.view.KeyEvent
import android.view.MotionEvent
import android.view.View.SYSTEM_UI_FLAG_FULLSCREEN
import android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
import android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
import android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
import android.view.WindowManager
import android.widget.Toast
import androidx.fragment.app.FragmentActivity
Expand All @@ -29,6 +32,8 @@ class MainActivity : FragmentActivity(), Request.RequestListener {
private var ready = 0
private val playerFragment = PlayerFragment()
private val errorFragment = ErrorFragment()

// private val loadingFragment = LoadingFragment()
private val mainFragment = MainFragment()
private val infoFragment = InfoFragment()
private val channelFragment = ChannelFragment()
Expand Down Expand Up @@ -56,25 +61,34 @@ class MainActivity : FragmentActivity(), Request.RequestListener {

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

setContentView(R.layout.activity_main)

Request.setRequestListener(this)

window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
window.decorView.systemUiVisibility = SYSTEM_UI_FLAG_HIDE_NAVIGATION
window.decorView.systemUiVisibility =
SYSTEM_UI_FLAG_FULLSCREEN or
SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or SYSTEM_UI_FLAG_HIDE_NAVIGATION or
SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
// window.statusBarColor = Color.TRANSPARENT
// window.navigationBarColor = Color.TRANSPARENT
// }

if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.add(R.id.main_browse_fragment, playerFragment)
.add(R.id.main_browse_fragment, errorFragment)
// .add(R.id.main_browse_fragment, loadingFragment)
.add(R.id.main_browse_fragment, timeFragment)
.add(R.id.main_browse_fragment, infoFragment)
.add(R.id.main_browse_fragment, channelFragment)
.add(R.id.main_browse_fragment, mainFragment)
.hide(mainFragment)
.hide(errorFragment)
// .hide(loadingFragment)
.commit()
}
gestureDetector = GestureDetector(this, GestureListener())
Expand Down
43 changes: 5 additions & 38 deletions app/src/main/java/com/lizongying/mytv/MainFragment.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.lizongying.mytv

import android.content.res.Resources
import android.graphics.Color
import android.os.Bundle
import android.util.Log
import android.view.KeyEvent
Expand Down Expand Up @@ -51,37 +52,10 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {

application = requireActivity().applicationContext as MyTvApplication

val width = application.getWidth()
val height = application.getHeight()
binding.menu.layoutParams.width = application.shouldWidthPx()
binding.menu.layoutParams.height = application.shouldHeightPx()

val ratio = 16f / 9f

if (width.toFloat() / height > ratio) {
val x =
((Resources.getSystem().displayMetrics.widthPixels - height * ratio) / 2).toInt()
val originalLayoutParams =
binding.scroll.layoutParams as ViewGroup.MarginLayoutParams
originalLayoutParams.marginStart += x
originalLayoutParams.marginEnd += x
binding.scroll.layoutParams = originalLayoutParams

Log.i(
TAG,
"binding.scroll ${Resources.getSystem().displayMetrics.widthPixels} ${height * ratio}"
)
}

if (width.toFloat() / height < ratio) {
val y =
((height - Resources.getSystem().displayMetrics.widthPixels / ratio) / 2).toInt()
val originalLayoutParams =
binding.scroll.layoutParams as ViewGroup.MarginLayoutParams
originalLayoutParams.topMargin += y
originalLayoutParams.bottomMargin += y
binding.scroll.layoutParams = originalLayoutParams
}

binding.menu.setOnClickListener {
binding.container.setOnClickListener {
hideSelf()
}

Expand Down Expand Up @@ -278,7 +252,7 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
for (i in rowList) {
if (i.tag as Int != row) {
((i as RecyclerView).adapter as CardAdapter).focusable = false
((i as RecyclerView).adapter as CardAdapter).clear()
(i.adapter as CardAdapter).clear()
} else {
((i as RecyclerView).adapter as CardAdapter).focusable = true
}
Expand Down Expand Up @@ -435,13 +409,6 @@ class MainFragment : Fragment(), CardAdapter.ItemListener {
super.onResume()
}

override fun onStop() {
Log.i(TAG, "onStop")
super.onStop()
SP.itemPosition = itemPosition
Log.i(TAG, "$POSITION $itemPosition saved")
}

override fun onDestroy() {
Log.i(TAG, "onDestroy")
super.onDestroy()
Expand Down
32 changes: 27 additions & 5 deletions app/src/main/java/com/lizongying/mytv/MyTvApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ class MyTvApplication : Application() {
private lateinit var displayMetrics: DisplayMetrics
private lateinit var realDisplayMetrics: DisplayMetrics

private lateinit var windowManager: WindowManager

private var width = 0
private var height = 0
private var shouldWidth = 0
private var shouldHeight = 0
private var deviation = 0
private var ratio = 1.0
private var density = 2.0f
Expand All @@ -24,7 +28,7 @@ class MyTvApplication : Application() {

displayMetrics = DisplayMetrics()
realDisplayMetrics = DisplayMetrics()
val windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
windowManager = getSystemService(Context.WINDOW_SERVICE) as WindowManager
windowManager.defaultDisplay.getMetrics(displayMetrics)
windowManager.defaultDisplay.getRealMetrics(realDisplayMetrics)

Expand All @@ -44,6 +48,16 @@ class MyTvApplication : Application() {
height * 2 / 1080.0 / density
}

if ((width.toDouble() / height) < (16.0 / 9.0)) {
ratio = width * 2 / 1920.0 / density
shouldWidth = width
shouldHeight = (width * 9.0 / 16.0).toInt()
} else {
ratio = height * 2 / 1080.0 / density
shouldHeight = height
shouldWidth = (height * 16.0 / 9.0).toInt()
}

deviation = width - Resources.getSystem().displayMetrics.widthPixels
scale = Resources.getSystem().displayMetrics.scaledDensity
}
Expand All @@ -56,18 +70,26 @@ class MyTvApplication : Application() {
return realDisplayMetrics
}

fun getWidth(): Int {
return width
fun shouldWidthPx(): Int {
return shouldWidth
}

fun getDeviation(): Int {
return deviation
fun shouldHeightPx(): Int {
return shouldHeight
}

fun getWidth(): Int {
return width
}

fun getHeight(): Int {
return height
}

fun getDeviation(): Int {
return deviation
}

fun getRatio(): Double {
return ratio
}
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/java/com/lizongying/mytv/SettingFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -101,9 +101,9 @@ class SettingFragment : DialogFragment() {
)
binding.name.textSize = application.px2PxFont(binding.name.textSize)
binding.version.textSize = application.px2PxFont(binding.version.textSize)
val layoutParamsDesc = binding.version.layoutParams as ViewGroup.MarginLayoutParams
layoutParamsDesc.topMargin = application.px2Px(binding.version.marginTop)
binding.version.layoutParams = layoutParamsDesc
val layoutParamsVersion = binding.version.layoutParams as ViewGroup.MarginLayoutParams
layoutParamsVersion.topMargin = application.px2Px(binding.version.marginTop)
binding.version.layoutParams = layoutParamsVersion

binding.checkVersion.textSize = application.px2PxFont(binding.checkVersion.textSize)
val layoutParamsCheckVersion =
Expand Down
Loading

0 comments on commit df5b006

Please sign in to comment.