diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 79c18b7..be6975a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -51,6 +51,8 @@ dependencies { implementation(libs.androidx.constraintlayout) implementation(libs.androidx.activity.compose) implementation(libs.androidx.material3) + implementation(libs.androidx.ui.tooling) + implementation(libs.androidx.material.icons.extended.android) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) diff --git a/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt b/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt index cc230a8..a1345d0 100644 --- a/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt +++ b/app/src/main/java/net/newpipe/newplayer/PlayerFragment.kt @@ -5,12 +5,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.compose.material3.MaterialTheme import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.fragment.app.Fragment -import androidx.compose.material3.Text import net.newpipe.newplayer.ui.PlayerUI +import net.newpipe.newplayer.ui.theme.VideoPlayerTheme class PlayerFragment : Fragment() { @@ -25,7 +24,9 @@ class PlayerFragment : Fragment() { composeView.apply { setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed) setContent { - PlayerUI(activity as Activity) + VideoPlayerTheme { + PlayerUI() + } } } return view diff --git a/app/src/main/java/net/newpipe/newplayer/ui/PlayerUI.kt b/app/src/main/java/net/newpipe/newplayer/ui/PlayerUI.kt index f9e6267..5358ee1 100644 --- a/app/src/main/java/net/newpipe/newplayer/ui/PlayerUI.kt +++ b/app/src/main/java/net/newpipe/newplayer/ui/PlayerUI.kt @@ -2,43 +2,82 @@ package net.newpipe.newplayer.ui import android.app.Activity import android.content.pm.ActivityInfo + import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.defaultMinSize import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.Button +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Fullscreen +import androidx.compose.material.icons.filled.ShoppingCart +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Slider +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import net.newpipe.newplayer.ui.theme.AppTheme +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.tooling.preview.PreviewScreenSizes +import androidx.compose.ui.unit.dp import net.newpipe.newplayer.ui.theme.VideoPlayerTheme @Composable -fun PlayerUI(activity: Activity) { - var isFullscreen = rememberSaveable { mutableStateOf(false) } +fun PlayerUI() { - if (isFullscreen.value) { + Surface( + modifier = Modifier + .fillMaxSize() + .background(Color.White) + ) { + Box() { + BottomUI(modifier = Modifier + .align(Alignment.BottomStart) + .padding(start = 16.dp, end = 16.dp) + .defaultMinSize(minHeight = 40.dp) + .fillMaxWidth()) + } + Text("hello gurken") + } +} + +@Composable +private fun CenterUI(modifier: Modifier) { + +} + +@Composable +private fun BottomUI(modifier: Modifier) { + var isFullscreen: Boolean by rememberSaveable { mutableStateOf(false) } + + if (isFullscreen) { LockScreenOrientation(orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) } - - VideoPlayerTheme() { - Box( - modifier = Modifier - .fillMaxSize() - .background(Color.Black) - ) { - Text( - "hello gurken", - color = Color.White - ) - Button(onClick = { isFullscreen.value = !isFullscreen.value }) { - Text("Switch to fullscreen") - } - } + Row( + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.SpaceBetween, + modifier = modifier + ) { + Text("06:45") + Slider(value = 0.4F, onValueChange = {}, modifier = Modifier.weight(1F)) + Text("09:40") + IconButton(onClick = { isFullscreen = !isFullscreen }) { + Icon( + imageVector = Icons.Filled.Fullscreen, + contentDescription = "Fullscreen" + ) + } } } @@ -46,3 +85,11 @@ fun PlayerUI(activity: Activity) { private fun ViewInFullScreen() { LockScreenOrientation(orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) } + +@Preview +@Composable +fun PlayerUIPreview() { + VideoPlayerTheme { + PlayerUI() + } +} \ No newline at end of file diff --git a/app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt b/app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt index 1abb3cd..e244b4c 100644 --- a/app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt +++ b/app/src/main/java/net/newpipe/newplayer/ui/theme/Color.kt @@ -2,10 +2,34 @@ package net.newpipe.newplayer.ui.theme import androidx.compose.ui.graphics.Color -val Purple80 = Color(0xFFD0BCFF) -val PurpleGrey80 = Color(0xFFCCC2DC) -val Pink80 = Color(0xFFEFB8C8) +val video_player_primary = Color(0xFFE53935) +val video_player_onPrimary = Color(0xFF452B00) +val video_player_primaryContainer = Color(0xFF633F00) +val video_player_onPrimaryContainer = Color(0xFFFFDDB3) +val video_player_secondary = Color(0xFFDDC2A1) +val video_player_onSecondary = Color(0xFF3E2D16) +val video_player_secondaryContainer = Color(0xFF56442A) +val video_player_onSecondaryContainer = Color(0xFFFBDEBC) +val video_player_tertiary = Color(0xFFB8CEA1) +val video_player_onTertiary = Color(0xFF243515) +val video_player_tertiaryContainer = Color(0xFF3A4C2A) +val video_player_onTertiaryContainer = Color(0xFFD4EABB) +val video_player_error = Color(0xFFFFB4AB) +val video_player_errorContainer = Color(0xFF93000A) +val video_player_onError = Color(0xFF690005) +val video_player_onErrorContainer = Color(0xFFFFDAD6) +val video_player_background = Color(0xFF1F1B16) +val video_player_onBackground = Color(0xFFEAE1D9) +val video_player_surface = Color(0xFF000000) +val video_player_onSurface = Color(0xFFEAE1D9) +val video_player_surfaceVariant = Color(0xFF4F4539) +val video_player_onSurfaceVariant = Color(0xFFD3C4B4) +val video_player_outline = Color(0xFF9C8F80) +val video_player_inverseOnSurface = Color(0xFF1F1B16) +val video_player_inverseSurface = Color(0xFFEAE1D9) +val video_player_inversePrimary = Color(0xFF825500) +val video_player_shadow = Color(0xFF000000) +val video_player_surfaceTint = Color(0xFFFFB951) +val video_player_outlineVariant = Color(0xFF4F4539) +val video_player_scrim = Color(0xFF000000) -val Purple40 = Color(0xFF6650a4) -val PurpleGrey40 = Color(0xFF625b71) -val Pink40 = Color(0xFF7D5260) \ No newline at end of file diff --git a/app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt b/app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt index 6c854be..3af2fb3 100644 --- a/app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt +++ b/app/src/main/java/net/newpipe/newplayer/ui/theme/Theme.kt @@ -6,12 +6,36 @@ import androidx.compose.material3.darkColorScheme import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color -private val DarkColorScheme = darkColorScheme( - primary = Purple80, - secondary = PurpleGrey80, - tertiary = Pink80, - onBackground = Color(0xFF1C1B1F), - background = Color.Black, +private val VideoPlayerColorScheme = darkColorScheme( + primary = video_player_primary, + onPrimary = video_player_onPrimary, + primaryContainer = video_player_primaryContainer, + onPrimaryContainer = video_player_onPrimaryContainer, + secondary = video_player_secondary, + onSecondary = video_player_onSecondary, + secondaryContainer = video_player_secondaryContainer, + onSecondaryContainer = video_player_onSecondaryContainer, + tertiary = video_player_tertiary, + onTertiary = video_player_onTertiary, + tertiaryContainer = video_player_tertiaryContainer, + onTertiaryContainer = video_player_onTertiaryContainer, + error = video_player_error, + errorContainer = video_player_errorContainer, + onError = video_player_onError, + onErrorContainer = video_player_onErrorContainer, + background = video_player_background, + onBackground = video_player_onBackground, + surface = video_player_surface, + onSurface = video_player_onSurface, + surfaceVariant = video_player_surfaceVariant, + onSurfaceVariant = video_player_onSurfaceVariant, + outline = video_player_outline, + inverseOnSurface = video_player_inverseOnSurface, + inverseSurface = video_player_inverseSurface, + inversePrimary = video_player_inversePrimary, + surfaceTint = video_player_surfaceTint, + outlineVariant = video_player_outlineVariant, + scrim = video_player_scrim, ) @Composable @@ -19,7 +43,7 @@ fun VideoPlayerTheme( content: @Composable () -> Unit ) { MaterialTheme( - colorScheme = DarkColorScheme, + colorScheme = VideoPlayerColorScheme, typography = Typography, content = content ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bd71ac9..864edb2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,6 +11,8 @@ activity = "1.9.0" constraintlayout = "2.1.4" activityCompose = "1.9.0" material3 = "1.2.1" +uiTooling = "1.6.8" +materialIconsExtendedAndroid = "1.7.0-beta04" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" } @@ -23,6 +25,8 @@ androidx-activity = { group = "androidx.activity", name = "activity", version.re androidx-constraintlayout = { group = "androidx.constraintlayout", name = "constraintlayout", version.ref = "constraintlayout" } androidx-activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" } androidx-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" } +androidx-ui-tooling = { group = "androidx.compose.ui", name = "ui-tooling", version.ref = "uiTooling" } +androidx-material-icons-extended-android = { group = "androidx.compose.material", name = "material-icons-extended-android", version.ref = "materialIconsExtendedAndroid" } [plugins] android-application = { id = "com.android.application", version.ref = "agp" }