Blame view

NormalHeader.js 2.04 KB
75c87a8d   张志伟   init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
  /**
   * Author: Shi(bolan0000@icloud.com)
   * Date: 2019/1/18
   * Copyright (c) 2018, AoTang, Inc.
   *
   * Description:
   */
  
  import React from "react";
  import { RefreshHeader, HeaderStatus } from "./RefreshHeader";
  import {
    ActivityIndicator,
    Animated,
    View,
    StyleSheet,
    Text
  } from "react-native";
  
  export class NormalHeader extends RefreshHeader {
    static height = 80;
  
    static style = "stickyContent";
  
    render() {
      return (
        <View style={styles.container}>
          {this._renderIcon()}
          <View style={styles.rContainer}>
            <Text style={styles.text}>
              {this.getTitle()}
            </Text>
            {this.renderContent()}
          </View>
        </View>
      );
    }
  
    _renderIcon() {
      const s = this.state.status;
      if (s === "refreshing" || s === "rebound") {
        return <ActivityIndicator color={"gray"}/>;
      }
      const { maxHeight, offset } = this.props;
      return (
        <Animated.Image
          source={require("./Customize/res/arrow.png")}
          style={{
            transform: [
              {
                rotate: offset.interpolate({
                  inputRange: [-maxHeight - 1 - 10, -maxHeight - 10, -50, -49],
                  outputRange: ["180deg", "180deg", "0deg", "0deg"]
                })
              }
            ]
          }}
        />
      );
    }
  
    renderContent(){
      return null;
    }
  
    getTitle() {
      const s = this.state.status;
      if (s === "pulling" || s === "waiting") {
        return "Pull down to refresh";
      } else if (s === "pullingEnough") {
        return "Release to refresh";
      } else if (s === "refreshing") {
        return "Refreshing ...";
      } else if (s === "pullingCancel") {
        return "Give up refreshing";
      } else if (s === "rebound") {
        return "Refresh completed";
      }
    }
  }
  
  const styles = StyleSheet.create({
    container: {
      flex: 1,
      alignItems: "center",
      justifyContent: "center",
      flexDirection: "row"
    },
    rContainer: {
      marginLeft: 20
    },
    text: {
      marginVertical: 5,
      fontSize: 15,
      color: "#666",
      textAlign: "center",
      width: 140
    }
  });