pref: 迁移至 Foundation.Pager

This commit is contained in:
HuanCheng65 2023-05-05 23:52:25 +08:00
parent 7d8c7ed3e6
commit 15e9b747d9
No known key found for this signature in database
GPG Key ID: 5EC9DD60A32C7360
8 changed files with 34 additions and 37 deletions

View File

@ -148,9 +148,6 @@ dependencies {
implementation "com.google.accompanist:accompanist-insets-ui:$accompanist_version"
implementation "com.google.accompanist:accompanist-systemuicontroller:$accompanist_version"
implementation "com.google.accompanist:accompanist-placeholder-material:$accompanist_version"
implementation "com.google.accompanist:accompanist-pager:$accompanist_version"
implementation "com.google.accompanist:accompanist-pager-indicators:$accompanist_version"
implementation "com.google.accompanist:accompanist-swiperefresh:$accompanist_version"
implementation "com.google.accompanist:accompanist-webview:$accompanist_version"
def sketch_version = "3.2.0"

View File

@ -6,6 +6,7 @@ import android.graphics.Typeface
import android.net.Uri
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.interaction.PressInteraction
@ -25,6 +26,8 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.ButtonDefaults
@ -75,9 +78,6 @@ import androidx.datastore.preferences.core.intPreferencesKey
import com.germainkevin.collapsingtopbar.CollapsingTopBar
import com.germainkevin.collapsingtopbar.CollapsingTopBarDefaults
import com.germainkevin.collapsingtopbar.rememberCollapsingTopBarScrollBehavior
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.google.accompanist.placeholder.PlaceholderHighlight
import com.google.accompanist.placeholder.material.fade
import com.google.accompanist.placeholder.material.placeholder
@ -347,7 +347,7 @@ private suspend fun sendToDesktop(
)
}
@OptIn(ExperimentalPagerApi::class, ExperimentalTextApi::class)
@OptIn(ExperimentalTextApi::class, ExperimentalFoundationApi::class)
@Destination(
deepLinks = [
DeepLink(uriPattern = "tblite://forum/{forumName}")
@ -815,7 +815,7 @@ fun ForumPage(
Column(modifier = Modifier.padding(contentPadding)) {
if (forum != null) {
HorizontalPager(
count = 2,
pageCount = 2,
state = pagerState,
modifier = Modifier.fillMaxSize(),
verticalAlignment = Alignment.Top,

View File

@ -1,7 +1,10 @@
package com.huanchengfly.tieba.post.ui.page.history
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.Tab
@ -20,9 +23,6 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.ui.common.theme.compose.ExtendedTheme
import com.huanchengfly.tieba.post.ui.page.ProvideNavigator
@ -39,7 +39,7 @@ import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
@OptIn(ExperimentalPagerApi::class)
@OptIn(ExperimentalFoundationApi::class)
@Destination(
deepLinks = [
DeepLink(uriPattern = "tblite://history")
@ -141,7 +141,7 @@ fun HistoryPage(
) {
ProvideNavigator(navigator = navigator) {
HorizontalPager(
count = 2,
pageCount = 2,
state = pagerState,
modifier = Modifier.fillMaxSize(),
verticalAlignment = Alignment.Top,

View File

@ -2,10 +2,13 @@ package com.huanchengfly.tieba.post.ui.page.main
import androidx.activity.compose.BackHandler
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxHeight
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.Scaffold
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.AccountCircle
@ -27,9 +30,6 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.huanchengfly.tieba.post.LocalNotificationCountFlow
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.arch.BaseComposeActivity.Companion.LocalWindowSizeClass
@ -91,7 +91,7 @@ private fun NavigationWrapper(
}
}
@OptIn(ExperimentalPagerApi::class)
@OptIn(ExperimentalFoundationApi::class)
@RootNavGraph(start = true)
@Destination
@Composable
@ -243,7 +243,7 @@ fun MainPage(
) { paddingValues ->
HorizontalPager(
contentPadding = paddingValues,
count = navigationItems.size,
pageCount = navigationItems.size,
state = pagerState,
key = { navigationItems[it].title },
modifier = Modifier.fillMaxSize(),

View File

@ -1,7 +1,10 @@
package com.huanchengfly.tieba.post.ui.page.main.explore
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.Scaffold
import androidx.compose.material.Tab
import androidx.compose.material.TabRow
@ -17,9 +20,6 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.activities.NewSearchActivity
import com.huanchengfly.tieba.post.arch.onEvent
@ -39,7 +39,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch
@OptIn(ExperimentalPagerApi::class)
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun ExplorePage(
eventFlow: Flow<MainUiEvent>,
@ -127,7 +127,7 @@ fun ExplorePage(
) { paddingValues ->
HorizontalPager(
contentPadding = paddingValues,
count = pages.size,
pageCount = pages.size,
state = pagerState,
key = { pages[it].first },
modifier = Modifier.fillMaxSize(),

View File

@ -1,6 +1,9 @@
package com.huanchengfly.tieba.post.ui.page.main.notifications
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.Scaffold
import androidx.compose.material.Tab
import androidx.compose.material.TabRow
@ -14,9 +17,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.stringResource
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.huanchengfly.tieba.post.R
import com.huanchengfly.tieba.post.activities.NewSearchActivity
import com.huanchengfly.tieba.post.goToActivity
@ -29,7 +29,7 @@ import com.huanchengfly.tieba.post.ui.widgets.compose.Toolbar
import com.huanchengfly.tieba.post.ui.widgets.compose.accountNavIconIfCompact
import kotlinx.coroutines.launch
@OptIn(ExperimentalPagerApi::class)
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun NotificationsPage() {
val context = LocalContext.current
@ -88,7 +88,7 @@ fun NotificationsPage() {
) { paddingValues ->
HorizontalPager(
contentPadding = paddingValues,
count = pages.size,
pageCount = pages.size,
state = pagerState,
key = { pages[it].first },
modifier = Modifier.fillMaxSize(),

View File

@ -1,5 +1,6 @@
package com.huanchengfly.tieba.post.ui.page.settings.block
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
@ -13,6 +14,8 @@ import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.pager.HorizontalPager
import androidx.compose.foundation.pager.rememberPagerState
import androidx.compose.material.DropdownMenuItem
import androidx.compose.material.Icon
import androidx.compose.material.MaterialTheme
@ -39,9 +42,6 @@ import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.HorizontalPager
import com.google.accompanist.pager.rememberPagerState
import com.google.accompanist.placeholder.material.placeholder
import com.google.gson.reflect.TypeToken
import com.huanchengfly.tieba.post.R
@ -65,7 +65,7 @@ import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import kotlinx.coroutines.launch
@OptIn(ExperimentalPagerApi::class)
@OptIn(ExperimentalFoundationApi::class)
@Destination
@Composable
fun BlockSettingsPage(
@ -193,7 +193,7 @@ fun BlockSettingsPage(
)
}
HorizontalPager(
count = 2,
pageCount = 2,
state = pagerState,
modifier = Modifier.fillMaxSize(),
contentPadding = paddingValues,

View File

@ -1,6 +1,7 @@
package com.huanchengfly.tieba.post.ui.widgets.compose
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
@ -8,6 +9,7 @@ import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.pager.PagerState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.LocalContentColor
import androidx.compose.material.TabPosition
@ -18,10 +20,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.lerp
import com.google.accompanist.pager.ExperimentalPagerApi
import com.google.accompanist.pager.PagerState
@OptIn(ExperimentalPagerApi::class)
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun PagerTabIndicator(
pagerState: PagerState,
@ -33,7 +33,7 @@ fun PagerTabIndicator(
val currentTab = tabPositions[currentPage]
val prevTab = tabPositions.getOrNull(currentPage - 1)
val nextTab = tabPositions.getOrNull(currentPage + 1)
val fraction = pagerState.currentPageOffset
val fraction = pagerState.currentPageOffsetFraction
val currentTabLeft = currentTab.left + (currentTab.width / 2 - tabWidth / 2)
val indicatorOffset = if (fraction > 0 && nextTab != null) {
val nextTabLeft = nextTab.left + (nextTab.width / 2 - tabWidth / 2)