优化应用布局对手机系统字体大小的适配

This commit is contained in:
lyswhut 2021-05-26 17:36:40 +08:00
parent 1899859db2
commit bddbd9480e
12 changed files with 59 additions and 40 deletions

View File

@ -2,3 +2,7 @@
- 新增我的列表中已收藏的在线列表的更新功能。注意这将会覆盖本地的目标列表歌曲将被替换成最新的在线列表与PC端的同步一样 - 新增我的列表中已收藏的在线列表的更新功能。注意这将会覆盖本地的目标列表歌曲将被替换成最新的在线列表与PC端的同步一样
- 歌曲添加、移动弹窗新增创建新列表功能 - 歌曲添加、移动弹窗新增创建新列表功能
### 优化
- 优化应用布局对手机系统字体大小的适配

View File

@ -80,7 +80,7 @@ const styles = StyleSheet.create({
// backgroundColor: 'rgba(0,0,0,0.1)', // backgroundColor: 'rgba(0,0,0,0.1)',
flexGrow: 1, flexGrow: 1,
flexShrink: 1, flexShrink: 1,
height: 38, // height: 38,
alignItems: 'center', alignItems: 'center',
// paddingRight: 5, // paddingRight: 5,
}, },

View File

@ -231,11 +231,11 @@ export default memo(({ currentList, activeListIdRef, handleCancelMultiSelect })
const styles = StyleSheet.create({ const styles = StyleSheet.create({
sourceMenu: { sourceMenu: {
height: 38,
lineHeight: 38,
minWidth: 70, minWidth: 70,
paddingLeft: 10, paddingLeft: 10,
paddingRight: 10, paddingRight: 10,
paddingTop: 10,
paddingBottom: 10,
}, },
container: { container: {
@ -250,7 +250,9 @@ const styles = StyleSheet.create({
borderBottomWidth: BorderWidths.normal, borderBottomWidth: BorderWidths.normal,
}, },
listName: { listName: {
height: 46, // height: 46,
paddingTop: 12,
paddingBottom: 12,
justifyContent: 'center', justifyContent: 'center',
flexGrow: 1, flexGrow: 1,
flexShrink: 1, flexShrink: 1,
@ -258,7 +260,9 @@ const styles = StyleSheet.create({
}, },
listMoreBtn: { listMoreBtn: {
width: 50, width: 50,
height: 46, // height: 46,
paddingTop: 12,
paddingBottom: 12,
justifyContent: 'center', justifyContent: 'center',
alignItems: 'center', alignItems: 'center',
}, },

View File

@ -343,12 +343,6 @@ const styles = StyleSheet.create({
flexGrow: 1, flexGrow: 1,
flexShrink: 1, flexShrink: 1,
}, },
lists: {
height: 50,
flexGrow: 0,
flexShrink: 0,
flexDirection: 'row',
},
}) })
export default List export default List

View File

@ -1,9 +1,10 @@
import React, { memo, useMemo } from 'react' import React, { memo, useMemo } from 'react'
import { StyleSheet, Text } from 'react-native' import { StyleSheet, Text, View } from 'react-native'
import DorpDownMenu from '@/components/common/DorpDownMenu' import DorpDownMenu from '@/components/common/DorpDownMenu'
import { useGetter, useDispatch } from '@/store' import { useGetter, useDispatch } from '@/store'
import { useTranslation } from '@/plugins/i18n' import { useTranslation } from '@/plugins/i18n'
import { useLayout } from '@/utils/hooks'
export default memo(() => { export default memo(() => {
@ -14,6 +15,7 @@ export default memo(() => {
const theme = useGetter('common', 'theme') const theme = useGetter('common', 'theme')
// const currentSourceName = useGetter('search', 'currentSourceName') // const currentSourceName = useGetter('search', 'currentSourceName')
const { t } = useTranslation() const { t } = useTranslation()
const { onLayout, ...layout } = useLayout()
const sourceList_t = useMemo(() => { const sourceList_t = useMemo(() => {
return sourceList.map(s => ({ label: t(`source_${sourceNameType}_${s.id}`), action: s.id })) return sourceList.map(s => ({ label: t(`source_${sourceNameType}_${s.id}`), action: s.id }))
@ -22,10 +24,12 @@ export default memo(() => {
return ( return (
<DorpDownMenu <DorpDownMenu
menus={sourceList_t} menus={sourceList_t}
width={80} width={layout.width}
onPress={({ action }) => setSearchSource({ searchSource: action })} onPress={({ action }) => setSearchSource({ searchSource: action })}
> >
<Text style={{ ...styles.sourceMenu, color: theme.normal }}>{t(`source_${sourceNameType}_${searchSource}`)}</Text> <View style={styles.sourceMenu} onLayout={onLayout}>
<Text style={{ color: theme.normal }}>{t(`source_${sourceNameType}_${searchSource}`)}</Text>
</View>
</DorpDownMenu> </DorpDownMenu>
) )
}) })
@ -33,9 +37,11 @@ export default memo(() => {
const styles = StyleSheet.create({ const styles = StyleSheet.create({
sourceMenu: { sourceMenu: {
height: 38, flex: 1,
lineHeight: 38, alignItems: 'center',
textAlign: 'center', justifyContent: 'center',
width: 80, paddingLeft: 12,
paddingRight: 12,
// width: 80,
}, },
}) })

View File

@ -32,7 +32,7 @@ export default memo(() => {
return ( return (
<ScrollView style={styles.container} keyboardShouldPersistTaps={'always'} horizontal={true} showsHorizontalScrollIndicator={false}> <ScrollView style={styles.container} keyboardShouldPersistTaps={'always'} horizontal={true}>
{ {
sorts.map(s => ( sorts.map(s => (
<TouchableOpacity style={styles.button} onPress={() => setSongList({ sortId: s.id })} key={s.id}> <TouchableOpacity style={styles.button} onPress={() => setSongList({ sortId: s.id })} key={s.id}>
@ -67,11 +67,13 @@ const styles = StyleSheet.create({
// backgroundColor: 'rgba(0,0,0,0.1)', // backgroundColor: 'rgba(0,0,0,0.1)',
}, },
buttonText: { buttonText: {
height: 38, // height: 38,
lineHeight: 38, // lineHeight: 38,
textAlign: 'center', textAlign: 'center',
paddingLeft: 15, paddingLeft: 15,
paddingRight: 15, paddingRight: 15,
paddingTop: 10,
paddingBottom: 10,
// width: 80, // width: 80,
}, },
}) })

View File

@ -1,9 +1,10 @@
import React, { memo, useMemo, useCallback } from 'react' import React, { memo, useMemo, useCallback } from 'react'
import { StyleSheet, Text } from 'react-native' import { StyleSheet, Text, View } from 'react-native'
import DorpDownMenu from '@/components/common/DorpDownMenu' import DorpDownMenu from '@/components/common/DorpDownMenu'
import { useGetter, useDispatch } from '@/store' import { useGetter, useDispatch } from '@/store'
import { useTranslation } from '@/plugins/i18n' import { useTranslation } from '@/plugins/i18n'
import { useLayout } from '@/utils/hooks'
export default memo(() => { export default memo(() => {
@ -15,6 +16,7 @@ export default memo(() => {
const sortList = useGetter('songList', 'sortList') const sortList = useGetter('songList', 'sortList')
const sourceNameType = useGetter('common', 'sourceNameType') const sourceNameType = useGetter('common', 'sourceNameType')
const theme = useGetter('common', 'theme') const theme = useGetter('common', 'theme')
const { onLayout, ...layout } = useLayout()
const sources_t = useMemo(() => { const sources_t = useMemo(() => {
return sources.map(s => ({ label: t(`source_${sourceNameType}_${s.id}`), action: s.id })) return sources.map(s => ({ label: t(`source_${sourceNameType}_${s.id}`), action: s.id }))
@ -28,10 +30,12 @@ export default memo(() => {
return ( return (
<DorpDownMenu <DorpDownMenu
menus={sources_t} menus={sources_t}
width={80} width={layout.width}
onPress={handleSetSource} onPress={handleSetSource}
> >
<Text style={{ ...styles.sourceMenu, color: theme.normal }}>{t(`source_${sourceNameType}_${songListSource}`)}</Text> <View style={styles.sourceMenu} onLayout={onLayout}>
<Text style={{ color: theme.normal }}>{t(`source_${sourceNameType}_${songListSource}`)}</Text>
</View>
</DorpDownMenu> </DorpDownMenu>
) )
}) })
@ -39,9 +43,10 @@ export default memo(() => {
const styles = StyleSheet.create({ const styles = StyleSheet.create({
sourceMenu: { sourceMenu: {
height: 38, flex: 1,
lineHeight: 38, alignItems: 'center',
textAlign: 'center', justifyContent: 'center',
width: 80, paddingLeft: 12,
paddingRight: 12,
}, },
}) })

View File

@ -88,12 +88,14 @@ export default memo(() => {
const styles = StyleSheet.create({ const styles = StyleSheet.create({
sourceMenu: { sourceMenu: {
height: 38, // height: 38,
lineHeight: 38, // lineHeight: 38,
textAlign: 'center', textAlign: 'center',
// minWidth: 70, // minWidth: 70,
paddingLeft: 12, paddingLeft: 12,
paddingRight: 12, paddingRight: 12,
paddingTop: 10,
paddingBottom: 10,
}, },
container: { container: {

View File

@ -24,6 +24,7 @@ const styles = StyleSheet.create({
container: { container: {
flexDirection: 'column', flexDirection: 'column',
width: '26%', width: '26%',
maxWidth: 120,
flexGrow: 0, flexGrow: 0,
flexShrink: 0, flexShrink: 0,
borderRightWidth: BorderWidths.normal, borderRightWidth: BorderWidths.normal,

View File

@ -1,5 +1,5 @@
import React, { memo, useMemo } from 'react' import React, { memo, useMemo } from 'react'
import { StyleSheet, Text } from 'react-native' import { StyleSheet, Text, View } from 'react-native'
import DorpDownMenu from '@/components/common/DorpDownMenu' import DorpDownMenu from '@/components/common/DorpDownMenu'
import { useGetter, useDispatch } from '@/store' import { useGetter, useDispatch } from '@/store'
@ -25,7 +25,9 @@ export default memo(({ layout }) => {
width={layout.width} width={layout.width}
onPress={({ action }) => setTop({ source: action })} onPress={({ action }) => setTop({ source: action })}
> >
<Text style={{ ...styles.sourceMenu, color: theme.normal }}>{t(`source_${sourceNameType}_${sourceId}`)}</Text> <View style={styles.sourceMenu}>
<Text style={{ color: theme.normal }} numberOfLines={1}>{t(`source_${sourceNameType}_${sourceId}`)}</Text>
</View>
</DorpDownMenu> </DorpDownMenu>
) )
}) })
@ -33,11 +35,10 @@ export default memo(({ layout }) => {
const styles = StyleSheet.create({ const styles = StyleSheet.create({
sourceMenu: { sourceMenu: {
height: 38, justifyContent: 'center',
lineHeight: 38, paddingTop: 12,
paddingBottom: 12,
paddingLeft: 10, paddingLeft: 10,
paddingRight: 10, paddingRight: 10,
// textAlign: 'center',
// width: 80,
}, },
}) })

View File

@ -23,7 +23,7 @@ export default () => {
return ( return (
<> <>
<View style={styles.progress}><Progress progress={progress} bufferedProgress={bufferedProgress} duration={duration} /></View> <View style={styles.progress}><Progress progress={progress} bufferedProgress={bufferedProgress} duration={duration} /></View>
<View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'flex-end', height: 17 }}> <View style={{ flexDirection: 'row', justifyContent: 'space-between', alignItems: 'flex-end' }}>
{/* <MusicName /> */} {/* <MusicName /> */}
<View style={{ flexGrow: 1, flexShrink: 1, paddingRight: 5 }} > <View style={{ flexGrow: 1, flexShrink: 1, paddingRight: 5 }} >
<Status /> <Status />

View File

@ -24,7 +24,7 @@ export default memo(({ playNextModes }) => {
<View style={{ ...styles.container, backgroundColor: theme.primary, borderTopColor: theme.secondary10 }}> <View style={{ ...styles.container, backgroundColor: theme.primary, borderTopColor: theme.secondary10 }}>
<View style={styles.left} elevation={1}><Pic /></View> <View style={styles.left} elevation={1}><Pic /></View>
<View style={styles.center}> <View style={styles.center}>
<View style={{ ...styles.row, justifyContent: 'space-between', fontSize: 12, height: 19 }}> <View style={{ ...styles.row, justifyContent: 'space-between', fontSize: 12 }}>
<Title /> <Title />
{/* <PlayTime /> */} {/* <PlayTime /> */}
</View> </View>
@ -44,7 +44,7 @@ export default memo(({ playNextModes }) => {
const styles = StyleSheet.create({ const styles = StyleSheet.create({
container: { container: {
width: '100%', width: '100%',
height: 59, // height: 59,
// paddingTop: progressContentPadding, // paddingTop: progressContentPadding,
// marginTop: -progressContentPadding, // marginTop: -progressContentPadding,
// backgroundColor: 'rgba(0, 0, 0, .1)', // backgroundColor: 'rgba(0, 0, 0, .1)',
@ -68,7 +68,7 @@ const styles = StyleSheet.create({
flexShrink: 1, flexShrink: 1,
paddingLeft: 5, paddingLeft: 5,
justifyContent: 'space-evenly', justifyContent: 'space-evenly',
height: 48, // height: 48,
}, },
right: { right: {
flexDirection: 'row', flexDirection: 'row',