javascript
import { MainProps } from "@src/component/MaskPannel";
import React, { useState } from "react";
import { StyleSheet, View, TouchableOpacity, Image, Text } from 'react-native';
import { UI } from 'xxxxxx'; // 可以自定义Icon图库
const { Icon } = UI;
const MaskPannel: React.FC<MainProps> = (props: MainProps) => {
const [visible, setVisible] = useState(true);
const handleClose = () => {
setVisible(false);
};
const handleMinimize = () => {
// 处理最小化逻辑
};
const handleHelp = () => {
// 处理帮助逻辑
};
return (
<View style={styles.container}>
<View style={styles.header}>
<Text style={styles.headerText}>黑色蒙层和覆盖透明图片</Text>
<View style={styles.iconContainer}>
<TouchableOpacity onPress={handleHelp} style={styles.iconButton}>
<Icon type='question-circle-o' size={18} tintColor='rgba(255, 255, 255, 0.7)' />
</TouchableOpacity>
<TouchableOpacity onPress={handleMinimize} style={styles.iconButton}>
<Icon type='minus' size={18} tintColor='rgba(255, 255, 255, 0.7)' />
</TouchableOpacity>
<TouchableOpacity onPress={handleClose} style={styles.iconButton}>
<Icon type='times' size={18} tintColor='rgba(255, 255, 255, 0.7)' />
</TouchableOpacity>
</View>
</View>
<View style={styles.wrap}>
{visible && (
<View style={styles.overlayContainer}>
<TouchableOpacity style={styles.overlay} onPress={handleClose}>
<Image source={require('@src/assets/test/bk.png')} style={styles.overlayImage} />
</TouchableOpacity>
</View>
)}
<View style={styles.effectsRow}>
<TouchableOpacity style={styles.effectContainer}>
<Image source={require('@src/assets/test/pika1.gif')} style={styles.effectImage} />
<Text style={styles.effectText}>城堡</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.effectContainer}>
<Image source={require('@src/assets/test/pika2.gif')} style={styles.effectImage} />
<Text style={styles.effectText}>发射爱心</Text>
</TouchableOpacity>
<TouchableOpacity style={styles.effectContainer}>
<Image source={require('@src/assets/test/pika3.gif')} style={styles.effectImage} />
<Text style={styles.effectText}>创世纪摩托车</Text>
</TouchableOpacity>
</View>
</View>
</View>
);
}
const styles = StyleSheet.create({
container: {
// flex: 1,
borderTopLeftRadius: 12,
borderTopRightRadius: 12,
overflow: 'hidden',
height: 576
},
wrap: {
// flex: 1,
backgroundColor: '#2E3137',
paddingTop: 10,
paddingHorizontal: 20,
},
header: {
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
paddingHorizontal: 10,
paddingVertical: 5,
backgroundColor: '#25272C',
height: 40,
},
headerText: {
color: '#FFFFFF',
fontSize: 14,
fontWeight: '400',
fontFamily: 'Microsoft YaHei',
lineHeight: 16,
},
iconContainer: {
width: 98,
height: 18,
flexDirection: 'row',
justifyContent: 'space-between',
alignItems: 'center',
},
iconButton: {
width: 18,
height: 18,
justifyContent: 'center',
alignItems: 'center',
},
overlayContainer: {
...StyleSheet.absoluteFillObject,
zIndex: 2,
},
overlay: {
...StyleSheet.absoluteFillObject,
backgroundColor: 'rgba(0, 0, 0, 0.8)',
},
overlayImage: {
width: 375,
height: 536,
},
effectsRow: {
flexDirection: 'row',
justifyContent: 'space-between',
marginTop: 20,
},
effectContainer: {
alignItems: 'center',
width: 100,
backgroundColor: '#2E3137',
padding: 10,
borderRadius: 10,
},
effectImage: {
width: 50,
height: 50,
marginBottom: 8,
},
effectText: {
fontFamily: 'Microsoft YaHei',
color: '#FFFFFF',
fontSize: 12,
},
});
export default MaskPannel;
1.黑色蒙层#000000 80%,首次打开弹出
2.点击图片可以关闭