remindSetting.js 10.3 KB
/**
 * Created by Cassie on 2018/05/14
 */
import React, { Component } from 'react';
import {
    StyleSheet,
    View,
    Text,
    TouchableOpacity,
    Image,
    Animated,
    InteractionManager
} from 'react-native';

import {width,zoomW,zoomH} from '../../utils/getSize';
import {NoDoublePress} from '../../utils/utils';

const back = require('../../img/returnB.png');
const selected = require('../../img/selectedG.png');

export default class RemindSetting extends Component {
    static navigationOptions = ({ navigation, screenProps }) => ({
        title:'提醒',
        headerLeft:(<View style={{flex:1,display:'flex',flexDirection:'row'}}>
            <TouchableOpacity style={styles.topIcon} onPress={navigation.state.params?navigation.state.params.back:null}>
                <Image source={back} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
            </TouchableOpacity>
        </View>),
        headerRight:(<View style={{flex:1,display:'flex',flexDirection:'row'}} />)
    });

    constructor(props){
        super(props);
        this.state = {
            left:new Animated.Value(2/zoomH),
            timeLeft:new Animated.Value(2/zoomH),
            background:'#c6c6c6',
            timeBackground:'#c6c6c6',
            showSetting:false,
            showTimeSetting:false
        };
    };

    componentWillMount(){};

    componentDidMount(){
        this.props.navigation.setParams({
            back:()=>{
                NoDoublePress.onPress(() => {
                    InteractionManager.runAfterInteractions(() => {this.props.navigation.goBack();})
                })
            }
        });
    };

    /*是否打开提醒*/
    isTop(type){
        if(type == 'top'){
            if(this.state.background == '#c6c6c6'){
                this.setState({
                    background:'#00be3c',
                    showSetting:true
                });
                Animated.timing(
                    this.state.left,
                    {toValue:(32/zoomH),duration:200}
                ).start();
            }else if(this.state.background == '#00be3c'){
                this.setState({
                    background:'#c6c6c6',
                    showSetting:false
                });
                Animated.timing(
                    this.state.left,
                    {toValue:(2/zoomH),duration:200}
                ).start();
            }
        }else if(type == 'time'){
            if(this.state.timeBackground == '#c6c6c6'){
                this.setState({
                    timeBackground:'#00be3c',
                    showTimeSetting:true
                });
                Animated.timing(
                    this.state.timeLeft,
                    {toValue:(32/zoomH),duration:200}
                ).start();
            }else if(this.state.timeBackground == '#00be3c'){
                this.setState({
                    timeBackground:'#c6c6c6',
                    showTimeSetting:false
                });
                Animated.timing(
                    this.state.timeLeft,
                    {toValue:(2/zoomH),duration:200}
                ).start();
            }
        }
    };

    componentWillUnmount(){
        this.setState = (state,callback)=>{
            return;
        };
    };

    render(){
        return(
            <View style={styles.background}>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>任务动态推送</Text>
                    </View>
                    <TouchableOpacity activeOpacity={0.8} style={[styles.topBtn,{backgroundColor:this.state.background}]} onPress={() => NoDoublePress.onPress(() => {this.isTop('top')})}>
                        <Animated.View style={[styles.circleDot,{left:this.state.left}]} />
                    </TouchableOpacity>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>全部提醒</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={[styles.settingItem,{marginBottom:(20/zoomH)}]}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>回复我的</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>时间提醒</Text>
                    </View>
                    <TouchableOpacity activeOpacity={0.8} style={[styles.topBtn,{backgroundColor:this.state.timeBackground}]} onPress={() => NoDoublePress.onPress(() => {this.isTop('time')})}>
                        <Animated.View style={[styles.circleDot,{left:this.state.timeLeft}]} />
                    </TouchableOpacity>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束时</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前5分钟</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前10分钟</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前15分钟</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前30分钟</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前1小时</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前2小时</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
                <View style={styles.settingItem}>
                    <View style={{flex:1}}>
                        <Text style={{fontSize:17,color:'#000'}}>结束前一天</Text>
                    </View>
                    <View style={{width:(50/zoomW),display:'flex',justifyContent:'center',alignItems:'center'}}>
                        <Image source={selected} style={{width:(16/zoomH),height:(16/zoomH)}} resizeMode="contain" />
                    </View>
                </View>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    topIcon:{
        paddingLeft:(10/zoomW),
        paddingRight:(10/zoomW),
        height:'100%',
        display:'flex',
        justifyContent:'center'
    },
    background:{
        flex:1,
        backgroundColor:'#ececf1',
        display:'flex',
        alignItems:'center',
        paddingLeft:(15/zoomW)
    },
    settingItem:{
        width:width,
        height:(42/zoomH),
        backgroundColor:'#fff',
        display:'flex',
        flexDirection:'row',
        alignItems:'center',
        marginLeft:-(15/zoomW),
        borderBottomWidth:StyleSheet.hairlineWidth,
        borderBottomColor:'#eee',
        borderStyle:'solid',
        paddingLeft:(15/zoomW),
        paddingRight:(15/zoomW)
    },
    topBtn:{
        width:(60/zoomH),
        height:(30/zoomH),
        borderRadius:(15/zoomH),
        display:'flex',
        justifyContent:'center'
    },
    circleDot:{
        width:(26/zoomH),
        height:(26/zoomH),
        backgroundColor:'#fff',
        borderRadius:(13/zoomH),
        position:'absolute'
    }
});