Top Banner
2D Graphics and Custom Views Or I want to make something pretty and interactive
36
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Dallas Android Developers Feb

2D Graphics and Custom Views

Or I want to make something pretty and interactive

Page 2: Dallas Android Developers Feb

MCS: Texas A&M simulation and graphics

Software engineer here at Valtech

Page 3: Dallas Android Developers Feb

Overview

Android View and Graphics Architecture Quick review of Creating Custom Components

Handling Multiple Screen Sizes

Improving Performance

Page 4: Dallas Android Developers Feb

Architecture of Views and Android Graphics

What's going on under the covers?

Page 5: Dallas Android Developers Feb

View Basics

Image from Android Developers website http://developer.android.com/guide/topics/ui/overview.html

Page 6: Dallas Android Developers Feb

View Group to the Screen

Page 7: Dallas Android Developers Feb

Invalidate

Page 8: Dallas Android Developers Feb
Page 9: Dallas Android Developers Feb

Draw When onDraw is

called

-Walks down view tree drawing invalid views

-Draws front to back

Page 10: Dallas Android Developers Feb

From App to Surface

Page 11: Dallas Android Developers Feb

Surface to Screen

Page 12: Dallas Android Developers Feb

Review of June Creating Custom ViewsOr what do you remember from last time?

Page 13: Dallas Android Developers Feb

June Meet-up Recording: Custom UI Controls by Luke Wallace

on the Dallas Android Developers meet-up site under pages/recording of past meetings

http://www.meetup.com/Dallas-Android-Development-Group/pages/Recordings_Of_Past_Meetings/

or on our youtube channel at http://www.youtube.com/user/DallasAndroidDevelop?feature=watch

Page 14: Dallas Android Developers Feb

Extend a View object an Override OnMeasure OnDraw Invalidate when you need to update

Also might want to look into onSizeChanged onAttach

Page 15: Dallas Android Developers Feb

Resources of different densities

Nine patches Vector Graphics Canvas and Paint

Huge-cube by MI-wikier

Page 16: Dallas Android Developers Feb

Standard Approach

Different Resources for different screen sizes and densities

-specify dps or wrap content layout not pixels

-Don't want resource scaled? Use nodpi

From Android Developer websitehttp://developer.android.com/guide/practices/screens_support.html

Page 17: Dallas Android Developers Feb

Nine Patches

-Grow an image by reproducing sections of it

-draw9patch available in android sdk

Image from android developers draw9 patch documentation

Page 18: Dallas Android Developers Feb

Are SVG usable on Android?

Why not do everything using SVG files?

Page 19: Dallas Android Developers Feb

Library called SVG-Android

Open source

Library is 16.4 kb

It isn't usable in icons

Source: http://code.google.com/p/svg-android/

Image is part of SVG-Android landing page

Page 20: Dallas Android Developers Feb

in between pixels problem

Different sizes might need to be structurally different

image from http://www.pushing-pixels.org/2011/11/04/about-those-vector-icons.html

there is also an interesting article

Page 21: Dallas Android Developers Feb

Canvas What to draw

Paint How to draw it

Good overview of Android 2D pipeline at http://www.xenomachina.com/2011/05/androids-2d-canvas-rendering-pipeline.html

Page 22: Dallas Android Developers Feb

These made with Canvas/Paints

From MindTheRobot www.mindtherobot.com

Look under Thermometer and AnalogDial – includes source

Page 23: Dallas Android Developers Feb

Test Different Screens CheapPreview in eclipse/ emulator

Android Design preview toolhttp://code.google.com/p/android-ui-utils/

ADB shell am display-size 1023X768 -bluetooth keyboard

Page 24: Dallas Android Developers Feb

Getting Graphics to Manipulate

Work on Personal Projects?Art training?

Page 25: Dallas Android Developers Feb

See what's free Look whats on

Android Developers

Wikimedia Commons

licensing different densities

Remember you don't have to use the whole thing!

Good for textures Combine parts of

images

Page 26: Dallas Android Developers Feb

Use Free Tools GIMP Inkscape

Remember you can take pictures

http://www.guru.com/

Page 27: Dallas Android Developers Feb

Tips Tools Surface/Texture View

Page 28: Dallas Android Developers Feb

Other Tips to Improve Performance-don't use new in onDraw!-use cliprect on invisible areas-turn on hardware aceleration-avoid to much overdraw-get heavy processing off of main UI thread-Recyle your bitmaps when done-Avoid blending as much as possible

Page 29: Dallas Android Developers Feb

Invalidate with Hardware Acceleration

This Image Modified from Google IO 2011 Accelerated Android Rendering Roman Guy and

Chet Hasse

Page 30: Dallas Android Developers Feb

Use four-parameter variant of invalidate() rather than the version that takes no parameters

Image from For Butter or Worse Google IO 2012 Chet Hasse Roman Guy

Page 31: Dallas Android Developers Feb

Hardware Acceleration

-Must have GPU

-Doesn't support everything

-easy to turn on

Page 32: Dallas Android Developers Feb

Tools

lint

Developer Options Show Overdraw

Profile GPU rendering

HierarchyViewer

Page 33: Dallas Android Developers Feb

Image from developer.android.com on hierarchy viewer

Page 34: Dallas Android Developers Feb

Using Profile GPU Rendering Set using developer options settings on your phone 4.2

1) adb shell dumpsys gfxinfo com.your.app from terminal

2) Kill your app

3) look for section profile data in ms

4) chart in excel

http://www.curious-creature.org/2012/12/01/android-performance-case-study/

Page 35: Dallas Android Developers Feb

Surface/Texture Views

-More responsive, don't wait for view update-heavy weight -manage calling onDraw yourself-lock the surface do work unlock

Page 36: Dallas Android Developers Feb

Thank you.Questions?