Unit 1
Application components
Four main components that can be used within an Android application:
o Activities :
They handle the user interaction to the smartphone screen
An activity is implemented as a subclass of Activity class as follows:
public class MainActivity extends Activity { }
o Services:
They handle background processing associated with an application.
A service is implemented as a subclass of Service class as follows:
public class MyService extends Service { }
o Broadcast Receivers
They handle communication between Android OS and applications.
A broadcast receiver is implemented as a subclass of BroadcastReceiver
class and each message is broadcasted as an Intent object.
public class MyReceiver extends BroadcastReceiver { }
o Content Providers
They handle data and database management issues.
A content provider is implemented as a subclass of ContentProvider
class and must implement a standard set of APIs that enable other
applications to perform transactions.
public class MyContentProvider extends ContentProvider { }
Additional Components
There are additional components which will be used in the construction
of above mentioned entities, their logic, and wiring between them. These
components are:
Fragments : Represents a behavior or a portion of user interface in an
Activity.
Views : UI elements that are drawn onscreen including buttons, lists
forms etc.
Layouts : View hierarchies that control screen format and appearance
of the views.
Intents : Messages wiring components together.
Resources : External elements, such as strings, constants and
drawables pictures.
Create Android Application
The first step is to create a simple Android Application using Eclipse IDE. Follow
the option File -> New -> Project and finally select Android New
Application wizard from the wizard list. Now name your application as
HelloWorld using the wizard window as follows:
Anatomy
Anatomy of Android Application
Before you run your app, you
should be aware of a few
directories and files in the
Android project:
Main Activity File
The main activity code is a Java file MainActivity.java. This is the actual
application file which ultimately gets converted to a Dalvik executable
and runs your application. Following is the default code generated by
the application wizard for HelloWorld! application:
package com.example.helloworld;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.support.v4.app.NavUtils;
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
Manifest File
Whatever component you develop as a part of your application,
you must declare all its components in a manifest file called
AndroidManifest.xml which resides at the root of the application
project directory. This file works as an interface between Android
OS and your application, so if you do not declare your component
in this file, then it will not be considered by the OS. For example,
a default manifest file will look like as following file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.helloworld"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8"
android:targetSdkVersion="15"/>
<application
android:icon="@drawable/ic_launcher" android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity" android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
Strings File
The strings.xml file is located in the res/values folder and it contains
all the text that your application uses. For example, the names of buttons,
labels, default text, and similar types of strings go into this file.This file is
responsible for their textual content. For example, a default strings file will
look like as following file:
<resources>
<string name="app_name">HelloWorld</string>
<string name="hello_world">Hello world!</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
</resources>
R File
The gen/com.example.helloworld/R.java file is the glue between the
activity Java files like MainActivity.java and the resources like
strings.xml. It is an automatically generated file and you should not
modify the content of the R.java file. Following is a sample of R.java
file:
package com.example.helloworld;
public final class R
{
public static final class attr { }
public static final class dimen
{
public static final int padding_large=0x7f040002;
public static final int padding_medium=0x7f040001;
public static final int padding_small=0x7f040000;
}
public static final class drawable
{
public static final int ic_action_search=0x7f020000;
public static final int ic_launcher=0x7f020001;
public static final class id
{
public static final int menu_settings=0x7f080000;
}
public static final class layout
{
public static final int activity_main=0x7f030000;
}
public static final class menu
{
public static final int activity_main=0x7f070000;
}
public static final class string
{
public static final int app_name=0x7f050000;
public static final int hello_world=0x7f050001;
public static final int menu_settings=0x7f050002;
public static final int title_activity_main=0x7f050003;
}
public static final class style
{
public static final int AppTheme=0x7f060000;
}
}
Layout File
The activity_main.xml is a layout file available in res/layout directory, that is
referenced by your application when building its interface.You will modify this
file very frequently to change the layout of your application. For your "Hello
World!" application, this file will have following content related to default
layout:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true“
android:padding="@dimen/padding_medium“
android:text="@string/hello_world" />
</RelativeLayout>