From fb66ccd318c838bfcc34f86e119a3cef001ce98f Mon Sep 17 00:00:00 2001 From: AllenTom Date: Fri, 6 Sep 2024 20:08:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=90=9C=E7=B4=A2=E5=92=8C?= =?UTF-8?q?=E4=B8=AA=E4=BA=BA=E4=BF=A1=E6=81=AF=E9=A1=B5UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 搜索页和发现页背景颜色更新为灰色 - 搜索页搜索框背景颜色更新为白色 - 个人信息页添加返回按钮 - 个人信息页背景图片增加默认图片 --- .../java/com/aiosman/riderpro/MainActivity.kt | 52 ++++--------------- .../ui/index/tabs/search/DiscoverScreen.kt | 29 +++++------ .../ui/index/tabs/search/SearchScreen.kt | 39 ++++++++------ .../riderpro/ui/profile/AccountProfile.kt | 47 +++++++++++++---- 4 files changed, 83 insertions(+), 84 deletions(-) diff --git a/app/src/main/java/com/aiosman/riderpro/MainActivity.kt b/app/src/main/java/com/aiosman/riderpro/MainActivity.kt index bea2283..6cd0209 100644 --- a/app/src/main/java/com/aiosman/riderpro/MainActivity.kt +++ b/app/src/main/java/com/aiosman/riderpro/MainActivity.kt @@ -1,6 +1,13 @@ package com.aiosman.riderpro +import android.Manifest +import android.app.NotificationChannel +import android.app.NotificationManager +import android.content.Context +import android.content.pm.PackageManager +import android.os.Build import android.os.Bundle +import android.util.Log import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge @@ -8,37 +15,17 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionScope -import androidx.compose.animation.animateColorAsState -import androidx.compose.animation.core.tween -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.WindowInsets -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.navigationBars -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.statusBarsPadding -import androidx.compose.material3.Icon -import androidx.compose.material3.NavigationBar -import androidx.compose.material3.NavigationBarItem -import androidx.compose.material3.NavigationBarItemColors -import androidx.compose.material3.Scaffold -import androidx.compose.runtime.Composable import androidx.compose.runtime.compositionLocalOf -import androidx.compose.runtime.getValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalDensity -import androidx.compose.ui.unit.dp import androidx.core.content.ContextCompat import androidx.core.view.WindowCompat +import androidx.lifecycle.ProcessLifecycleOwner +import androidx.lifecycle.viewModelScope import androidx.navigation.NavHostController -import androidx.navigation.compose.currentBackStackEntryAsState import com.aiosman.riderpro.data.AccountService import com.aiosman.riderpro.data.AccountServiceImpl import com.aiosman.riderpro.ui.Navigation import com.aiosman.riderpro.ui.NavigationRoute -import com.aiosman.riderpro.ui.index.NavigationItem -import com.google.accompanist.systemuicontroller.rememberSystemUiController +import com.aiosman.riderpro.ui.post.PostViewModel import com.google.android.libraries.places.api.Places import com.google.firebase.analytics.FirebaseAnalytics import com.google.firebase.analytics.ktx.analytics @@ -46,21 +33,6 @@ import com.google.firebase.ktx.Firebase import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import android.Manifest -import android.app.NotificationChannel -import android.app.NotificationManager -import android.content.Context -import android.content.Intent -import android.content.pm.PackageManager -import android.os.Build -import android.util.Log -import android.widget.Toast -import androidx.lifecycle.ProcessLifecycleOwner -import androidx.lifecycle.viewModelScope -import androidx.navigation.findNavController -import com.aiosman.riderpro.ui.post.PostViewModel -import com.google.android.gms.tasks.OnCompleteListener -import com.google.firebase.messaging.FirebaseMessaging class MainActivity : ComponentActivity() { // Firebase Analytics @@ -174,10 +146,6 @@ class MainActivity : ComponentActivity() { notificationManager.createNotificationChannel(channel) } } - - override fun onNewIntent(intent: Intent) { - super.onNewIntent(intent) - } } val LocalNavController = compositionLocalOf { diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt index a0371e3..1b115b9 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/DiscoverScreen.kt @@ -1,6 +1,5 @@ package com.aiosman.riderpro.ui.index.tabs.search -import android.graphics.drawable.VectorDrawable import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -21,9 +20,6 @@ import androidx.compose.foundation.layout.systemBars import androidx.compose.foundation.lazy.grid.GridCells import androidx.compose.foundation.lazy.grid.LazyVerticalGrid import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.text.BasicTextField -import androidx.compose.foundation.text.KeyboardActions -import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.Icon import androidx.compose.material.Text @@ -37,7 +33,6 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -45,8 +40,6 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource -import androidx.compose.ui.text.TextStyle -import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp @@ -80,20 +73,25 @@ fun DiscoverScreen() { Column( modifier = Modifier - .background(Color.White) .fillMaxSize() + .background(Color(0xFFF0F2F5)) .pullRefresh(state) .padding(bottom = navigationBarPaddings) ) { - Spacer(modifier = Modifier.height(statusBarPaddingValues.calculateTopPadding())) - - SearchButton( - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp, start = 24.dp, end = 24.dp), + Column( + modifier = Modifier.fillMaxWidth() ) { - navController.navigate(NavigationRoute.Search.route) + Spacer(modifier = Modifier.height(statusBarPaddingValues.calculateTopPadding())) + + SearchButton( + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp, start = 24.dp, end = 24.dp), + ) { + navController.navigate(NavigationRoute.Search.route) + } } + Box( modifier = Modifier .fillMaxWidth() @@ -115,7 +113,6 @@ fun SearchButton( Box( modifier = modifier .clip(shape = RoundedCornerShape(8.dp)) - .background(Color(0xFFEEEEEE)) .padding(horizontal = 16.dp, vertical = 8.dp) .noRippleClickable { diff --git a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/SearchScreen.kt b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/SearchScreen.kt index 63815f6..22d3be8 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/SearchScreen.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/index/tabs/search/SearchScreen.kt @@ -86,26 +86,31 @@ fun SearchScreen() { Column( modifier = Modifier - .background(Color.White) .fillMaxSize() + .background(Color(0xFFF0F2F5)) .padding(bottom = navigationBarPaddings) ) { - Spacer(modifier = Modifier.height(statusBarPaddingValues.calculateTopPadding())) - SearchInput( - modifier = Modifier - .fillMaxWidth() - .padding(top = 16.dp, start = 24.dp, end = 24.dp), - text = model.searchText, - onTextChange = { - model.searchText = it - }, - onSearch = { - model.search() - // hide ime - keyboardController?.hide() // Hide the keyboard - }, - focusRequester = focusRequester - ) + Column( + modifier = Modifier.fillMaxWidth().background(Color.White).padding(bottom = 10.dp) + ) { + Spacer(modifier = Modifier.height(statusBarPaddingValues.calculateTopPadding())) + SearchInput( + modifier = Modifier + .fillMaxWidth() + .padding(top = 16.dp, start = 24.dp, end = 24.dp), + text = model.searchText, + onTextChange = { + model.searchText = it + }, + onSearch = { + model.search() + // hide ime + keyboardController?.hide() // Hide the keyboard + }, + focusRequester = focusRequester + ) + } + if (model.showResult) { Spacer(modifier = Modifier.padding(8.dp)) diff --git a/app/src/main/java/com/aiosman/riderpro/ui/profile/AccountProfile.kt b/app/src/main/java/com/aiosman/riderpro/ui/profile/AccountProfile.kt index 9b6911a..2fb7242 100644 --- a/app/src/main/java/com/aiosman/riderpro/ui/profile/AccountProfile.kt +++ b/app/src/main/java/com/aiosman/riderpro/ui/profile/AccountProfile.kt @@ -4,10 +4,14 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.material.ExperimentalMaterialApi import androidx.compose.material.pullrefresh.PullRefreshIndicator @@ -19,17 +23,21 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.ColorFilter import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import androidx.lifecycle.viewmodel.compose.viewModel import androidx.paging.compose.collectAsLazyPagingItems +import com.aiosman.riderpro.LocalNavController import com.aiosman.riderpro.R import com.aiosman.riderpro.exp.viewModelFactory import com.aiosman.riderpro.ui.composables.CustomAsyncImage +import com.aiosman.riderpro.ui.composables.StatusBarSpacer import com.aiosman.riderpro.ui.index.tabs.profile.MomentPostUnit import com.aiosman.riderpro.ui.index.tabs.profile.UserInformation +import com.aiosman.riderpro.ui.modifiers.noRippleClickable import kotlinx.coroutines.launch @OptIn(ExperimentalMaterialApi::class) @@ -43,6 +51,7 @@ fun AccountProfile(id: String) { val state = rememberPullRefreshState(model.refreshing, onRefresh = { model.loadProfile(id, pullRefresh = true) }) + val navController = LocalNavController.current LaunchedEffect(Unit) { model.loadProfile(id) } @@ -62,33 +71,53 @@ fun AccountProfile(id: String) { Box( modifier = Modifier .fillMaxWidth() + .height(400.dp) ) { - if (model.profile == null) { - Spacer(modifier = Modifier.height(400.dp)) - } else { + if (model.profile != null) { val banner = model.profile?.banner if (banner != null) { CustomAsyncImage( LocalContext.current, banner, - modifier = Modifier - .fillMaxWidth() - .height(400.dp), + modifier = Modifier.fillMaxSize(), contentDescription = "", contentScale = ContentScale.Crop ) } else { Image( painter = painterResource(id = R.drawable.rider_pro_moment_demo_2), - modifier = Modifier - .fillMaxWidth() - .height(400.dp), + modifier = Modifier.fillMaxSize(), contentDescription = "", contentScale = ContentScale.Crop ) } } + Box( + modifier = Modifier.fillMaxWidth() + ) { + Column( + modifier = Modifier.fillMaxWidth() + ) { + StatusBarSpacer() + Row( + modifier = Modifier.padding(vertical = 10.dp, horizontal = 18.dp) + ) { + Image( + painter = painterResource(id = R.drawable.rider_pro_nav_back), + contentDescription = "", + modifier = Modifier + .size(24.dp) + .noRippleClickable { + navController.popBackStack() + }, + colorFilter = ColorFilter.tint(Color.White) + ) + } + } + + } + } Spacer(modifier = Modifier.height(32.dp))