Tips and Tricks
Switching to hardware accelerated 2D graphics can instantly increase performance, but you should still design your application to use the GPU effectively by following these recommendations:
- Reduce the number of views in your application
- The more views the system has to draw, the slower it will be. This applies to the software rendering pipeline as well. Reducing views is one of the easiest ways to optimize your UI.
- Avoid overdraw
- Do not draw too many layers on top of each other. Remove any views that are completely obscured by other opaque views on top of it. If you need to draw several layers blended on top of each other, consider merging them into a single layer. A good rule of thumb with current hardware is to not draw more than 2.5 times the number of pixels on screen per frame (transparent pixels in a bitmap count!).
- Don't create render objects in draw methods
- A common mistake is to create a new
Paint
or a newPath
every time a rendering method is invoked. This forces the garbage collector to run more often and also bypasses caches and optimizations in the hardware pipeline. - Don't modify shapes too often
- Complex shapes, paths, and circles for instance, are rendered using texture masks. Every time you create or modify a path, the hardware pipeline creates a new mask, which can be expensive.
- Don't modify bitmaps too often
- Every time you change the content of a bitmap, it is uploaded again as a GPU texture the next time you draw it.
- Use alpha with care
- When you make a view translucent using
setAlpha()
,AlphaAnimation
, orObjectAnimator
, it is rendered in an off-screen buffer which doubles the required fill-rate. When applying alpha on very large views, consider setting the view's layer type toLAYER_TYPE_HARDWARE
.