1
0
mirror of https://github.com/TeamNewPipe/NewPipe synced 2024-12-23 16:40:32 +00:00

Move functions to get Android dimen to ThemeHelper

This commit is contained in:
Stypox 2022-07-07 11:59:00 +02:00
parent 1cf746f721
commit 9c51fc3ade
No known key found for this signature in database
GPG Key ID: 4BDF1B40A49FDD23
2 changed files with 24 additions and 20 deletions

View File

@ -1,6 +1,5 @@
package org.schabi.newpipe.player.gesture package org.schabi.newpipe.player.gesture
import android.content.Context
import android.util.Log import android.util.Log
import android.view.MotionEvent import android.view.MotionEvent
import android.view.View import android.view.View
@ -17,6 +16,7 @@ import org.schabi.newpipe.player.Player
import org.schabi.newpipe.player.helper.AudioReactor import org.schabi.newpipe.player.helper.AudioReactor
import org.schabi.newpipe.player.helper.PlayerHelper import org.schabi.newpipe.player.helper.PlayerHelper
import org.schabi.newpipe.player.ui.MainPlayerUi import org.schabi.newpipe.player.ui.MainPlayerUi
import org.schabi.newpipe.util.ThemeHelper.getAndroidDimenPx
import kotlin.math.abs import kotlin.math.abs
import kotlin.math.max import kotlin.math.max
import kotlin.math.min import kotlin.math.min
@ -172,9 +172,13 @@ class MainPlayerGestureListener(
return false return false
} }
val isTouchingStatusBar: Boolean = initialEvent.y < getStatusBarHeight(player.context) // Calculate heights of status and navigation bars
val isTouchingNavigationBar: Boolean = val statusBarHeight = getAndroidDimenPx(player.context, "status_bar_height")
initialEvent.y > (binding.root.height - getNavigationBarHeight(player.context)) val navigationBarHeight = getAndroidDimenPx(player.context, "navigation_bar_height")
// Do not handle this event if initially it started from status or navigation bars
val isTouchingStatusBar = initialEvent.y < statusBarHeight
val isTouchingNavigationBar = initialEvent.y > (binding.root.height - navigationBarHeight)
if (isTouchingStatusBar || isTouchingNavigationBar) { if (isTouchingStatusBar || isTouchingNavigationBar) {
return false return false
} }
@ -226,21 +230,5 @@ class MainPlayerGestureListener(
private val TAG = MainPlayerGestureListener::class.java.simpleName private val TAG = MainPlayerGestureListener::class.java.simpleName
private val DEBUG = MainActivity.DEBUG private val DEBUG = MainActivity.DEBUG
private const val MOVEMENT_THRESHOLD = 40 private const val MOVEMENT_THRESHOLD = 40
private fun getNavigationBarHeight(context: Context): Int {
val resId = context.resources
.getIdentifier("navigation_bar_height", "dimen", "android")
return if (resId > 0) {
context.resources.getDimensionPixelSize(resId)
} else 0
}
private fun getStatusBarHeight(context: Context): Int {
val resId = context.resources
.getIdentifier("status_bar_height", "dimen", "android")
return if (resId > 0) {
context.resources.getDimensionPixelSize(resId)
} else 0
}
} }
} }

View File

@ -244,6 +244,22 @@ public final class ThemeHelper {
return AppCompatResources.getDrawable(context, typedValue.resourceId); return AppCompatResources.getDrawable(context, typedValue.resourceId);
} }
/**
* Gets a runtime dimen from the {@code android} package. Should be used for dimens for which
* normal accessing with {@code R.dimen.} is not available.
*
* @param context context
* @param name dimen resource name (e.g. navigation_bar_height)
* @return the obtained dimension, in pixels, or 0 if the resource could not be resolved
*/
public static int getAndroidDimenPx(@NonNull final Context context, final String name) {
final int resId = context.getResources().getIdentifier(name, "dimen", "android");
if (resId <= 0) {
return 0;
}
return context.getResources().getDimensionPixelSize(resId);
}
private static String getSelectedThemeKey(final Context context) { private static String getSelectedThemeKey(final Context context) {
final String themeKey = context.getString(R.string.theme_key); final String themeKey = context.getString(R.string.theme_key);
final String defaultTheme = context.getResources().getString(R.string.default_theme_value); final String defaultTheme = context.getResources().getString(R.string.default_theme_value);