暂无描述

VocabularyImageView.js 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. /**
  2. * Created by zack on 2018/4/27.
  3. */
  4. import {
  5. View,
  6. Text,
  7. StyleSheet,
  8. TouchableOpacity,
  9. Platform,
  10. Image,
  11. } from 'react-native'
  12. import React, {Component} from 'react'
  13. import {NavigationBarHeight, TabBarHeight, ScreenDimensions} from '../../../utils/DimensionsTools'
  14. export default class VocabularyImageView extends Component {
  15. constructor(props) {
  16. super(props)
  17. this.state = {
  18. selectedIndex: -1,
  19. correctIndex: props.correctIndex,
  20. isVerified: props.isVerified
  21. }
  22. }
  23. componentWillReceiveProps(props) {
  24. this.setState({
  25. correctIndex: props.correctIndex,
  26. isVerified: props.isVerified
  27. })
  28. }
  29. renderItems() {
  30. let titles = ["dog", 'cat', 'sun', 'moon']
  31. let items = []
  32. let deselectImageSource = require('../../../resources/images/TabBar/Learn/btn_normal.png')
  33. let selectImageSource = require('../../../resources/images/TabBar/Learn/btn_seleted.png')
  34. let selectCorrectedImageSource = require('../../../resources/images/TabBar/Learn/btn_correct.png')
  35. for(let i = 0 ; i < titles.length; i ++) {
  36. let imageSource = null
  37. if (!this.state.isVerified) { //还没有进行验证
  38. if (i === this.state.selectedIndex) {
  39. imageSource = selectCorrectedImageSource
  40. }else {
  41. imageSource = deselectImageSource
  42. }
  43. }else { //已经验证了
  44. if (this.state.selectedIndex === this.state.correctIndex) { // 答对了
  45. if (i === this.state.selectedIndex) {
  46. imageSource = selectCorrectedImageSource
  47. }else {
  48. imageSource = deselectImageSource
  49. }
  50. }else { //回答错误了
  51. if (i === this.state.selectedIndex) {
  52. imageSource = selectImageSource
  53. }else if (i === this.state.correctIndex) {
  54. imageSource = selectCorrectedImageSource
  55. }else {
  56. imageSource = deselectImageSource
  57. }
  58. }
  59. }
  60. let item = (
  61. <TouchableOpacity onPress={() => {
  62. this.props.didSelectedItem(i)
  63. this.setState({selectedIndex: i})
  64. }} key={i} style={[styles.ItemBgView, {marginLeft: i%2 === 0 ? 23: 14, marginTop: i < 2 ? 0 : 14 }]}>
  65. <Image style={styles.ImageView} source={require("../../../resources/images/TabBar/Learn/pic_03_dog.png")}/>
  66. <View style={styles.TitleBgView}>
  67. <Image style={styles.SelectedImageView} source={imageSource}/>
  68. <Text style={styles.Title}>
  69. {'dog'}
  70. </Text>
  71. </View>
  72. </TouchableOpacity>
  73. )
  74. items.push(item)
  75. }
  76. return items
  77. }
  78. render() {
  79. return(
  80. <View style={styles.View}>
  81. {this.renderItems()}
  82. </View>
  83. )
  84. }
  85. }
  86. const styles = StyleSheet.create({
  87. View: {
  88. width: ScreenDimensions.width,
  89. marginTop: 20,
  90. flexWrap: 'wrap',
  91. flexDirection: 'row'
  92. },
  93. ItemBgView: {
  94. width: (ScreenDimensions.width - 23 - 23 - 14)/2.0,
  95. //height: (ScreenDimensions.width - 23 - 23 - 14)/2.0*165/150.0,
  96. borderRadius: 8,
  97. borderColor: '#d2d2d2',
  98. borderWidth: 1,
  99. justifyContent: 'space-between',
  100. },
  101. ImageView: {
  102. width: (ScreenDimensions.width - 23 - 23 - 14)/2.0 - 30,
  103. height:(ScreenDimensions.width - 23 - 23 - 14)/2.0 - 30,
  104. marginLeft: 15,
  105. marginTop: 15,
  106. },
  107. TitleBgView: {
  108. width: (ScreenDimensions.width - 23 - 23 - 14)/2.0 - 30,
  109. flexDirection: 'row',
  110. alignItems: 'center',
  111. marginTop: 17,
  112. marginBottom: 11,
  113. },
  114. SelectedImageView: {
  115. width: 22,
  116. height: 22,
  117. marginLeft: 7,
  118. },
  119. Title: {
  120. fontSize: 16,
  121. color: '#333333',
  122. marginLeft: 11,
  123. }
  124. })