{ "id": "176319", "key": "TIMOB-28565", "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": "21249", "name": "Release 10.2.0", "archived": false, "released": false } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2021-11-02T01:24:32.000+0000", "created": "2021-10-22T01:45:04.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "ImageView", "ListView", "android", "performance", "regression" ], "versions": [ { "id": "21052", "description": "", "name": "Release 9.3.0", "archived": false, "released": true, "releaseDate": "2020-12-14" } ], "issuelinks": [], "assignee": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "updated": "2021-11-02T01:24:32.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": "*Summary:*\r\nIf a {{ListView}} item template contains a lot of {{ImageViews}} (say 16 or more), then this can cause bad scroll performance as of Titanium 9.3.0.\r\n\r\nThis issue is caused by the number of image views. The more image views a single list item has, the worse it gets... even if the no images are assigned (ie: empty image views).\r\n\r\n*Steps to reproduce:*\r\n# Create a Classic app project from template. (Provides needed tab images.)\r\n# Use [^ListViewTemplateManyImagesTest.js] as the \"app.js\".\r\n# Build and run on Android.\r\n# Fling the ListView and note the scroll performance.\r\n\r\n*Cause:*\r\nThis issue is caused by the {{ZoomControl}} added to every {{Ti.UI.ImageView}} [here|https://github.com/appcelerator/titanium_mobile/blob/ead1713e5e36b4632b692ce6fcc9a9785b91ad26/android/modules/ui/src/java/ti/modules/titanium/ui/widget/TiImageView.java#L143]. Removing the {{ZoomControl}} solves the performance issue.\r\n\r\n*Work-Around 1:*\r\nSet {{ImageView}} property \"touchEnabled\" to {{false}}. This improves scroll performance, but \"Work-Around 2\" is even faster.\r\n\r\n*Work-Around 2:*\r\nInstead of using a {{Ti.UI.ImageView}}, use a {{Ti.UI.View}} and its {{backgroundImage}} instead... but this also means you need to hard-code the \"width\" and \"height\" properties to match the image size.\r\n", "attachment": [ { "id": "68020", "filename": "ListViewTemplateManyImagesTest.js", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-10-22T01:42:56.000+0000", "size": 1336, "mimeType": "application/x-javascript" } ], "flagged": false, "summary": "Android: ListView item containing several ImageViews can cause bad scroll performance as of 9.3.0", "creator": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "459137", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "PR (master): https://github.com/appcelerator/titanium_mobile/pull/13146", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2021-10-26T00:37:05.000+0000", "updated": "2021-10-26T00:37:05.000+0000" } ], "maxResults": 1, "total": 1, "startAt": 0 } } }