从零学React Native之09可触摸组件

2017-01-14 10:01:55来源:http://www.jianshu.com/p/e9f578f0f52f作者:于连林520wcf人点击

第七城市

可触摸组件有:
TouchableHighlight,TouchableNativeFeedback,TouchableOpacity,TouchableWithoutFeedback


TouchableWithoutFeedback,在用户触摸的时候没有反馈任何触摸效果,体验很不好,基本很少使用.
TouchableNativeFeedback 是Android操作系统专用组件,使用原生控件相应的状态来展示, 比如5.0以上产生涟漪效果.
TouchableHighlight与TouchableOpacity都产生视觉效果, 其中TouchableOpacity是四者中使用最多的.
TouchableHighlight

当一个组件成为TouchableHighlight组件的子组件后,这个组件触摸时会产生一种变暗的效果,原理就是让被子组件遮盖住的下一层颜色向上透出来,这样就使子组件变暗或颜色, 默认透传上来是黑色, 可以通过underlayColor指定透传的颜色。activeOpacity属性可以指定透明度. 默认是0.8。
TouchableHighlight 还有一个bug,来看下面的代码:


import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
View,
TouchableHighlight,
TouchableOpacity,
TouchableNativeFeedback
} from 'react-native';
class AwesomeProject extends Component {
render() {
return (
//根View
<View style={{flex:1,backgroundColor:'white'}}>
<TouchableHighlightonPress={this.buttonPressed}>
<View style={{width:120,height:70,backgroundColor:'grey'}}/>
</TouchableHighlight>
</View>
);
}
buttonPressed(){
console.log("press");
}
}


按下前的效果


TouchableHighlight按下的效果

可以看到右侧不应该变暗的地方也变暗了, 这个可以在右侧增加一些其他需要显示的组件,或者为整个背景加个图片就可以解决。 当然还是建议大家使用TouchableOpacity。


TouchableOpacity

当一个组件成为TouchableOpacity组件的子组件后, 这个组件被触摸时会变成半透明的组件,通过activeOpacity 控制透明度, 默认是0.2 。
修改上面的代码:


  ...
render() {
return (
//根View
<View style={{flex:1,backgroundColor:'white'}}>
<TouchableOpacity onPress={this.buttonPressed}>
<View style={{width:120,height:70,backgroundColor:'grey'}}/>
</TouchableOpacity>
</View>
);
}
...


TouchableOpacity按下效果
回调函数和其它属性
onPress 点击事件回调函数
onLongPress 长按事件
delayLongPress 设置长按事件的时长是多少毫米 默认是500ms
delayPressOut 设置离开屏幕多少毫秒后 onPressOut事件被激活, 默认是0
delayPressIn 设置手指触摸屏幕多少毫米厚, onPressIn事件被激活,默认是0

更多精彩请关注微信公众账号likeDev,公众账号名称:爱上Android。



likeDev.jpg



第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台