UNPKG

react-native-arenakit

Version:

为编写arena app中react native应用提供基础的ui及原生能力api支撑

66 lines (55 loc) 1.75 kB
import {NativeModules, Platform, DeviceEventEmitter, Dimensions} from 'react-native'; import AndroidApiMap from './android-api-map'; let RNMeasureText = NativeModules.RNMeasureText; //提供arena容器通讯能力 const Arena = { /** params: text: 文本 fontSize: 字体大小 fontFamily?: 字体族 width: 限制宽度 callback(result): result: width: 宽度 height: 高度 lineCount: 行数量 lastLineWidth:最后一行宽度 */ measureText: (params) => { var fontSize = params && params.fontSize if (typeof fontSize !== 'number') { return Promise.reject(new Error('missing required \'fontSize\' property')); } var fontScale = Dimensions.get('window').fontScale || 1; if (fontScale !== 1) { params = Object.assign( {}, params, { fontSize: fontSize * fontScale } ); } return RNMeasureText.measure(params); }, /** * 添加原生事件 * @param name * @param callback */ addEventListener: (name, callback) => { if (Platform.OS === 'android') { DeviceEventEmitter.addListener(name, callback); } else { const { ArenaNotification } = NativeModules; if (ArenaNotification) { ArenaNotification.startReceiveNotification();//在原生中注册通知 const arenaNotificationEmitter = new NativeEventEmitter(ArenaNotification); arenaNotificationEmitter.addListener( name, callback ); } } } }; module.exports = Arena;