{ "id": "113378", "key": "TIMOB-13671", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "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": "15499", "description": "2013 Sprint 13 API", "name": "2013 Sprint 13 API", "archived": true, "released": true, "releaseDate": "2013-07-01" }, { "id": "15111", "description": "2013 Sprint 13", "name": "2013 Sprint 13", "archived": true, "released": true, "releaseDate": "2013-07-01" }, { "id": "11258", "description": "Holding Pen for Triaged Issues", "name": "Backlog", "archived": false, "released": false }, { "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-06-20T22:14:30.000+0000", "created": "2013-04-25T11:43:23.000+0000", "priority": { "name": "High", "id": "2" }, "labels": [ "module_animation", "qe-testadded", "triage" ], "versions": [], "issuelinks": [ { "id": "29642", "type": { "id": "10002", "name": "Duplicate", "inward": "is duplicated by", "outward": "duplicates" }, "inwardIssue": { "id": "107081", "key": "TIMOB-12452", "fields": { "summary": "Android: view (with borderwidth and child view) animated lead app to crash", "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": "29079", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "outwardIssue": { "id": "102748", "key": "AC-2053", "fields": { "summary": "Android: view.animate() crashes", "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" } }, "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false } } } } ], "assignee": { "name": "bijuexalture", "key": "bijuexalture", "displayName": "Biju pm", "active": true, "timeZone": "Asia/Kolkata" }, "updated": "2014-06-19T12:43:00.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": "h2. Description of the problem\r\nAnimating a view which has a border (set either borderRadius, borderWidth or borderColor) fails and the app crashes.\r\n\r\nh2. Steps to reproduce\r\nUse the following code: clicking on a view, the animation does not run properly, and in the end it crashes. Note that you can comment out any of the border properties (one by one even) to see the error. Removing all of them works fine.\r\n\r\n{code}\r\nvar win = Ti.UI.createWindow({\r\n\tbackgroundColor: 'black'\r\n});\r\n\r\nvar view = Ti.UI.createView({\r\n\tbackgroundColor: 'red',\r\n\tborderRadius: 20,\r\n\tborderColor: 'white',\r\n\tborderWidth: 10,\r\n\ttop: 10,\r\n\twidth: 100,\r\n\theight: 100\r\n});\r\nview.addEventListener('click', function() {\r\n\tview.animate({\r\n\t\ttop: 100,\r\n\t\tduration: 3000\r\n\t});\r\n});\r\nwin.add(view);\r\n\r\nwin.open();\r\n{code}\r\n\r\nh2. Log error\r\n{code}\r\nE/TiApplication( 3620): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to org.appcelerator.titanium.view.TiCompositeLayout$LayoutParams\r\nE/TiApplication( 3620): \tat org.appcelerator.titanium.util.TiAnimationBuilder$AnimationListener.onAnimationEnd(TiAnimationBuilder.java:618)\r\nE/TiApplication( 3620): \tat android.view.animation.Animation.fireAnimationEnd(Animation.java:920)\r\nE/TiApplication( 3620): \tat android.view.animation.Animation.getTransformation(Animation.java:878)\r\nE/TiApplication( 3620): \tat android.view.animation.Animation.getTransformation(Animation.java:940)\r\nE/TiApplication( 3620): \tat android.view.animation.AnimationSet.getTransformation(AnimationSet.java:384)\r\nE/TiApplication( 3620): \tat android.view.animation.Animation.getTransformation(Animation.java:940)\r\nE/TiApplication( 3620): \tat android.view.View.drawAnimation(View.java:13205)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13344)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13715)\r\nE/TiApplication( 3620): \tat android.widget.FrameLayout.draw(FrameLayout.java:467)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13596)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/TiApplication( 3620): \tat org.appcelerator.titanium.view.TiCompositeLayout.dispatchDraw(TiCompositeLayout.java:688)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13715)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13596)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/TiApplication( 3620): \tat org.appcelerator.titanium.view.TiCompositeLayout.dispatchDraw(TiCompositeLayout.java:688)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13594)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13594)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13594)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/TiApplication( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/TiApplication( 3620): \tat android.view.View.draw(View.java:13715)\r\nE/TiApplication( 3620): \tat android.widget.FrameLayout.draw(FrameLayout.java:467)\r\nE/TiApplication( 3620): \tat com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2211)\r\nE/TiApplication( 3620): \tat android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2281)\r\nE/TiApplication( 3620): \tat android.view.ViewRootImpl.draw(ViewRootImpl.java:2177)\r\nE/TiApplication( 3620): \tat android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2045)\r\nE/TiApplication( 3620): \tat android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1854)\r\nE/TiApplication( 3620): \tat android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)\r\nE/TiApplication( 3620): \tat android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)\r\nE/TiApplication( 3620): \tat android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)\r\nE/TiApplication( 3620): \tat android.view.Choreographer.doCallbacks(Choreographer.java:562)\r\nE/TiApplication( 3620): \tat android.view.Choreographer.doFrame(Choreographer.java:532)\r\nE/TiApplication( 3620): \tat android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)\r\nE/TiApplication( 3620): \tat android.os.Handler.handleCallback(Handler.java:725)\r\nE/TiApplication( 3620): \tat android.os.Handler.dispatchMessage(Handler.java:92)\r\nE/TiApplication( 3620): \tat android.os.Looper.loop(Looper.java:137)\r\nE/TiApplication( 3620): \tat android.app.ActivityThread.main(ActivityThread.java:5041)\r\nE/TiApplication( 3620): \tat java.lang.reflect.Method.invokeNative(Native Method)\r\nE/TiApplication( 3620): \tat java.lang.reflect.Method.invoke(Method.java:511)\r\nE/TiApplication( 3620): \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)\r\nE/TiApplication( 3620): \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)\r\nE/TiApplication( 3620): \tat dalvik.system.NativeStart.main(Native Method)\r\nE/AndroidRuntime( 3620): FATAL EXCEPTION: main\r\nE/AndroidRuntime( 3620): java.lang.ClassCastException: android.widget.FrameLayout$LayoutParams cannot be cast to org.appcelerator.titanium.view.TiCompositeLayout$LayoutParams\r\nE/AndroidRuntime( 3620): \tat org.appcelerator.titanium.util.TiAnimationBuilder$AnimationListener.onAnimationEnd(TiAnimationBuilder.java:618)\r\nE/AndroidRuntime( 3620): \tat android.view.animation.Animation.fireAnimationEnd(Animation.java:920)\r\nE/AndroidRuntime( 3620): \tat android.view.animation.Animation.getTransformation(Animation.java:878)\r\nE/AndroidRuntime( 3620): \tat android.view.animation.Animation.getTransformation(Animation.java:940)\r\nE/AndroidRuntime( 3620): \tat android.view.animation.AnimationSet.getTransformation(AnimationSet.java:384)\r\nE/AndroidRuntime( 3620): \tat android.view.animation.Animation.getTransformation(Animation.java:940)\r\nE/AndroidRuntime( 3620): \tat android.view.View.drawAnimation(View.java:13205)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13344)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13715)\r\nE/AndroidRuntime( 3620): \tat android.widget.FrameLayout.draw(FrameLayout.java:467)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13596)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/AndroidRuntime( 3620): \tat org.appcelerator.titanium.view.TiCompositeLayout.dispatchDraw(TiCompositeLayout.java:688)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13715)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13596)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/AndroidRuntime( 3620): \tat org.appcelerator.titanium.view.TiCompositeLayout.dispatchDraw(TiCompositeLayout.java:688)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13594)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13594)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13594)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.drawChild(ViewGroup.java:2928)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewGroup.dispatchDraw(ViewGroup.java:2797)\r\nE/AndroidRuntime( 3620): \tat android.view.View.draw(View.java:13715)\r\nE/AndroidRuntime( 3620): \tat android.widget.FrameLayout.draw(FrameLayout.java:467)\r\nE/AndroidRuntime( 3620): \tat com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2211)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2281)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewRootImpl.draw(ViewRootImpl.java:2177)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2045)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1854)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:989)\r\nE/AndroidRuntime( 3620): \tat android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4351)\r\nE/AndroidRuntime( 3620): \tat android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)\r\nE/AndroidRuntime( 3620): \tat android.view.Choreographer.doCallbacks(Choreographer.java:562)\r\nE/AndroidRuntime( 3620): \tat android.view.Choreographer.doFrame(Choreographer.java:532)\r\nE/AndroidRuntime( 3620): \tat android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)\r\nE/AndroidRuntime( 3620): \tat android.os.Handler.handleCallback(Handler.java:725)\r\nE/AndroidRuntime( 3620): \tat android.os.Handler.dispatchMessage(Handler.java:92)\r\nE/AndroidRuntime( 3620): \tat android.os.Looper.loop(Looper.java:137)\r\nE/AndroidRuntime( 3620): \tat android.app.ActivityThread.main(ActivityThread.java:5041)\r\nE/AndroidRuntime( 3620): \tat java.lang.reflect.Method.invokeNative(Native Method)\r\nE/AndroidRuntime( 3620): \tat java.lang.reflect.Method.invoke(Method.java:511)\r\nE/AndroidRuntime( 3620): \tat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)\r\nE/AndroidRuntime( 3620): \tat com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)\r\nE/AndroidRuntime( 3620): \tat dalvik.system.NativeStart.main(Native Method)\r\n{code}", "attachment": [], "flagged": false, "summary": "Android: animate crashes the app if view has a border", "creator": { "name": "dcassenti", "key": "dcassenti", "displayName": "Davide Cassenti", "active": true, "timeZone": "Europe/Berlin" }, "subtasks": [], "reporter": { "name": "dcassenti", "key": "dcassenti", "displayName": "Davide Cassenti", "active": true, "timeZone": "Europe/Berlin" }, "environment": "Android 4.2\r\nSDK 3.1.0\r\nSDK 3.0.2", "comment": { "comments": [ { "id": "254084", "author": { "name": "ptquang86", "key": "ptquang86", "displayName": "Quang Pham", "active": true, "timeZone": "Asia/Jakarta" }, "body": "same here with borderRadius", "updateAuthor": { "name": "ptquang86", "key": "ptquang86", "displayName": "Quang Pham", "active": true, "timeZone": "Asia/Jakarta" }, "created": "2013-05-27T10:32:58.000+0000", "updated": "2013-05-27T10:32:58.000+0000" }, { "id": "254151", "author": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "body": "Related Q&A question: \n\nhttps://developer.appcelerator.com/question/152883/animate-view-with-borderradius\n\n", "updateAuthor": { "name": "mpmiranda", "key": "mpmiranda", "displayName": "Mauro Parra-Miranda", "active": true, "timeZone": "America/Mexico_City" }, "created": "2013-05-28T00:40:17.000+0000", "updated": "2013-05-28T00:40:17.000+0000" }, { "id": "257350", "author": { "name": "bijuexalture", "key": "bijuexalture", "displayName": "Biju pm", "active": true, "timeZone": "Asia/Kolkata" }, "body": "fixed the cast exception. \r\nhttps://github.com/appcelerator/titanium_mobile/pull/4382", "updateAuthor": { "name": "bijuexalture", "key": "bijuexalture", "displayName": "Biju pm", "active": true, "timeZone": "Asia/Kolkata" }, "created": "2013-06-12T05:56:15.000+0000", "updated": "2013-06-20T10:34:18.000+0000" }, { "id": "267592", "author": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "body": "This is not fixed in 3.1.2.GA (Samsung Galaxy S2, Android 4.1.2)\r\n\r\n{code}\r\nvar w = Ti.UI.createWindow({backgroundColor: '#FFF'});\r\nvar v = Ti.UI.createView({\r\n right: 100,\r\n width: 100,\r\n height: 100,\r\n \r\n borderWidth: 1,\r\n borderColor: \"#000\",\r\n \r\n backgroundColor: 'red'\r\n});\r\nv.addEventListener('click', function () {\r\n v.animate({\r\n right: 0\r\n });\r\n});\r\nw.add(v);\r\nw.open();\r\n{code}", "updateAuthor": { "name": "fokkezb", "key": "fokke", "displayName": "Fokke Zandbergen", "active": true, "timeZone": "Europe/Amsterdam" }, "created": "2013-08-22T10:05:32.000+0000", "updated": "2013-08-22T10:05:32.000+0000" }, { "id": "274939", "author": { "name": "pmishra", "key": "pmishra", "displayName": "Paras Mishra", "active": true, "timeZone": "Asia/Kolkata" }, "body": "App does not crash with view which as border.\r\n\r\nVerified the fix on:\r\nDevice : Google Nexus 7, Android Version: 4.3\r\nSDK: 3.2.0.v20131013140318\r\nCLI version : 3.2.0\r\nOS : MAC OSX 10.8.4\r\nAlloy : 1.2.2\r\nAppcelerator Studio, build: 3.2.0.201310112258\r\nXCode : 5", "updateAuthor": { "name": "pmishra", "key": "pmishra", "displayName": "Paras Mishra", "active": true, "timeZone": "Asia/Kolkata" }, "created": "2013-10-14T09:50:56.000+0000", "updated": "2013-10-14T09:50:56.000+0000" } ], "maxResults": 5, "total": 5, "startAt": 0 } } }