mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
Merge pull request #527 from NativeScript/fix-background-color-animation
Fixed Issue #513: Android backgroundColor animation is not gradual
This commit is contained in:
@@ -216,9 +216,6 @@
|
||||
<TypeScriptCompile Include="apps\tests\layouts\dock-layout-tests.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\pages\app.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\pages\file-load-test.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\pages\page-load-performance\start.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\pages\page-load-performance\test-big.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\pages\page-load-performance\test-small.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\pages\page12.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\layouts\absolute-layout-tests.ts" />
|
||||
<TypeScriptCompile Include="apps\tests\layouts\layout-helper.ts" />
|
||||
@@ -805,7 +802,6 @@
|
||||
</Content>
|
||||
<Content Include="apps\action-bar-demo\pages\navigation-button.xml" />
|
||||
<Content Include="apps\action-bar-demo\test-icon.png" />
|
||||
<TypeScriptCompile Include="libjs.d.ts" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="apps\animations\app.css" />
|
||||
@@ -838,13 +834,6 @@
|
||||
<TypeScriptCompile Include="apps\tests\pages\background-test.ts">
|
||||
<DependentUpon>background-test.xml</DependentUpon>
|
||||
</TypeScriptCompile>
|
||||
<Content Include="apps\tests\pages\page-load-performance\start.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="apps\tests\pages\page-load-performance\test-big.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</Content>
|
||||
<Content Include="apps\tests\pages\page-load-performance\test-small.xml" />
|
||||
<Content Include="apps\tests\pages\fonts-test.xml" />
|
||||
<Content Include="apps\tests\pages\background-test.xml" />
|
||||
<Content Include="apps\tests\pages\page18.xml" />
|
||||
@@ -1880,7 +1869,7 @@
|
||||
<SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
|
||||
</WebProjectProperties>
|
||||
</FlavorProperties>
|
||||
<UserProperties ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
||||
<UserProperties ui_2layouts_2wrap-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2grid-layout_2package_1json__JSONSchema="" ui_2layouts_2dock-layout_2package_1json__JSONSchema="" ui_2layouts_2absolute-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2layouts_2linear-layout_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2web-view_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2content-view_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2gallery-app_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2absolute-layout-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" apps_2editable-text-demo_2package_1json__JSONSchema="http://json.schemastore.org/package" ui_2scroll-view_2package_1json__JSONSchema="http://json.schemastore.org/package" />
|
||||
</VisualStudio>
|
||||
</ProjectExtensions>
|
||||
</Project>
|
||||
@@ -9,15 +9,14 @@ import types = require("utils/types");
|
||||
declare var exports;
|
||||
require("utils/module-merge").merge(common, exports);
|
||||
|
||||
var intType = java.lang.Integer.class.getField("TYPE").get(null);
|
||||
var floatType = java.lang.Float.class.getField("TYPE").get(null);
|
||||
var argbEvaluator: android.animation.ArgbEvaluator = new android.animation.ArgbEvaluator();
|
||||
var argbEvaluator = new android.animation.ArgbEvaluator();
|
||||
|
||||
export class Animation extends common.Animation implements definition.Animation {
|
||||
private _animatorListener: android.animation.Animator.AnimatorListener;
|
||||
private _nativeAnimatorsArray: any;
|
||||
private _animatorSet: android.animation.AnimatorSet;
|
||||
private _animators: Array<android.animation.ObjectAnimator>;
|
||||
private _animators: Array<android.animation.Animator>;
|
||||
private _propertyUpdateCallbacks: Array<Function>;
|
||||
private _propertyResetCallbacks: Array<Function>;
|
||||
|
||||
@@ -27,7 +26,7 @@ export class Animation extends common.Animation implements definition.Animation
|
||||
var i: number;
|
||||
var length: number;
|
||||
|
||||
this._animators = new Array<android.animation.ObjectAnimator>();
|
||||
this._animators = new Array<android.animation.Animator>();
|
||||
this._propertyUpdateCallbacks = new Array<Function>();
|
||||
this._propertyResetCallbacks = new Array<Function>();
|
||||
|
||||
@@ -43,7 +42,7 @@ export class Animation extends common.Animation implements definition.Animation
|
||||
return this;
|
||||
}
|
||||
|
||||
this._nativeAnimatorsArray = java.lang.reflect.Array.newInstance(android.animation.ObjectAnimator.class, this._animators.length);
|
||||
this._nativeAnimatorsArray = java.lang.reflect.Array.newInstance(android.animation.Animator.class, this._animators.length);
|
||||
i = 0;
|
||||
length = this._animators.length;
|
||||
for (; i < length; i++) {
|
||||
@@ -141,10 +140,10 @@ export class Animation extends common.Animation implements definition.Animation
|
||||
|
||||
var nativeArray;
|
||||
var nativeView: android.view.View = (<android.view.View>propertyAnimation.target._nativeView);
|
||||
var animators = new Array<android.animation.ObjectAnimator>();
|
||||
var animators = new Array<android.animation.ValueAnimator>();
|
||||
var propertyUpdateCallbacks = new Array<Function>();
|
||||
var propertyResetCallbacks = new Array<Function>();
|
||||
var animator: android.animation.ObjectAnimator;
|
||||
var animator: android.animation.ValueAnimator;
|
||||
var originalValue;
|
||||
var density = utils.layout.getDisplayDensity();
|
||||
switch (propertyAnimation.property) {
|
||||
@@ -163,12 +162,17 @@ export class Animation extends common.Animation implements definition.Animation
|
||||
case common.Properties.backgroundColor:
|
||||
originalValue = nativeView.getBackground();
|
||||
if (!color.Color.equals(propertyAnimation.value, propertyAnimation.target.backgroundColor)) {
|
||||
nativeArray = java.lang.reflect.Array.newInstance(intType, 1);
|
||||
nativeArray[0] = (<color.Color>propertyAnimation.value).argb;
|
||||
//https://github.com/NativeScript/android-runtime/issues/168
|
||||
//animator = android.animation.ObjectAnimator.ofObject(nativeView, "backgroundColor", argbEvaluator, nativeArray);
|
||||
animator = android.animation.ObjectAnimator.ofInt(nativeView, "backgroundColor", nativeArray);
|
||||
animator.setEvaluator(argbEvaluator);
|
||||
nativeArray = java.lang.reflect.Array.newInstance(java.lang.Object.class, 2);
|
||||
nativeArray[0] = propertyAnimation.target.backgroundColor ? java.lang.Integer.valueOf((<color.Color>propertyAnimation.target.backgroundColor).argb) : java.lang.Integer.valueOf(-1);
|
||||
nativeArray[1] = java.lang.Integer.valueOf((<color.Color>propertyAnimation.value).argb);
|
||||
animator = android.animation.ValueAnimator.ofObject(argbEvaluator, nativeArray);
|
||||
animator.addUpdateListener(new android.animation.ValueAnimator.AnimatorUpdateListener({
|
||||
onAnimationUpdate(animator: android.animation.ValueAnimator) {
|
||||
var argb = (<java.lang.Integer>animator.getAnimatedValue()).intValue();
|
||||
propertyAnimation.target.backgroundColor = new color.Color(argb);
|
||||
}
|
||||
}));
|
||||
|
||||
animators.push(animator);
|
||||
propertyUpdateCallbacks.push(() => { propertyAnimation.target.backgroundColor = propertyAnimation.value; });
|
||||
propertyResetCallbacks.push(() => { nativeView.setBackground(originalValue); });
|
||||
|
||||
Reference in New Issue
Block a user