@nativescript/core
Version:
A JavaScript library providing an easy to use api for interacting with iOS and Android platform APIs.
77 lines • 3.09 kB
JavaScript
import * as layoutCommon from './layout-helper-common';
import { android as AndroidUtils } from '../native-helper';
// export * from './layout-helper-common';
let density;
let sdkVersion;
let useOldMeasureSpec = false;
export var layout;
(function (layout) {
// cache the MeasureSpec constants here, to prevent extensive marshaling calls to and from Java
// TODO: While this boosts the performance it is error-prone in case Google changes these constants
layout.MODE_SHIFT = 30;
layout.MODE_MASK = 0x3 << layout.MODE_SHIFT;
layout.UNSPECIFIED = 0 << layout.MODE_SHIFT;
layout.EXACTLY = 1 << layout.MODE_SHIFT;
layout.AT_MOST = 2 << layout.MODE_SHIFT;
layout.MEASURED_HEIGHT_STATE_SHIFT = 0x00000010; /* 16 */
layout.MEASURED_STATE_TOO_SMALL = 0x01000000;
layout.MEASURED_STATE_MASK = 0xff000000;
layout.MEASURED_SIZE_MASK = 0x00ffffff;
function getMode(mode) {
return layoutCommon.getMode(mode);
}
layout.getMode = getMode;
function getMeasureSpecMode(spec) {
return layoutCommon.getMeasureSpecMode(spec);
}
layout.getMeasureSpecMode = getMeasureSpecMode;
function getMeasureSpecSize(spec) {
return layoutCommon.getMeasureSpecSize(spec);
}
layout.getMeasureSpecSize = getMeasureSpecSize;
function makeMeasureSpec(size, mode) {
if (sdkVersion === undefined) {
// check whether the old layout is needed
sdkVersion = AndroidUtils.getApplicationContext().getApplicationInfo().targetSdkVersion;
useOldMeasureSpec = sdkVersion <= 17;
}
if (useOldMeasureSpec) {
return size + mode;
}
return (size & ~layoutCommon.MODE_MASK) | (mode & layoutCommon.MODE_MASK);
}
layout.makeMeasureSpec = makeMeasureSpec;
function getDisplayDensity() {
if (density === undefined) {
density = AndroidUtils.getResources().getDisplayMetrics().density;
}
return density;
}
layout.getDisplayDensity = getDisplayDensity;
function toDevicePixels(value) {
return value * getDisplayDensity();
}
layout.toDevicePixels = toDevicePixels;
function toDeviceIndependentPixels(value) {
return value / getDisplayDensity();
}
layout.toDeviceIndependentPixels = toDeviceIndependentPixels;
function round(value) {
return layoutCommon.round(value);
}
layout.round = round;
function measureNativeView(nativeView /* android.view.View */, width, widthMode, height, heightMode) {
const view = nativeView;
view.measure(makeMeasureSpec(width, widthMode), makeMeasureSpec(height, heightMode));
return {
width: view.getMeasuredWidth(),
height: view.getMeasuredHeight(),
};
}
layout.measureNativeView = measureNativeView;
function measureSpecToString(measureSpec) {
return layoutCommon.measureSpecToString(measureSpec);
}
layout.measureSpecToString = measureSpecToString;
})(layout || (layout = {}));
//# sourceMappingURL=index.android.js.map