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

简介: 可触摸组件有: TouchableHighlight,TouchableNativeFeedback,TouchableOpacity,TouchableWithoutFeedback 1. TouchableWithoutFeedback,在用户触摸的时候没有反馈任何触摸效果,体验很不好,基本很少使用. 2. TouchableNativeFeedback 是Andro

可触摸组件有:
TouchableHighlight,TouchableNativeFeedback,TouchableOpacity,TouchableWithoutFeedback
1. TouchableWithoutFeedback,在用户触摸的时候没有反馈任何触摸效果,体验很不好,基本很少使用.
2. TouchableNativeFeedback 是Android操作系统专用组件,使用原生控件相应的状态来展示, 比如5.0以上产生涟漪效果.
3. 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");
    }
}

按下前效果:
按下前效果
按下的效果:
按下的效果:

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

回调函数和其它属性

  1. onPress 点击事件回调函数
  2. onLongPress 长按事件
  3. delayLongPress 设置长按事件的时长是多少毫米 默认是500ms
  4. delayPressOut 设置离开屏幕多少毫秒后 onPressOut事件被激活, 默认是0
  5. delayPressIn 设置手指触摸屏幕多少毫米厚, onPressIn事件被激活,默认是0
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
探索前端开发中的跨平台框架React Native
本文将介绍前端开发中一种备受关注的跨平台框架React Native,通过比较原生应用与React Native的优缺点,探讨其在实际项目中的应用以及未来发展趋势。
|
2月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
3月前
|
资源调度 前端开发 JavaScript
React 的antd-mobile 组件库,嵌套路由
React 的antd-mobile 组件库,嵌套路由
38 0
|
2月前
|
存储 前端开发 中间件
React组件间的通信
React组件间的通信
15 1
|
2月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
2月前
|
前端开发 应用服务中间件 数据库
react服务端组件
react服务端组件
21 0
|
2月前
|
前端开发 IDE 小程序
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
33 0
|
2月前
|
前端开发 JavaScript
快速上手React:从概述到组件与事件处理
快速上手React:从概述到组件与事件处理
|
3月前
|
前端开发 JavaScript API
React组件生命周期
React组件生命周期
71 1
|
3月前
|
资源调度 前端开发 JavaScript
React组件
React组件
40 0