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