{ "id": "105163", "key": "TIMOB-11811", "fields": { "issuetype": { "id": "6", "description": "gh.issue.epic.desc", "name": "Epic", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "14982", "description": "Release 3.2.0", "name": "Release 3.2.0", "archived": false, "released": true, "releaseDate": "2013-12-19" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2013-07-20T18:32:28.000+0000", "created": "2012-11-17T08:46:21.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "insight", "module_animation", "planning-3.2.0", "qe-testadded", "rock_solid" ], "versions": [], "issuelinks": [ { "id": "32019", "type": { "id": "10020", "name": "Depends", "inward": "is dependent of", "outward": "depends on" }, "inwardIssue": { "id": "120223", "key": "TIDOC-1264", "fields": { "summary": "Guides: Document new Android Animation improvements", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "32149", "type": { "id": "10122", "name": "Gantt: start-finish", "inward": "is triggered by", "outward": "is triggering" }, "outwardIssue": { "id": "120464", "key": "TIMOB-15345", "fields": { "summary": "Android: ScrollableView does not show after using a 2D matrix transform", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30186", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "61643", "key": "TIMOB-1011", "fields": { "summary": "Android: Animations Cause the location of touch events to be incorrect", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30183", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "102956", "key": "TIMOB-11321", "fields": { "summary": "Android: Transformations with 2D Matrices on Android produces flickering, ghosting, and other strange behavior.", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30185", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "78522", "key": "TIMOB-4834", "fields": { "summary": "Android: 2Dmatrix rotate flickers on transform", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30184", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "84224", "key": "TIMOB-6852", "fields": { "summary": "Android: Transform and color resets after animation", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30187", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "97864", "key": "TIMOB-10112", "fields": { "summary": "Android: Views: A view animated to change position shows a trail while reversing", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30181", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "106894", "key": "TIMOB-12141", "fields": { "summary": "Android: Unable to animate from the last position/condition", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } }, { "id": "30182", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "outwardIssue": { "id": "106891", "key": "TIMOB-12140", "fields": { "summary": "Android: Integrate Android animation compatibility layer", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Critical", "id": "1" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "26998", "type": { "id": "10011", "name": "Includes", "inward": "is included by", "outward": "includes" }, "inwardIssue": { "id": "94533", "key": "TIMOB-9902", "fields": { "summary": "TiAPI: Update Android and IOS to support new SDK available on newer versions of the platforms", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } }, { "id": "30546", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "92425", "key": "TIMOB-9286", "fields": { "summary": "Android: Animation code review", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "7", "description": "gh.issue.story.desc", "name": "Story", "subtask": false } } } } ], "assignee": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2017-06-27T23:27:53.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "The Android animation system has a number of shortcomings compared to iOS, particularly with regards to 3D transforms.\r\n\r\nThis epic aims to gather these separate tickets as a group so we can tackle these discrepancies.", "attachment": [], "flagged": false, "summary": "Android: Bring animation to parity with iOS capabilities", "creator": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "ingo", "key": "ingo", "displayName": "Ingo Muschenetz", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "244759", "author": { "name": "sfeloney", "key": "sfeloney", "displayName": "Stephen Feloney", "active": true, "timeZone": "America/Los_Angeles" }, "updateAuthor": { "name": "sfeloney", "key": "sfeloney", "displayName": "Stephen Feloney", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-03-30T18:39:16.000+0000", "updated": "2013-03-30T18:39:16.000+0000" }, { "id": "261719", "author": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR: https://github.com/appcelerator/titanium_mobile/pull/4398", "updateAuthor": { "name": "ayeung", "key": "ayeung", "displayName": "Allen Yeung", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2013-07-13T20:13:19.000+0000", "updated": "2013-07-13T20:13:19.000+0000" }, { "id": "263915", "author": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "body": "If i may this is not really the way to do it.\r\nYou dont have to decompose the Matrix.\r\nJust compute the Android.Graphics.Matrix, then create a MatrixEvaluator. in its set method you create a MatrixAnimation which just apply the Transformation.\r\nI did it in my private branch. Might create a PR if needed.\r\nAlso using that evaluator correctly handles transformations from one matrix to another. Which your implementation doesnt.\r\n\r\nTo give a little more details, here is my evaluator evaluate method\r\n\r\n{code:java}\r\npublic Ti2DMatrix evaluate(float fraction, Ti2DMatrix startValue,\r\n\t\t\tTi2DMatrix endValue) {\r\n\t\tif (startValue != null) {\r\n\t\t\tMatrix m = startValue.interpolate(view, 1, childWidth, childHeight, anchorX, anchorY);\r\n\t\t\tMatrix endM = endValue.interpolate(view, fraction, childWidth, childHeight, anchorX, anchorY);\r\n\t\t\tm.preConcat(endM);\r\n\t\t\treturn new Ti2DMatrix(m);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn new Ti2DMatrix(endValue.interpolate(view, fraction, childWidth, childHeight, anchorX, anchorY));\r\n\t\t}\r\n\t}\r\n{code}\r\n\r\nWith a little trick. When you create the Evaluator the evaluator 2DMatrix must be computed using the Matrix decomposition\r\nThat way you correctly compute the transformation from the current Transform\r\n{code:java}\r\nTi2DMatrix tdm = (Ti2DMatrix) options.get(TiC.PROPERTY_TRANSFORM);\r\nTi2DMatrix tdm = layoutParams.optionTransform.invert().multiply(tdm);\r\n{code}\r\n", "updateAuthor": { "name": "farfromrefuge", "key": "farfromrefuge", "displayName": "Martin Guillon", "active": false, "timeZone": "Europe/Berlin" }, "created": "2013-07-30T11:52:49.000+0000", "updated": "2013-07-30T11:52:49.000+0000" }, { "id": "263928", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR would be great.", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2013-07-30T14:02:50.000+0000", "updated": "2013-07-30T14:02:50.000+0000" }, { "id": "414757", "author": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "body": "Closing ticket as fixed.", "updateAuthor": { "name": "lmorris", "key": "lmorris", "displayName": "Lee Morris", "active": false, "timeZone": "America/Los_Angeles" }, "created": "2017-03-22T16:56:41.000+0000", "updated": "2017-03-22T16:56:41.000+0000" } ], "maxResults": 6, "total": 6, "startAt": 0 } } }