Lecture 3 Animation Graphics Topics Animation Graphics Drawing

  • Slides: 32
Download presentation
Lecture 3: Animation & Graphics Topics: Animation, Graphics, Drawing

Lecture 3: Animation & Graphics Topics: Animation, Graphics, Drawing

High Five! https: //youtu. be/u. Fpo. Xq 73 HHY

High Five! https: //youtu. be/u. Fpo. Xq 73 HHY

Concepts

Concepts

What is Animation? • To create an illusion of motion or change. • By

What is Animation? • To create an illusion of motion or change. • By rapid succession of sequential, minimally different images. By Janke - Own work, CC BY-SA 2. 5 https: //commons. wikimedia. org/w/index. php? curid=433430

What is (Computer) Graphics? • To generate/Synthesize images using computers. • e. g. ,

What is (Computer) Graphics? • To generate/Synthesize images using computers. • e. g. , pixel arts, sprites, vectors, 3 D • Tools/API: Open. GL, Vulkan, Direct 3 D A 2 D graphic (tree) is synthesized by using basic shapes (circles and a rectangle)

What is Computer Vision? • To understand images using computers. • e. g. ,

What is Computer Vision? • To understand images using computers. • e. g. , identifying objects in images • Tools/API: Open. CV, Open. VX An image is analyzed to detect and count cars using computer vision algorithms. https: //www. youtube. com/watch? v=x. Vwsr 9 p 3 ir. A

What is a GPU? • Specialized HW for graphics processing. • Large number of

What is a GPU? • Specialized HW for graphics processing. • Large number of cores and threads. • Limited features (instruction types, OS interactions) ALU Control ALU ALU Cache RAM CPU RAM GPU

Android: Source and Resource • Source: e. g. . java • Resources: e. g.

Android: Source and Resource • Source: e. g. . java • Resources: e. g. layout, string, bitmap, animation. • Benefits: multiple languages, multiple screens, easy to manage. Resource Source aapt tool R. java Packed Resources Compile classes. dex Libraries Can you guess how to implement animations in Android?

Android: What is a Drawable? • Drawable – Something that can be drawn. •

Android: What is a Drawable? • Drawable – Something that can be drawn. • It’s more than just an image/bitmap. • Drawable ≠ View (e. g. can’t receive events) Various Types of Drawables Bitmap 9 -Patch Shape State Transition Animation

Android Animation

Android Animation

Types of Animation 1. Drawable Animation 2. View Animation 3. Property Animation Hello World

Types of Animation 1. Drawable Animation 2. View Animation 3. Property Animation Hello World X(t)

1. Drawable Animation • We can load and display a series of Drawable resources

1. Drawable Animation • We can load and display a series of Drawable resources (e. g. images) one after another.

2. Drawable Animation • Define animation-list in XML: res/drawable XML: <? xml version="1. 0"

2. Drawable Animation • Define animation-list in XML: res/drawable XML: <? xml version="1. 0" encoding="utf-8"? > <animation-list xmlns: android="http: //schemas. android. com/apk/res/android" android: oneshot=“false"> <item android: drawable="@drawable/pic 1" android: duration=“ 1000" /> <item android: drawable="@drawable/pic 2" android: duration=“ 1000" /> </animation-list> • Use Animation. Drawable inside your Java code to start the animation Java: some. Img. View. set. Background. Resource(R. drawable. abovexml); ((Animation. Drawable)some. Img. View. get. Background()). start();

We’ll try this today: • Get some images and put into: res/drawable/ • Create

We’ll try this today: • Get some images and put into: res/drawable/ • Create an XML file: res/drawable/my_anim_list • Add an Image. View and set Background • Use Animation. Drawable to start animation

2. View Animation • You can animate a View e. g. , by scaling,

2. View Animation • You can animate a View e. g. , by scaling, rotating, and translating an Image. View.

2. View Animation • Define the Animation in XML: res/anim XML: <? xml version="1.

2. View Animation • Define the Animation in XML: res/anim XML: <? xml version="1. 0" encoding="utf-8"? > <rotate xmlns: android="http: //schemas. android. com/apk/res/android" android: from. Degrees="0" android: to. Degrees="360" android: to. YScale="0. 0" android: pivot. X="50%" android: pivot. Y="50%" android: start. Offset=“ 1000" android: duration="10000" /> • Use Animation to fetch it, then apply it to a View. Java: Animation x = Animation. Utils. load. Animation( get. Application. Context(), R. anim. abovexmlfile ); some. View. start. Animation(x);

3. Property Animation (Value) • Changing value of a variable over a period: Value.

3. Property Animation (Value) • Changing value of a variable over a period: Value. Animator anim = Value. Animator. of. Float(0 f, 40 f); anim. set. Duration(40); anim. start(); • Use set. Interpolator() to change behavior. Limitation?

3. Property Animation (Object) • Changing a property of an object. Hello World Object.

3. Property Animation (Object) • Changing a property of an object. Hello World Object. Animator anim = Object. Animator. of. Float(my. Text. View, “text. Size”, 10 f, 30 f); anim. set. Duration(5000); anim. start(); Object Variable

Summary of Android Animation • List of XML tags and Java Classes: Animation Type

Summary of Android Animation • List of XML tags and Java Classes: Animation Type XML Tag Java Class Drawable Animation animation-list Animation. Drawable View Animation Property Animation rotate translate scale set Value. Animator Object. Animator

Android Graphics

Android Graphics

Graphics Approches • Canvas and Drawables • Open. GL (framework API and NDK) S

Graphics Approches • Canvas and Drawables • Open. GL (framework API and NDK) S 2 E 9

2 D Drawing 1. Drawable: • Put Drawables (in a View) • Less work,

2 D Drawing 1. Drawable: • Put Drawables (in a View) • Less work, less control, less efficiency 2. Canvas: • Draw on the Canvas (of a View) • More work, more control, more efficiency

1. Using Drawables • Two ways of putting Drawables into a View Four Button.

1. Using Drawables • Two ways of putting Drawables into a View Four Button. Views res/drawable/queen. png res/drawable/tfade. xml

1(a) Image from Project Resource • Copy images into res/drawable/ • Use it inside

1(a) Image from Project Resource • Copy images into res/drawable/ • Use it inside the layout xml <Image. View android: layout_width="match_parent" android: layout_height="wrap_content" android: id="@+id/img 1" android: src="@drawable/my_image"/> • You can also do the same by writing code: Image. View i = new Image. View(this); i. set. Image. Resource(R. drawable. my_image); Linear. Layout ll = new Linear. Layout(this); ll. add. View(i); set. Content. View(ll); //instead of set. Content. View(R. layout. somexmllayoutfile)

1(b) XML with drawable properties • e. g. Transition Drawable: res/drawable/something. xml <transition xmlns:

1(b) XML with drawable properties • e. g. Transition Drawable: res/drawable/something. xml <transition xmlns: android="http: //schemas. android. com/apk/res/android"> <item android: drawable="@drawable/image 1"> <item android: drawable="@drawable/image 2"> </transition> • Now, take an Image. View to show it (them): Transition. Drawable td; td = (Transition. Drawable) get. Resources(). get. Drawable(R. drawable. something); td. set. Cross. Fade. Enabled(true); Image. View img; img = (Image. View) find. View. By. Id(R. id. img 1); img. set. Image. Drawable(td); td. start. Transition(5000);

Nine Patch Image • Regular. png images + defining stretchable regions From a terminal:

Nine Patch Image • Regular. png images + defining stretchable regions From a terminal: Run the draw 9 patch command from your SDK sdk/tools directory to launch the tool.

2. Using Canvas • Canvas holds all of your draw*() calls. • Drawing is

2. Using Canvas • Canvas holds all of your draw*() calls. • Drawing is performed upon an underlying Bitmap. draw. Rect() draw. Circle() … Canvas (logical) Bitmap (physical)

2. Using Canvas • Canvas holds all of your draw*() calls. • Drawing is

2. Using Canvas • Canvas holds all of your draw*() calls. • Drawing is performed upon an underlying Bitmap b = Bitmap. create. Bitmap(100, Bitmap. Config. ARGB_8888); Canvas c = new Canvas(b); Paint p = new Paint(); p. set. Color(Color. GREEN); c. draw. Rect(10, 90, p); • Two ways to use the Canvas of a View: • Custom View • Surface View

Custom View • Good for low frame-rate applications (e. g. chess or snake game).

Custom View • Good for low frame-rate applications (e. g. chess or snake game). • You define a new View and add it in the layout XML file (like you do for a Text. View, Image. View etc. ) • Android provides you the Canvas as you extend a View and override its on. Draw() method. • To request a redraw, use: invalidate(). Outside main Activity’s thread, use post. Invalidate().

Custom View • Create your own View Class (Custom. View. java) public class Custom.

Custom View • Create your own View Class (Custom. View. java) public class Custom. View extends View { //Declare all four types of constructors here. @Override protected void on. Draw(Canvas canvas) { super. on. Draw(canvas); //Use canvas. draw*() } } • Use the View in the layout xml <edu. unc. nirjon. projectname. Custom. View android: id="@+id/mycustomview" android: layout_width="match_parent" android: layout_height="match_parent" /> • To force a redraw: invalidate()

Let’s try this: • Create 2 Buttons: Up and Down • Create a Custom

Let’s try this: • Create 2 Buttons: Up and Down • Create a Custom View • Draw a circle at location (X, Y) • Every time the buttons are clicked, the point will move. (Hint: use invalidate() to force redraw).

References (study these) • http: //developer. android. com/guide/topics/graphics/overview. html • http: //developer. android. com/guide/topics/graphics/prop-animation.

References (study these) • http: //developer. android. com/guide/topics/graphics/overview. html • http: //developer. android. com/guide/topics/graphics/prop-animation. html • http: //developer. android. com/guide/topics/graphics/view-animation. html • http: //developer. android. com/guide/topics/graphics/drawable-animation. html • http: //developer. android. com/guide/topics/graphics/2 d-graphics. html • http: //www. vogella. com/tutorials/Android. Drawables/article. html