转载请注明出处:王亟亟的大牛之路

最近项目部分模块重构,事情有点多,学习进度有所延缓,外加一直在吸毒(wow你懂的),导致好多天没发问了,其实这部分知识月头就想写了,一直没补。

话不多说先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android (下拉刷新模块单独区分开了)


rn也有类似于安卓的onClick行为

点击事件 onPress

长按事件 onLongPress

以及 “按下“ onPressIn “松开“ onPressOut

触控相关的组件分别为

TouchableHighlight

TouchableNativeFeedback

TouchableOpacity

TouchableWithoutFeedback

让我们用一个例子 来试验下这些内容

源码地址:https://github.com/ddwhan0123/ReactNativeDemo


import React, {Component, Navigator} from 'react';
import {
    AppRegistry,
    View,
    StyleSheet,
    Text,
    BackAndroid,
    Platform,
    ToastAndroid,
    TouchableHighlight,
    TouchableNativeFeedback,
    TouchableWithoutFeedback,
} from 'react-native';
var titleStr;
var _navigator;
var name;
//返回键监听行为
BackAndroid.addEventListener('hardwareBackPress', function() {
    if (_navigator == null) {
        return false;
    }
    if (_navigator.getCurrentRoutes().length === 1) {
        return false;
    }
        _navigator.pop();
    return true;
});

export default class Main extends Component {
    constructor(props) {
        super(props);
        _navigator = this.props.navigator;
        titleStr = this.props.titleStr;
        name = this.props.name;
    }

    //常规点击事件调用
    //常规的概念:手指在控件区域内按下,手指在控件区域内离开
    _textOnPress(){
      ToastAndroid.show('  这是一个可点击的Text', ToastAndroid.SHORT)
    }
    //手指在控件区域内按下,无论离不离开都立即调用
    _textOnPressIn(){
      ToastAndroid.show('  PressIn被触发', ToastAndroid.SHORT)
    }
    //手指在控件区域按下,无论在不在控件区域内离开都会被调用
    _textOnPressOut(){
      ToastAndroid.show('  OnPressOut被触发', ToastAndroid.SHORT)
    }
    //手指在控件区域内按下持续一定时间,手指在控件区域内离开(时间可自定义)
    _textOnLonePress(){
      ToastAndroid.show('这是一个长按波纹Text', ToastAndroid.SHORT)
    }
    //按下去没有ui反馈,但是回调已经触发
    _textNoFeedbackOnPress(){
        ToastAndroid.show('这是一个按下去没有实际效果的Text', ToastAndroid.SHORT)
    }

    render() {
        return (
            <View style={{flex : 1,flexDirection : 'column'}}>
                <Text>{titleStr}
                    页面 获得的参数: value = {name}
                </Text>
                <TouchableHighlight
                  onPress={this._textOnPress}
                  onPressIn={this._textOnPressIn}>
                  <Text style={{marginTop:20}}>
                      这是一个可点击的Text还响应了OnPressIn
                  </Text>
                </TouchableHighlight>
                {/* android md风格的动画效果,需要在外层套一个view不然,波纹扩散到哪去?  */}
                <TouchableNativeFeedback
                  onLongPress={this._textOnLonePress}
                  onPressOut={this._textOnPressOut}>
                  <View style={{width: 150, height: 28, backgroundColor: 'red',marginTop:20}}>
                    <Text>
                      这是一个长按波纹Text
                    </Text>
                  </View>
                </TouchableNativeFeedback>
                <TouchableWithoutFeedback
                  onPress={this._textNoFeedbackOnPress}>
                  <View style={{marginTop:20}}>
                    <Text >
                      这是一个没有点击效果的Text
                    </Text>
                  </View>
                </TouchableWithoutFeedback>
            </View>
        );
    }
}

AppRegistry.registerComponent('Main', () => Main);

TouchableWithoutFeedback这个组件只响应touch手势,不增加点击态

TouchableNativeFeedback这个组件只能用在安卓上,类似于Material Design的点击波纹效果

TouchableOpacity这个组件用来给为内部元素在点击时添加透明度

TouchableHighlight会给内部元素增加绑定事件之,还会在ui上显示点击区域的响应


什么?你要自定义?

下次再讲 进阶篇 关于 Gesture Responder System

混合开发的大趋势之一React Native手势行为那些事的更多相关文章

  1. 混合开发的大趋势之一React Native与Android联调

    转载请注明出处:王亟亟的大牛之路 先安利,有空我都会更,看到的好东西都会放进来:https://github.com/ddwhan0123/Useful-Open-Source-Android 公司某 ...

  2. 混合开发的大趋势之一React Native之页面跳转

    转载请注明出处:王亟亟的大牛之路 最近事情有点多,没有长时间地连贯学习,文章也停了一个多礼拜,愧疚,有时间还是继续学习,继续写! 还是先安利:https://github.com/ddwhan0123 ...

  3. 混合开发的大趋势之一React Native之简单的登录界面

    转载请注明出处:王亟亟的大牛之路 这些天都在学习RN这部分吧,然后写了个简单的登陆业务,从"实战"中讲解吧 还是继续安利:https://github.com/ddwhan0123 ...

  4. 混合开发的大趋势之一React Native之页面跳转(2)+物理返回+特定平台代码

    转载请注明出处:这里写链接内容 今天是10月份的最后一天,我加了3个月来的第一个班,挤出了这篇. 废话不多先安利,然后继续学习 RN 有好东西都往里面丢,努力做好归纳 https://github.c ...

  5. 混合开发的大趋势之一React Native之Image (脑动理解)

    文章是宝宝自己写的,你可以转走,标明哪来的就行王亟亟的大牛之路 国庆这些天要么旅游要么WOW,感觉整个人都废了.. 直接从黄种人晒成了非洲大酋长..然而还是无橙,这礼拜要做7天,昨天把单元测试的东西整 ...

  6. 混合开发的大趋势之 一个Android程序员眼中的 React.js 块级作用域 和 let

    转载请注明出处:王亟亟的大牛之路 最近都有事干然后,快到月底了这个月给CSDN的博文也就两篇,想想也蛮多天没更了,那就来一篇. 老规矩,先安利:https://github.com/ddwhan012 ...

  7. 混合开发的大趋势之 一个Android程序员眼中的 React.js 箭头函数,const, PropTypes

    转载请注明出处:王亟亟的大牛之路 昨天写了篇React.js的开头之作,讲了讲块级作用域和let,先安利:https://github.com/ddwhan0123/Useful-Open-Sourc ...

  8. 移动开发发展方向-----Hybird混合开发3大方案

    移动开发发展方向-----Hybird混合开发3大方案

  9. 浅谈移动应用的跨平台开发工具(Xamarin和React Native)

    谈移动应用的跨平台开发不能不提HTML5,PhoneGap和Sencha等平台一直致力于使用HTML5技术来开发跨平台的移动应用,现在看来这个方向基本算是失败的,基于HTML5的移动应用在用户体验上与 ...

随机推荐

  1. 字符串与图片的Base64编码转换操作

    //图片 转为 base64编码的文本 private void button1_Click(object sender, EventArgs e) { OpenFileDialog dlg = ne ...

  2. mongo 统计数据磁盘消耗

    repl_test:PRIMARY> show dbsadmin 0.000GBdirect_vote_resource 16.474GBlocal 14.860GBpersonas 30.77 ...

  3. netty4.x 实现接收http请求及响应

    参考 netty4.x 实现接收http请求及响应 - En taro tassadar - CSDN博客 https://blog.csdn.net/sinat_39783636/article/d ...

  4. 在HTML里面HEAD部分的META元素要表达的内容是什么

    1.name属性主要有以下几种参数: A.Keywords(关键字) 说明:keywords用来告诉搜索引擎你网页的关键字是什么. 举例:<meta name ="keywords&q ...

  5. Hdu 2457 DNA repair (ac自己主动机+dp)

    题目大意: 改动文本串的上的字符,使之不出现上面出现的串.问最少改动多少个. 思路分析: dp[i][j]表示如今 i 个字符改变成了字典树上的 j 节点. 然后顺着自己主动机一直转移方程. 注意合法 ...

  6. python logging模块介绍

    1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详细的信息,通常只出现在诊断问题上 INFO:确认一切按预期运行 ...

  7. (转)Spring整合Jpa

    Spring-data-jpa 学习笔记(一) 作者:zeng1994  出处:http://www.cnblogs.com/zeng1994/ Spring家族越来越强大,作为一名javaWeb开发 ...

  8. C#中获取音频文件时长

    1.在项目中添加引入:COM组件的Microsoft Shell Controls And Automation 2.在引用中找到Shell32,点击右键,在属性中将“嵌入互操作类型”的值改为“fal ...

  9. nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)解决

    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use) 报错信息 nginx: [emerg] bind() t ...

  10. TOSCA自动化测试工具--How to modify windows

    1.页面窗口(高亮的部分是我们需要的所有窗口) 2.窗口可以任意拖拽到任何地方 3.窗口可以并列显示 任务栏点击按钮可以继续拖动 放到自己想放的地方 4.收起preview,调整宽窄 5.保存当前wi ...