Survey							
                            
		                
		                * Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Crash Course in Android Development Content  Installing the ADT  Hardware and OS requirements  Java  ADT    Bundle Eclipse Project Setup Drawing in Android Animation in Android 2 John Casey  Dr John Casey  Email: [email protected]  Room 3008, building 183  Phone: 815-4321 ext. 6003 3 My Experience   Oracle Certified Java Programmer (OCJP) Programmer        P2P, Sockets, Distributed Systems, Information Retrieval Motor Registry System – State of Tasmania Fines and Infringement Notices Database – State of Tasmania LifeLink - Births, Deaths and Marriages State of NSW Mobile Research Projects … Educator   Deakin University, Melbourne Unitec 4 Android Gremlins      SDK is very complicated There are 4-5 separate components to install and configure and something can go wrong at each stage The Android SDK has lots of bugs Android can have weird interactions with the OS and Hardware Many give up after failing to install and configure Java, Android and Eclipse 5 First Steps   Work out whether you are running a 32-bit or 64-bit OS Control Panel>System and Security->System 6 Do you have Java Installed?  http://www.oracle.com/technetwork/java/javase/ downloads/index.html 7 Download 32-bit OR 64-bit Version 8 Java already installed?  Drop to a Command Prompt 9 Download the ADT Bundle   https://developer.android.com/sdk/index.html The number of bits must match! for OS, Java and ADT Bundle 10 Download the ADT Bundle   Make a cup of tea / coffee while the ADT Bundle downloads 385 MB later .... Extract the ADT Bundle. 11 Extract the ADT Bundle  Extract files to c:\android-adt 12 Open the SDK Manager 13 Update the SDK   Be careful not to download the Google Glass packages Android 4.3.1 API 18 is a good stable version of Android 14  More Coffee ... 15 Run Eclipse 16 Update Eclipse 17 Android Developer Toolkit     Lots of steps where things can go wrong Can alternatively build your own environment OR you can also use Android Studio Beta Follow the steps outlined above though and you can’t go too far wrong Haven’t even started coding yet :D 18 Android Need to Know   Nice to know a general purpose programming language like Java / C# Nice to know a bit about Object Oriented programming  Variables + Functions  Inheritance and Subclassing    Functions and parameters A bit about XML Have a lot of patience – Lots of bugs + Gotchas 19 Starting Eclipse    Keep the default workspace: C:\Program Files\Eclipse Android\Workspace API19 only available on lab machines 20 New Android Project   Use the wizard ... File ->New -> Other -> Android ->Android Project 21   Match up the version of Android with the version that you downloaded! Minimum version should also point to Android 18 22 23 24 25 26 27 Android Projects  Main class file is the Activity public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } } 28 Android Structure    Source Code folder Generated Code folder Resource folder  Images  Layouts  Menus  Strings  AndroidManifest.xml 29 Android Manifest <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.test“ android:versionCode="1“ android:versionName="1.0" > <uses-sdk android:minSdkVersion="18“ android:targetSdkVersion="18" /> <application android:allowBackup="true“ android:icon="@drawable/ic_launcher" android:label="@string/app_name“ android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> Android Manifest   Defines configuration of the project using XML Defines project resources  Images and Icons  Layouts  Menus  Hardware needed  Etc.  31 Defines the main activity for the Android Project 31 First Android Project – Stick Man   We will hard code everything to make it easier Won’t be touching anything in the resources directory 32 Stick Man and House  Create a new View class 33 Stickman and House  Extend / inherit from android.view.View  Set the package  Class name  Superclass  Tick create constructors from super class. 34 Stickman and House package com.example.test; import android.content.Context; import android.util.AttributeSet; import android.view.View; public class StickmanHouse extends View { public StickmanHouse(Context context) { super(context); } public StickmanHouse(Context context, AttributeSet attrs) { super(context, attrs); } public StickmanHouse(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } } 35 Drawing in Android   Can draw various graphical primitives in Android using a View classes onDraw(Canvas canvas) method By default onDraw(Canvas canvas) does not do anything... 36 Drawing in Android   The Canvas co-ordinate system starts at the top-left hand corner of the screen Paint objects are used to control the size, style and colour of the shapes drawn by the Canvas object paint.setColor(Color.RED); canvas.drawCircle(left, top, 10, paint); 37 Stickman and House     By default the StickmanHouse view does not draw anything The super classes onDraw(Canvas canvas) method does not do anything You will need to import android.graphics.*; Implement the onDraw method as follows @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(50, 50, 15, paint); } 38 Link StickmanView to MainActivity package com.example.test; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new StickmanHouse(getApplicationContext())); } } 39 Setting up the Emulator   Choose the Java perspective Window -> Open Perspective -> Java 40 Setting up the Emulator  Press the Android Virtual Device button  It looks like a little mobile phone 41 Setting up the Emulator  Press the new button 42 Create new Virtual Device     Set the following parameters Keep the device screen smaller – larger devices are very slow Select an x86 CPU Press OK 43 Start the new Virtual Device  Takes about 5 – 10 minutes to start depending on your hardware 44 Emulator 45 Running your App – Right Click Project 46 Running your App   Right Click Project Select Run As  Android  Application The application will run on your emulator (eventually) ... 47 Activity  Build a stickman figure in teams of 2 people, using canvas methods such as:  canvas.drawRect(25, 125, 150, 250, paint);  canvas.drawLine(200,125,200,200,paint);  canvas.drawCircle(200, 115, 15, paint);  canvas.drawArc(new RectF(200-10,1158,200+10,115+8 ), 0, 180, true, paint); 48 What have we done?  A lot on project setup  Create project  Create emulator     A bit on object oriented programming A bit on object creation / allocation A lot on drawing objects using the canvas and paint objects Basics of Java language 49 Bouncing Ball Animation    Declare global integer variables Use global vars to specify co-ordinates of the circle Use invalidate() method to force a screen redraw 50 Animation Code int x = 0; int y = 0; @Override protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(x,y, 15, paint); x = x +1; y = y +1; invalidate(); }  We need some guard conditions otherwise the circle will cont. to move to the right forever. Boundary Guards int x = 150; int y = 0;  int deltax = 1; int deltay = 1; @Override  protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.RED); canvas.drawCircle(x,y, 15, paint); if(x > getWidth()) { deltax = -1; } x = x +deltax; y = y +deltay; invalidate(); }  New delta variables to control movement New guard conditions to reflect ball movement on right hand side Your job implement guard conditions for the top, bottom and left sides Summary  Basic animation  Global variables  Math operators  Assignments operators  If statements    Challenge get more circles on screen using arrays Get them to collide with each other If you want to learn more take the Mobile class over Summer / Sem 1, 2015. 53