Lecture 3: Animation & Graphics

Slides:



Advertisements
Similar presentations
1 Drawing C Sc 335 Object-Oriented Programming and Design Rick Mercer.
Advertisements

Chapter 6 Jam! Implementing Audio in Android Apps.
CS378 - Mobile Computing 2D Graphics A Crash Course in Using (Android) 2D Graphics Libraries.
Basic 2D Graphics in Android. Android Graphics Programming There are many ways to do graphics programming in Android – 2D vs. 3D – static vs. dynamic.
Graphics & Animation in Android. Android rendering options The Canvas API Renderscript OpenGL wrappers NDK OpenGL
User Interface Android Applications. Activities An activity presents a visual user interface. Each activity is given a default window to draw in. The.
2D Graphics: Part 1. Android Graphics Libraries 2D Graphics –custom 2D graphics library in packages android.graphics android.graphics.drawable android.graphics.drawable.shapes.
Basic Animation. Animation 4 options – Animated.gif – Frame by Frame animation – Tweened animation This is our focus – OpenGL ES Graphics API for more.
Custom Views, Drawing, Styles, Themes, ViewProperties, Animations, oh my!
Basic Drawing Techniques
2D Graphics: Part 2.
Processing Dr Andy Evans. Processing MIT Media Lab Libraries for visualisation. Wraps a simple visualisation scripting language.
CHAPTER 4 Images XNA Game Studio 4.0. Objectives Find out how the Content Manager lets you add pictures to Microsoft XNA games. Discover how pictures.
Chapter 10: Move! Creating Animation
6-2 2D Graphics CSNB544 Mobile Application Development Thanks to Utexas Austin.
Exploring 2D Graphics: The Sudoku Example Content taken from book: “Hello, Android” by Ed Burnette Third Edition.
Flag Quiz App 1 CS7030: Mobile App Development. assets Folder 2 CS7030: Mobile App Development  drawable folder – Image contents at the root level 
Copyright© Jeffrey Jongko, Ateneo de Manila University Android.
Animation.
1/29/ Android Programming: FrameLayout By Dr. Ramji M. Makwana Professor and Head, Computer Engineering Department A.D. Patel.
Chapter 2 The Android User Interface. Objectives  In this chapter, you learn to:  Develop a user interface using the TextView, ImageView, and Button.
Android Boot Camp for Developers Using Java, 3E
Android Graphics Library. Color Android colors are represented with four numbers, one each for alpha, red, green, and blue (ARGB). Each component can.
UI Design and Development +Roman Nurik +Nick Butcher.
1 Perception and VR MONT 104S, Fall 2008 Lecture 21 More Graphics for VR.
Session 16 Pinball Game Construction Kit:. Pinball Version 1 Replaced the fire button with a mouse event. Multiple balls can be in the air at once. –Uses.
Animations 1 Fall 2012 CS2302: Programming Principles.
Announcements Homework #2 will be posted after class due Thursday Feb 7, 1:30pm you may work with one other person No office hours tonight (sorry!) I will.
Session 13 Pinball Game Construction Kit (Version 3):
Mobile Programming Lecture 11 Animation and TraceView.
Android Threads. Threads Android will show an “ANR” error if a View does not return from handling an event within 5 seconds Or, if some code running in.
Graphics Concepts CS 2302, Fall /17/20142 Drawing in Android.
Basic Animation. Animation 4 options – Animated.gif – Frame by Frame animation – Tweened animation This is our focus – OpenGL ES Graphics API for more.
© 2016 Cengage Learning®. May not be scanned, copied or duplicated, or posted to a publicly accessible website, in whole or in part. Android Boot Camp.
Mobile Computing Lecture#12 Graphics & Animation.
Basic 2D Graphics in Android. Android Graphics Programming There are many ways to do graphics programming in Android – 2D vs. 3D – static vs. dynamic.
Android Boot Camp for Developers Using Java, Comprehensive: A Guide to Creating Your First Android Apps Chapter 10: Move! Creating Animation 1 Android.
By: Eliav Menachi.  Android custom 2D graphics library  OpenGL ES 1.0 for high performance 3D graphics.
David Sutton 2D GRAPHICS IN ANDROID. INTRODUCTION AND OUTLINE  In this week’s session we will create a simple Kaleidoscope application. Topics that will.
CHAPTER 5 Graphics Drawing Audio. Chapter objectives: Learn to draw to a canvas Examine the process of adding drawn elements and UI controls to a layout.
CS371m - Mobile Computing 2D Graphics A Crash Course in Using (Android) 2D Graphics Libraries.
Lecture 3: Animation & Graphics Topics: Animation, Graphics, Drawing Date: Feb 2, 2016.
Graphics & Animation Radan Ganchev Astea Solutions.
Android.
2D Graphics Optimizations
Chapter 2: Simplify! The Android User Interface
Android Application 2D Graphics cs.
Lecture 3: Animation & Graphics
Lecture 2: Android Concepts
CS499 – Mobile Application Development
Lecture 3: Animation & Graphics
Lecture 8: Graphics By: Eliav Menachi.
Android Boot Camp for Developers Using Java, 3E
2D Graphics: Part 2.
S.RENUKADEVI/AP/SCD/ANDROID - Notifications
Android Layouts 24 July 2018 S.RENUKADEVI/AP/SCD/ANDROID LAYOUTS 1.
OpenGL and Related Libraries
Android Introduction Camera.
Android SDK & App Development
Mobile Computing With Android ACST 4550 Android Animation
Android Programming Lecture 6
Android Layout Basics Topics
Graphics with Canvas.
Lecture 7: Introduction to Processing
Android SDK & App Development
Lecture 8: Graphics By: Eliav Menachi.
Expanding the PinBallGame
CS 240 – Advanced Programming Concepts
Android: Shapes.
Mobile Computing With Android ACST 4550 Android Animation
Presentation transcript:

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

High Five! https://youtu.be/uFpoXq73HHY

Concepts

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., pixel arts, sprites, vectors, 3D Tools/API: OpenGL, Vulkan, Direct3D A 2D graphic (tree) is synthesized by using basic shapes (circles and a rectangle)

What is Computer Vision? To understand images using computers. e.g., identifying objects in images Tools/API: OpenCV, OpenVX An image is analyzed to detect and count cars using computer vision algorithms. OpenCV provides CUDA and OpenCL implementation to make the processing much faster on x86/amd64 based systems; https://www.youtube.com/watch?v=xVwsr9p3irA

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

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

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 Shape 9-Patch State Transition Animation

Android Animation

X(t) Types of Animation Drawable Animation View Animation Property Animation X(t) Hello World Drawable Animation View Animation Property Animation

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

1. Drawable Animation Define animation-list in XML: res/drawable Use AnimationDrawable inside your Java code to start the animation 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/pic1" android:duration=“1000" /> <item android:drawable="@drawable/pic2" android:duration=“1000" /> <item android:drawable="@drawable/pic1" android:duration=“1000" /> <item android:drawable="@drawable/pic2" android:duration=“1000" /> </animation-list> Java: someImgView.setBackgroundResource(R.drawable.abovexml); ((AnimationDrawable)someImgView.getBackground()).start();

We’ll try this today: Get some images and put into: res/drawable/ Create an XML file: res/drawable/my_anim_list Add an ImageView and set Background Use AnimationDrawable to start animation

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

2. View Animation Define the Animation in XML: res/anim Use Animation to fetch it, then apply it to a View. XML: <?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:fromDegrees="0" android:toDegrees="360" android:toYScale="0.0" android:pivotX="50%" android:pivotY="50%" android:startOffset=“1000" android:duration="10000" /> Java: Animation x = AnimationUtils.loadAnimation( getApplicationContext(), R.anim.abovexmlfile ); someView.startAnimation(x);

3. Property Animation (Value) Changing value of a variable over a period: Use setInterpolator() to change behavior. ValueAnimator anim = ValueAnimator.ofFloat(0f, 40f); anim.setDuration(40); anim.start(); Advantage? and Limitation?

3. Property Animation (Object) Changing a property of an object. Hello World Hello World Hello World ObjectAnimator anim = ObjectAnimator.ofFloat(myTextView, “textSize”, 10f, 30f); anim.setDuration(5000); anim.start(); Object Variable

Summary of Android Animation List of XML tags and Java Classes: Animation Type XML Tag Java Class Drawable Animation animation-list AnimationDrawable View Animation rotate translate scale set Animation Property Animation ValueAnimator ObjectAnimator

Android Graphics

Graphics Approaches Canvas and Drawables OpenGL (framework API and NDK) S2E9

2D Drawing Using Canvas: Using Drawable: Draw on Canvas (of a View) More work, more control, more efficiency Using Drawable: Put Drawables (in a View) Less work, less control, less efficiency We have learned it already (e.g., images, animation)

1. Using Canvas Canvas holds all of your draw*() calls. Drawing is performed upon an underlying Bitmap. drawRect() drawCircle() … Canvas (logical) Bitmap (physical)

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

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 TextView, ImageView etc.) Android provides you the Canvas as you extend a View and override its onDraw() method. To request a redraw, use: invalidate(). Outside main Activity’s thread, use postInvalidate().

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

We’ll try this today: Create a Custom View Draw a rectangular bounding box. Draw a point (circle) at a variable location (X, Y) Use invalidate() to force redraw. Every time the scene is redrawn, the point (X, Y) should move by a certain amount (dx, dy). When the ball hits a wall, it should bounce back and change direction.

2. Using Drawables Two ways of putting Drawables into a View Four res/drawable/queen.png Four ButtonViews res/drawable/tfade.xml

2(a) Image from Project Resource Copy images into res/drawable/ Use it inside the layout xml You can also do the same by writing code: <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/img1" android:src="@drawable/my_image"/> ImageView i = new ImageView(this); i.setImageResource(R.drawable.my_image); LinearLayout ll = new LinearLayout(this); ll.addView(i); setContentView(ll); //instead of setContentView(R.layout.somexmllayoutfile)

2(b) XML with drawable properties e.g. Transition Drawable: res/drawable/something.xml Now, take an ImageView to show it (them): <transition xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/image1"> <item android:drawable="@drawable/image2"> </transition> TransitionDrawable td; td = (TransitionDrawable) getResources().getDrawable(R.drawable.something); td.setCrossFadeEnabled(true); ImageView img; img = (ImageView) findViewById(R.id.img1); img.setImageDrawable(td); td.startTransition(5000);

References (study these) https://developer.android.com/training/animation/ https://developer.android.com/guide/topics/graphics/

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