react-native-arenakit
Version:
为编写arena app中react native应用提供基础的ui及原生能力api支撑
66 lines (55 loc) • 1.75 kB
JavaScript
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;