+ All Categories
Home > Documents > ANDROID – A FIRST PROGRAM L. Grewe Using AndroidStudio –basic Android Lets do a “Hello World...

ANDROID – A FIRST PROGRAM L. Grewe Using AndroidStudio –basic Android Lets do a “Hello World...

Date post: 18-Jan-2016
Category:
Upload: margery-bond
View: 216 times
Download: 2 times
Share this document with a friend
Popular Tags:
39
ANDROID – A FIRST PROGRAM L. Grewe
Transcript
  • ANDROID A FIRST PROGRAML. Grewe

  • Using AndroidStudio basic AndroidLets do a Hello World ProjectStart up AndroidStudio (assume you have installed with Android support)

  • Hello World Project Android StudioApp name, packageTargetActivity typeName of ActivityNow finish to setup

  • Hello World Project---basic folders &filesFoldersNumber of folders and files are auto- generated when you create a project File of noteAndroidManifest.xml like a ships manifestit tells us the components of our app

  • Project basics.Android Studiomanifests/AndroidManifest.xml: an XML file describing the application being built and what components activities, services, etc. are being supplied by that applicationjava/: holds the Java source code for the applicationres/: contains layout filesdrawable =iconsmenusvalues = static files like strings.xml

    Gradle/: an Ant script for compiling the application and installing it on the device (integrated with IDEdont see it there) default.properties: a property file used by the compilerres/ contains multiple xml files and other resources used by application

  • Project basics.Android StudioGradle Scripts/: an gradle script for compiling the application and installing it on the device (integrated with IDEdont see it there) gradle.properties: a property file used by the compiler

  • Manifest file AndroidManifest.xmlan XML file describing the application being built and what components activities, services, etc. are being supplied by that application Initially created by IDE must declare all activities, services, broadcast receivers and content provider of the application. must contain the required permissions for the application. For example if the application requires network access it must be specified here.

  • Hello World Project AndroidManifest.xmlManifest file Here have intent created forThis acitivity that is associated withlaunch of applicationDefine Application see res/strings.xmlsee res/drawable-resolution/icon.png

  • Interface specificationsThe Layout

  • Interface ---2 optionsDo it with XML file(s)Many modern frameworks whether for mobile programming like Android or iOS or for other platforms have gone to specifying GUI (graphical user interface) elements in static XML files rather than programming source code (like java).The reason it allows separation of the look (view) from how the code works (model and controller). Have you ever heard of Model View Controller it is a famous software engineering framework that programmers try to achieve in their software systems.Do it with Java code.This has similarities if you have created desktop GUI Java applications

  • OPTION 1: The Layout with XMLWe are going to discuss a specific resource in the res folder res/layout/activity_main.xml

  • The Layout-the interfaceres/layout/main.xml = contains layout for interface

    The above will create an interface in vertical (versus portrait) mode that fills the parentBoth in width and write and wraps and content as necessary.

  • The Layout-the interfaceres/layout/main.xml

    android:orientation = vertical (versus portrait) mode. that fills the parent both in width and write and wraps and content as necessary.LandscapeVertical

  • Hello World ProjectLayout file

    This adds a TextView to the interface and this has the text referenced by @string/hello in it.Creating a Layout file2 options

    Do it manually type it in

    For Layouts corresponding to GUIsYou have a drag and drop option we will learn about in a later lecture

  • Using IDE to Visually Create XML fileVisual creation of XML fileAndroidStudio: New-> Layout resource fileSelect layout (root)&qualifiers as neededdrag & drop

  • Visually Creating XML interfaceI dragged and dropped an EditText view and a Button. Below I show you the corresponding code.

    res/layout/main2.xml

  • It is an Activity

    Activity is a class in the Android sdk (android.app.Activity)

    It represents us now the main application itselfwe will learn more about what this means in a near future lecture remember we are at the beginning!Lets look at the Main class

  • Create an Activity with simple text Interface firstAn Android user interface is composed of hierarchies of objects called Views.

    A View is a drawable object used as an element in your UI layout, such as a button, image, or

    In the next code will create a text label. Each of these objects is a subclass of the View class and the subclass that handles text is TextView.

  • Hello World Project here we are creating interface with programatically/codeHelloworld.javapackage com.teach.helloworld; import android.app.Activity; import android.os.Bundle; public class helloworld extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("Hello, Android.....Lynne"); setContentView(tv); } }create a TextView with the class constructor, which accepts an Android Context instance as its parameter. Context is a handle to the systemprovides services like resolving resources,obtaining access to databases and preferences, etc.

    The Activity class inherits from Context, and because your HelloAndroid class is a subclass of Activity, it is also a Context. So, you can pass this as your Context reference to the TextView.

    text content is set with setText(CharSequence)

    pass the TextView to setContentView() in order to display it as the content for the Activity UI.

  • What we just learnedYou will have a class created for you that is your android application, i.e. helloworld and it extends ActivityYour application is an Activity and that also descends from ContentContext = class that gives us access to Systemprovides services like resolving resources,obtaining access to databases and preferences, etcView = is a GUI element, there are different kinds like the TextView we are using .constructor needs Context instance (we used our App)

  • Automatically created by IDE when created projectR.java

  • Hello World ProjectR.Java == generated by project, this points to various resources in your project see res folder.DO NOT EDIT THIS unless you know what you are doing./* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */package com.example.helloworldandroid;

    public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class id { public static final int button1=0x7f050001; public static final int editText1=0x7f050000; } public static final class layout { public static final int main=0x7f030000; public static final int main2=0x7f030001; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; }}

  • It is used it in your code to point to resources. Lets look at an example where we alter our onCreate method to point to the interface described in the res/layout/main.xml file.so now interface specified with XML and not programmatically with code.Why have R.java?TIP: sometimes when you are compiling your code you can have problems with the R.java file (which you DONT edit) what is going on? Somehow the R.java is out of sync with the project resources..WHAT TO DO? do a Build->Clean Project and it will regenerate R.java for you

  • Eclipse: gens/R.javaAndroid Studio: build/generated/source/r/debug/your-package -name/R.java(Example: C:\Users\Lynne\AndroidStudioProjects\HelloWorldAndroid\app\build\generated\source\r\debug\com\example\lynne\helloworldandroid)Where is R.javaAndroid studio: you can not see the R.java in IDE

    Go to file system

  • Alter your Activity to Use an XML layout filepackage com.example.helloandroid; import android.app.Activity; import android.os.Bundle; public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }Now going to change the code so it uses instead an XML file for its intervaceThis line of code says use the xml layout file called main.xml that is pointed to inside your R.java file in memory

  • Interfaces ---XML-based layoutPrevious HelloWorld example has interface created in java code.ALTERNATIVE: XML-based layout files. Example that duplicates previous.

    Above located in res/layout/main.xmlHere is our main.xml file that will be used and do the same thing as our previous java code show a TextView

  • XML interface

    xmlns:android XML namespace declaration that tells the Android tools that you are going to refer to common attributes defined in the Android namespace. The outermost tag in every Android layout file must have this attribute.android:layout_width This attribute defines how much of the available width on the screen this View should consume. As it's the only View so you want it to take up the entire screen, which is what a value of "fill_parent" means. android:layout_height This is just like android:layout_width, except that it refers to available screen height. android:text This sets the text that the TextView should display. In this example, you use a string resource instead of a hard-coded string value. The hello string is defined in the res/values/strings.xml file. Lets understand the XMLTag used to describe ourTextViewWow! Thats a lot to remember ---arent you glad we have an API online to look it up ---better yet is the drag and drop option to make interfaces!!!

  • The res directoryMore on resources

  • We mentioned res folderAndroid Studio

  • res/ directoryres/layout/ : contains one or more xml files that define interfacesres/values/strings.xml : file where you specify strings (constants) that you can use in your programres/drawable-* : gives file use for different resolutions like icon.jpg. *=hdpi (high), mdpi(medium), ldpi (low). Depends on device what mode it can/may be running in.res/menu/ : contains one or more xml files for menus

  • So we have an interface what can we do with it.

    Event Handling = code that responds when events happen. For GUI elements we usually have events associated with them. For example, a button has the event of hitting the button.Event Handling

  • Widget : Views that have eventsFor a list of the widgets provided by Android, see the android.widget package.Some ExamplesButtonCheckBoxDatePickerEditTextImageViewSearchViewSpinnerThere are more ---here are a few.

  • Event HandlingDecide what Widgets whos events to processDefine an event listener and register it with the View.View.OnClickListener (for handling "clicks" on a View), View.OnTouchListener (for handling touch screen events in a View), and View.OnKeyListener (for handling device key presses within a View)http://developer.android.com/guide/topics/ui/ui-events.html details more

    3 steps:Decide what events to respond toCreate a listener to respond to each eventRegister the listener to the corresponding widget

  • Lets add a Button to a program-based interfaceStep 1: Add buttonStep 2: Register Event HandlerTWO OPTIONS separate class to handle event(s), OR have the Activity containing the button do the event handlingStep 3: Implement Event Handlerfor a Button means implementing the View.OnClickListener interface

  • Event handling done by Activity itself one option Here code to handle is inside Activity itselfpublic class ExampleActivity extends Activity implements OnClickListener { protected void onCreate(Bundle savedValues) { ... Button button = (Button)findViewById(R.id.corky); button.setOnClickListener(this); } // Implement the OnClickListener callback public void onClick(View v) { // do something when the button is clicked } ... }This option is okay only if the event handling code is simple and you will not reuse it ever ---if the code is longer or will reuse make a separate class

  • Event Handling - here have a SEPARATE class EVENT HANDLING CODE in separate object mCorkyListner

    // Create an anonymous implementation of OnClickListener private OnClickListener mCorkyListener = new OnClickListener() { public void onClick(View v) { // do something when the button is clicked } };

    //Now inside your Activity class protected void onCreate(Bundle savedValues) { ... // STEP 1: Capture our button from layout Button button = (Button)findViewById(R.id.corky); // STEP 2: Register the onClick listener with the implementation above button.setOnClickListener(mCorkyListener); ... } Better for readability and reuse

  • Depends on IDERun your code

  • Running codeWill Run in the EmulatorAndroid Studio: Run->Run app or Debug AppYou should learn to run both on the emulator AND on a physical device. TO use features of a phone like GPS, etc. it is often required to run on a phone

  • Running codeTIP: Emulator can take a long time to load at first----be patient and keep it up---just re-run after changes and wont have to relaunch emulator, will just load up new app.Look if you have Intell Virtualization speed up, check out GPU and snapshot options search online for current info on these tips

    **


Recommended