android: make it look more like an actual app

This commit is contained in:
Harsh Shandilya 2021-08-12 20:25:42 +05:30
parent c992bdc370
commit f856aeb6f5
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
2 changed files with 45 additions and 4 deletions

View file

@ -4,11 +4,16 @@ import android.os.Bundle
import androidx.activity.compose.setContent
import androidx.appcompat.app.AppCompatActivity
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Scaffold
import androidx.compose.material.rememberScaffoldState
import androidx.compose.ui.Modifier
import androidx.paging.Pager
import androidx.paging.PagingConfig
import androidx.paging.compose.collectAsLazyPagingItems
import dagger.hilt.android.AndroidEntryPoint
import dev.msfjarvis.claw.android.paging.LobstersPagingSource
import dev.msfjarvis.claw.android.ui.ClawAppBar
import dev.msfjarvis.claw.android.ui.NetworkPosts
import dev.msfjarvis.claw.api.LobstersApi
import dev.msfjarvis.claw.common.theme.LobstersTheme
@ -18,18 +23,27 @@ import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
@Inject lateinit var api: LobstersApi
@Inject lateinit var urlLauncher: UrlLauncher
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val pager = Pager(PagingConfig(20)) { LobstersPagingSource(api::getHottestPosts) }
setContent {
val scaffoldState = rememberScaffoldState()
LobstersTheme(darkTheme = isSystemInDarkTheme()) {
val items = pager.flow.collectAsLazyPagingItems()
NetworkPosts(
items = items,
urlLauncher = urlLauncher,
)
Scaffold(
scaffoldState = scaffoldState,
topBar = { ClawAppBar() },
modifier = Modifier,
) { padding ->
NetworkPosts(
items = items,
urlLauncher = urlLauncher,
modifier = Modifier.padding(padding),
)
}
}
}
}

View file

@ -0,0 +1,27 @@
package dev.msfjarvis.claw.android.ui
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Text
import androidx.compose.material.TopAppBar
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import dev.msfjarvis.claw.android.R
@Composable
fun ClawAppBar(
modifier: Modifier = Modifier,
) {
TopAppBar(
title = {
Text(
text = stringResource(R.string.app_name),
fontWeight = FontWeight.Bold,
modifier = Modifier.padding(horizontal = 16.dp),
)
},
modifier = Modifier.then(modifier),
)
}