Return-Path: X-Original-To: apmail-flex-issues-archive@minotaur.apache.org Delivered-To: apmail-flex-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id BDAFF177CE for ; Sun, 19 Apr 2015 09:34:59 +0000 (UTC) Received: (qmail 48273 invoked by uid 500); 19 Apr 2015 09:34:59 -0000 Delivered-To: apmail-flex-issues-archive@flex.apache.org Received: (qmail 48138 invoked by uid 500); 19 Apr 2015 09:34:59 -0000 Mailing-List: contact issues-help@flex.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@flex.apache.org Delivered-To: mailing list issues@flex.apache.org Received: (qmail 47828 invoked by uid 99); 19 Apr 2015 09:34:59 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 19 Apr 2015 09:34:59 +0000 Date: Sun, 19 Apr 2015 09:34:59 +0000 (UTC) From: "After24 (JIRA)" To: issues@flex.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Updated] (FLEX-34821) Improvement of the scroller perfomances on mobile devices MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/FLEX-34821?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] After24 updated FLEX-34821: --------------------------- Attachment: ViewportCacheDemo.apk > Improvement of the scroller perfomances on mobile devices > --------------------------------------------------------- > > Key: FLEX-34821 > URL: https://issues.apache.org/jira/browse/FLEX-34821 > Project: Apache Flex > Issue Type: Improvement > Reporter: After24 > Attachments: ViewportCache.zip, ViewportCacheDemo.apk > > > This is an experimentation on the flex Scroller component to improve the framerate of the scrolling operations. > This optimization based on the blitting technique. > A new boolean property named cacheViewport is added to the Scroller component. When cacheViewPort is set to true, all scrolling operations are performed according to the following cycle : > > 1 - A bitmap copy of the viewport is made just before the next scrolling operation (large viewports are cached in multiple tiles if necessary) > 2 - When the user starts a scrolling operation, the actual viewport is replaced by its bitmap version and the scrolling is executed by drawing the viewport according to its verticalScrollPosition and horizontalScrollPosition properties. > 3 - At the end of the scroll operation, the bitmap viewport is replaced by its actual version. > 4 - Between each scrolling operations, when the user interacts with the viewport content, a process mark as 'dirty' every regions of the viewport that are likely to have changed during those interactions. Every dirty region is redrawn before the next scrolling operation. > Pros : > - 60 FPS scrolling, even on old devices. > - Performance is no longer dependant on the viewport complexity. > - Can be used with the list component if it contains a moderate number of rows (useVirtualLayout must be set to false though) > Cons : > - There is a slight lag (dependant on the device processor) during the viewport rasterization and the process of redrawing every dirty regions. > - Doesn't support virtualized layouts. > - Animated elements of the viewport freezes during scrolling operations. > - Render mode must be set to gpu on the current version. > - Depending on its dimensions, the viewport rasterization process can consume large amounts of memory. > A demo application can be downloaded on the android play market here : https://play.google.com/store/apps/details?id=air.fr.after24.ViewportCacheDemo > Source code is attached. -- This message was sent by Atlassian JIRA (v6.3.4#6332)