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
1 More Java: Encapsulation, Getters, Setters, Anonymous Class CS300 Java Packages 2 Provide a mechanism for grouping related types together in a universally unique namespace. java.lang Java.util How to name a package? Domain Ex. Plus domain android.com will be package com.android name of the program Ex. CS300 name reversed com.android.notepad Access Modifiers 3 Keywords that modify the visibility of the declarations to which they are applied Private: most restrictive. Not visible outside the block that contains it. Default or package access: next most restrictive. Visible only from other classes in package. Protected: permits all default access rights plus access from within any subtype. Public: allows access from anywhere. CS300 Encapsulation 4 The idea that an object should never reveal details about itself that it does not intend to support. Getters and Setters: Common CS300 example of encapsulation in Java Getters and Setters example 5 Create a class Contact that extends Comparable<Contact>: Fields: name, age, email Create constructor with arguments: name, age, email Create getters and setters for all three fields Create method compareTo to sort contacts by e-mail Test CS300 Anonymous Class 6 Callback: your code needs to be notified when something in the UI changes. Ex. a button is pushed and we need to change state, new data has arrived from the network and it needs to be displayed Java provides idiom to pass blocks in code Anonymous classes are a handy tool for expressing many kinds of code blocks. CS300 Without anonymous class With anonymous class public class myDataModel{ //Callback class private class keyHandler implements View.onKeyListener { public boolean onKey(View v, int keyCode, KeyEvent event) { handleKey(v, keyCode, event); } } /* @param view in the view we model */ public myDataModel(View view){ view.setOnKeyListener(new KeyHandler()) } /** Handle a key event **/ void handleKey(View v, int keyCode, KeyEvent event){ // key handling code goes here … } } public class myDataModel{ 7 /* @param view in the view we model */ public myDataModel(View view) { view.setOnKeyListener( // this is an anonymous class!! new View.OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { handleKey(v, keyCode, event); } } ); /** Handle a key event **/ void handleKey(View v, int keyCode, KeyEvent event){ // key handling code goes here … } CS300 } References 8 Programming Android by Zigurd Mednieks, Laird Dornin, G. Blake Meike, Masumi Nakamura CS300 Install ADT and AVD 9 http://developer.android.com/sdk/index.html#dow nload If CS300 you already have eclipse use an Existing IDE option Install notes 10 Don’t forget to configure the ADT (Eclipse, Window, Preferences, Android) Do not forget to set an AVD target (run configuration) Do not forget to assign SD memory Check devices: use the proper one CS300 Hello Android!! 11 New android project Delete activity_main.xml Right click layout -> create new xml. Choose relative layout Configure resolution: samsung nexus 4 inch screen, 480-by-800 Create AVD CS300 Hello Android!! 12 Drawables: Hdpi: high density Mdpi: medium density Ldpi: low density Xhdpi: extra high Change ID property for relative layout +: create new variable with name Change BG property RGB CS300 color map Hello Android!! 13 Add a TextView Configure text property: create a new string resource (good practice) R.String: name String: content Configure Dp: text size: density independent pixel Configure layout margin top Text color: #00F Text Style: bold CS300 Hello Android!! 14 Add image view Create new drawable: be careful with names! No hyphens allowed Change: Id Layout below: put it under your textview Layout center horizontal Src: do not forget to add your image in a drawable directory CS300