Fixed: Android layerType should not be changed if there is no need

Resolves #1899
This commit is contained in:
Rossen Hristov
2016-05-30 09:48:50 +03:00
parent 153650fb47
commit e2f1e272b4
4 changed files with 64 additions and 11 deletions

View File

@ -24,6 +24,7 @@
android:allowBackup="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:largeHeap="true"
android:theme="@style/AppTheme" >
<activity
android:name="com.tns.NativeScriptActivity"

View File

@ -296,4 +296,49 @@ export function checkNativeBackgroundImage(v: view.View): boolean {
var bkg = <background.ad.BorderDrawable>(<android.view.View>v.android).getBackground();
return bkg && bkg.background && !types.isNullOrUndefined(bkg.background.image);
}
}
let SDK: number;
function getSDK() {
if (!SDK) {
SDK = android.os.Build.VERSION.SDK_INT;
}
return SDK;
}
export function test_AndroidLayerType_BorderWidth() {
helper.buildUIAndRunTest(new labelModule.Label(), (views: Array<view.View>) => {
let lbl = <labelModule.Label>(views[0]);
let androidView = <android.view.View>lbl.android;
let originalLayerType = androidView.getLayerType();
lbl.borderWidth = 5;
TKUnit.assertEqual(androidView.getLayerType(), getSDK() < 18 ? android.view.View.LAYER_TYPE_SOFTWARE : originalLayerType);
lbl.borderWidth = 0;
TKUnit.assertEqual(androidView.getLayerType(), originalLayerType);
});
};
export function test_AndroidLayerType_BorderRadius() {
helper.buildUIAndRunTest(new labelModule.Label(), (views: Array<view.View>) => {
let lbl = <labelModule.Label>(views[0]);
let androidView = <android.view.View>lbl.android;
let originalLayerType = androidView.getLayerType();
lbl.borderRadius = 5;
TKUnit.assertEqual(androidView.getLayerType(), getSDK() < 18 ? android.view.View.LAYER_TYPE_SOFTWARE : originalLayerType);
lbl.borderRadius = 0;
TKUnit.assertEqual(androidView.getLayerType(), originalLayerType);
});
};
export function test_AndroidLayerType_ClipPath() {
helper.buildUIAndRunTest(new labelModule.Label(), (views: Array<view.View>) => {
let lbl = <labelModule.Label>(views[0]);
let androidView = <android.view.View>lbl.android;
let originalLayerType = androidView.getLayerType();
lbl.style.clipPath = "rect(0, 0, 100%, 100%)";
TKUnit.assertEqual(androidView.getLayerType(), getSDK() < 18 ? android.view.View.LAYER_TYPE_SOFTWARE : originalLayerType);
lbl.style.clipPath = undefined;
TKUnit.assertEqual(androidView.getLayerType(), originalLayerType);
});
};