android: properly handle insets and padding

This commit is contained in:
Harsh Shandilya 2021-09-23 22:20:17 +05:30
parent 6bbd236203
commit 1683c5c027
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
4 changed files with 34 additions and 24 deletions

View file

@ -12,9 +12,11 @@ dependencies {
kapt(libs.dagger.hilt.compiler) kapt(libs.dagger.hilt.compiler)
implementation(projects.api) implementation(projects.api)
implementation(projects.common) implementation(projects.common)
implementation(libs.accompanist.insets)
implementation(libs.accompanist.sysuicontroller) implementation(libs.accompanist.sysuicontroller)
implementation(libs.androidx.activity.compose) implementation(libs.androidx.activity.compose)
implementation(libs.androidx.appcompat) implementation(libs.androidx.appcompat)
implementation(libs.androidx.coreKtx)
implementation(libs.androidx.paging.compose) implementation(libs.androidx.paging.compose)
implementation(libs.dagger.hilt.android) implementation(libs.dagger.hilt.android)
implementation(libs.retrofit.moshiConverter) implementation(libs.retrofit.moshiConverter)

View file

@ -3,6 +3,7 @@ package dev.msfjarvis.claw.android
import android.os.Bundle import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import androidx.core.view.WindowCompat
import androidx.paging.Pager import androidx.paging.Pager
import androidx.paging.PagingConfig import androidx.paging.PagingConfig
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
@ -20,6 +21,7 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
val pager = Pager(PagingConfig(20)) { LobstersPagingSource(api::getHottestPosts) } val pager = Pager(PagingConfig(20)) { LobstersPagingSource(api::getHottestPosts) }
setContent { setContent {
LobstersApp( LobstersApp(

View file

@ -18,6 +18,8 @@ import androidx.compose.ui.unit.dp
import androidx.paging.LoadState import androidx.paging.LoadState
import androidx.paging.Pager import androidx.paging.Pager
import androidx.paging.compose.collectAsLazyPagingItems import androidx.paging.compose.collectAsLazyPagingItems
import com.google.accompanist.insets.ProvideWindowInsets
import com.google.accompanist.insets.statusBarsPadding
import com.google.accompanist.systemuicontroller.rememberSystemUiController import com.google.accompanist.systemuicontroller.rememberSystemUiController
import dev.msfjarvis.claw.api.model.LobstersPost import dev.msfjarvis.claw.api.model.LobstersPost
import dev.msfjarvis.claw.common.theme.LobstersTheme import dev.msfjarvis.claw.common.theme.LobstersTheme
@ -31,6 +33,7 @@ fun LobstersApp(
val systemUiController = rememberSystemUiController() val systemUiController = rememberSystemUiController()
val scaffoldState = rememberScaffoldState() val scaffoldState = rememberScaffoldState()
LobstersTheme(darkTheme = isSystemInDarkTheme()) { LobstersTheme(darkTheme = isSystemInDarkTheme()) {
ProvideWindowInsets {
val useDarkIcons = MaterialTheme.colors.isLight val useDarkIcons = MaterialTheme.colors.isLight
val systemBarsColor = MaterialTheme.colors.primarySurface val systemBarsColor = MaterialTheme.colors.primarySurface
@ -40,14 +43,14 @@ fun LobstersApp(
val items = pager.flow.collectAsLazyPagingItems() val items = pager.flow.collectAsLazyPagingItems()
Scaffold( Scaffold(
scaffoldState = scaffoldState, scaffoldState = scaffoldState,
topBar = { ClawAppBar() }, topBar = { ClawAppBar(modifier = Modifier.statusBarsPadding()) },
modifier = Modifier, modifier = Modifier,
) { padding -> ) {
if (items.loadState.refresh != LoadState.Loading) { if (items.loadState.refresh != LoadState.Loading) {
NetworkPosts( NetworkPosts(
items = items, items = items,
urlLauncher = urlLauncher, urlLauncher = urlLauncher,
modifier = Modifier.padding(padding), modifier = Modifier.padding(top = 16.dp),
) )
} else { } else {
Box( Box(
@ -61,4 +64,5 @@ fun LobstersApp(
} }
} }
} }
}
} }

View file

@ -12,11 +12,13 @@ kotlin-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines
kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" } kotlin-coroutines-core = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core", version.ref = "coroutines" }
kotlin-coroutines-jvm = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", version.ref = "coroutines" } kotlin-coroutines-jvm = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", version.ref = "coroutines" }
accompanist-insets = { module = "com.google.accompanist:accompanist-insets", version.ref = "accompanist" }
accompanist-sysuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" } accompanist-sysuicontroller = { module = "com.google.accompanist:accompanist-systemuicontroller", version.ref = "accompanist" }
androidx-activity-compose = "androidx.activity:activity-compose:1.4.0-alpha02" androidx-activity-compose = "androidx.activity:activity-compose:1.4.0-alpha02"
androidx-appcompat = "androidx.appcompat:appcompat:1.4.0-alpha03" androidx-appcompat = "androidx.appcompat:appcompat:1.4.0-alpha03"
androidx-browser = "androidx.browser:browser:1.4.0-alpha01" androidx-browser = "androidx.browser:browser:1.4.0-alpha01"
androidx-coreKtx = "androidx.core:core-ktx:1.7.0-beta01"
androidx-paging-compose = "androidx.paging:paging-compose:1.0.0-alpha12" androidx-paging-compose = "androidx.paging:paging-compose:1.0.0-alpha12"
coil-compose = "io.coil-kt:coil-compose:1.3.2" coil-compose = "io.coil-kt:coil-compose:1.3.2"