an activity in android ( android app development by presentation )

52
AN ACTIVITY IN ANDROID I V I

Upload: cshashank1992

Post on 10-May-2017

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

AN ACTIVITY IN ANDROID

A C T I V I T Y

Page 2: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

An Activity is a window that contains the user interface of our application.

An Android application can have one or more activities.

Just like an applet, an Activity also has several stages in it’s life cycle

What Is An Activity ?

Page 3: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

How an Activity is created ?

To create an Activity we create a java class

that extends the Activity class

available in the package android.app

Page 4: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

MainActivity.java

package com.example.myfirstapp;

import android.os.Bundle;import android.app.Activity;import android.view.Menu;

public class MainActivity extends Activity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }

Page 5: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

MainActivity.java

@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

Page 6: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

The onCreate() method is called by the Android system when our Activity starts

It is where we should perform all initialization and UI setup.

It is compulsory for a programmer to call the super.onCreate() method so that Android Run Time can perform basic set up for our Activity

Page 7: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

After initial setup our class has to load the user interface elements which can be done in 2 ways:

1. Using Programmatic layout

2. Using XML based layout

In the the first approach we use java code to set layout of our components

Page 8: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Programmatic Layout Demopackage com.example.demo2;

import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.TextView;

public class MainActivity extends Activity {

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); tv.setText("My First Android App"); setContentView(tv); }

Page 9: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Programmatic Layout Demo @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }

Page 10: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

The first line creates an Object of “TextView” which is a non editable text, similar to JLabel component of

java swing.

The “TextView” constructor accepts an Android “Context” instance as its

parameter. A Context is a handle to the system; it provides services like

resolving resources, obtaining access to databases and preferences, and so on.

Page 11: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

The Activity class inherits from Context, and because our MainActivity class is a subclass of Activity, it is also a Context.

So, we can pass this as our Context reference to the TextView.

In the next line we call the “setText()”method to set text in TextView

Page 12: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

Finally, we pass the TextView to setContentView() in order to display it as the content for the Activity UI. If our Activity doesn't call this method, then

no UI is present and the system will display a blank

screen.

Page 13: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

Although we can use this type of Programmatic Layout in our code

but the Android specification does not recommend it.

This is because small changes in the layout can result in big source

code headaches.

Page 14: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

Thus the preferred approach is to use XML based layouts so that event handling code is

separated from user interface code.

The user interface by default is defined in a file called “activity_main.xml” and to load

this user interface we call the method setContentView(R.layout.activity_main);

Page 15: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

activity_main.xml<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" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" >

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />

</RelativeLayout>

Page 16: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Explanation Of “activity_main.xml”

The first line is the regular xml directive indicating the XML version along with the tag

<RelativeLayout>.

Layout is a technique to arrange our components on the page. There are several layouts available like LinearLayout,TableLayout,AbsoluteLayout,

The default is RelativeLayout

Page 17: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained

In the <RelativeLayout> tag we also use the xmlns:android with the value

http://schemas.android.com/apk/res/android

It is the default setting and compulsory to be able to use

other elements in “activity_main.xml”

Page 18: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained• After that we have 2 attributes :android:layout_width="match_parent“android:layout_height="match_parent"• The layout_width and layout_height

components are set to match_parent which tells the layout to stretch the activity size to match it’s container which is the screen itself

Page 19: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained• Following it we have 4 attributes:

android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"

• These attributes set the distance between the contents and the borders of the relative layout window i.e the Activity.

• Their values have been set to attributes defined in dimens.xml

Page 20: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Code Explained• TextView describes an area where text can be

displayed . It resembles the Labels in java swings.Within the TextView definition:android:layout_width=“wrap_content" android:layout_height="wrap_content" define a width and height for the TextView box.android:text="@string/hello"provides some text to display in the TextView. The actual string is defined in a separate file, res/values/strings.xml.

Page 21: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Providing Id To ViewsThe components which we create in our XML file might need to be accessed in java code. In this case one more important property has to be set called as android:idTo set it the general syntax is: android:id=“@+id/someid”Also when we set it the R.java file also gets updated

Page 22: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Accessing Views In Java Code

After creating views(gui components) in XML file, we frequently need to refer to them in our java code to manipulate their properties or for other tasks. This can be done using the method findViewById() provided by the Activity class

Page 23: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Accessing Views In Java Code

It’s prototype is:public View findViewById (int id)The argument passed to this method is id of the component as specified in R.java. For example if we have a TextView with id “t1” set in XML file then the call would be:

findViewById(R.id.t1);

Page 24: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Accessing Views In Java Code

The return value of findViewById() is a reference to the specified view if it is found , otherwise it returns null. Moreover since return type of the method is View we need to downcast it to specific component.So the complete call would be:TextView tv; tv=(TextView)findViewById(R.id.t1);

Page 25: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Example 2Write an android mobile app to display current date and time in a TextView.

Page 26: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

“activity_main.xml”<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/txtDisplay"/></LinearLayout>

Page 27: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

DisplayDateTimeActivity.javapackage alex.cruger.androidapp;import java.util.Date;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;

public class DisplayDateTimeActivity extends Activity {@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); TextView tv=(TextView)findViewById(R.id.txtDisplay); Date today=new Date(); tv.setText(today.toString()); }}

Page 28: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

The Button ViewButtons in android can be created using the Button class , which is a derived class of TextView. This class is available in the package android.widget. Just like other GUI programming languages, Buttons in android also are the most important components for generating events.

Page 29: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Creating A ButtonTo create a Button to the Activity, we can use the following code in XML file:

<Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me" />

Page 30: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Positioning The ButtonWritng the above code will place the button at the top left corner which may overlap it on an existing control.

To avoid this we must tell android to place the newly created “BUTTON” view towards left,right,below or above the present control.

Page 31: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Positioning The ButtonFor this android provides us 4 attributes of “Button”1.android:layout_toLeftOf2.android:layout_toRightOf3.android:layout_below4.android:layout_above The value assigned to these attributes is the id of the component with respect to which the button needs to be placed

Page 32: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Positioning The ButtonSo the complete code becomes <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello" android:id="@+id/msg"/>

<Button android:id="@+id/mybtn" android:text="Click me" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/msg“ />

Page 33: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Event Handling Events are the actions a user takes at the run time of our app. Like clicking a Button, Tapping on screen, typing text in EditText(TextField) etc. Event Handling Now if our application wants to respond to those events i.e. execute some piece of code in response to the event then we perform Event Handling

Page 34: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Event Handling With Button

To perform event handling with Button, android follows the same approach as Java.Here are major steps in handling Button click event:1. Implement the interface OnClickListener2. Override the onClick() method3. Register the respective Button as source and

implementing class as listener by calling setOnClickListener()

Page 35: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Example 3Write an android mobile app to display a Button titled “Click Me” and when it is clicked the Button’s title should display current Date and Time.

Page 36: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

“main.xml”<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

<Button android:id="@+id/btn1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Click Me" />

</LinearLayout>

Page 37: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

DisplayDateTimeActivity.javapackage alex.kruger.androidapps;import java.util.Date;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;

public class DisplayDateTimeButtonActivity extends Activity implements OnClickListener { private Button b1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b1=(Button)findViewById(R.id.btn1); b1.setOnClickListener(this); }

Page 38: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

public void onClick(View arg0) {

Date today=new Date();b1.setText(today.toString());}}

Page 39: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Example 4Write an android mobile app to display a Button titled “Click Me” and when it is clicked a TextView should display number of times button has been clicked.

Page 40: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

“main.xml”<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

Page 41: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

<TextView android:id="@+id/t1" android:layout_width="302dp" android:layout_height="wrap_content" android:text="0" />

<Button android:id="@+id/button1" android:layout_width="99dp" android:layout_height="32dp" android:text="Click Me" /></LinearLayout>

Page 42: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

ClickCountActivity.javapackage kapoor.sachin.androidapps;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;

public class ClickCountActivity extends Activity implements OnClickListener { private TextView tv; private Button b1; private int count;

Page 43: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tv=(TextView)findViewById(R.id.t1); b1=(Button)findViewById(R.id.button1); b1.setOnClickListener(this); }

public void onClick(View arg0) {

++count;tv.setText(String.valueOf(count));}}

Page 44: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Handling Multiple SourcesIf we have set multiple sources(like buttons) for a single event then we use the method getId() of the View class whose object is passed as an argument to the method onClick() . This method returns the id of the widget which triggered the event. The prototype of the method is:public int getId()This id can then be compared with R.id values to determine the specific widget.

Page 45: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Example 5Write an android mobile app to display 2 Buttons titled “Increase” and “Decrease” which when clicked increment and decrement the counter accordingly.

Page 46: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

“main.xml”<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" >

<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" />

Page 47: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

<TextView android:id="@+id/t1" android:layout_width="232dp" android:layout_height="wrap_content" android:text="0" />

<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="34dp" android:text="Increase" /> <Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="32dp" android:text="Decrease" />

</LinearLayout>

Page 48: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

“MultiSourceActivity.java”package kapoor.sachin.androidapps;

import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;

public class MultiSourceActivity extends Activity implements OnClickListener{ Button b1,b2; TextView tv; int count;

Page 49: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

@Overridepublic void onCreate(BundlesavedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); b1=(Button)findViewById(R.id.button1); b2=(Button)findViewById(R.id.button2); tv=(TextView)findViewById(R.id.t1); b1.setOnClickListener(this); b2.setOnClickListener(this);}

Page 50: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

public void onClick(View v) {int source=v.getId();switch(source){case R.id.button1:++count;break;case R.id.button2:--count;break;}tv.setText(String.valueOf(count));

}}

Page 51: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

Alternate Way Of Event Handling

Rather than using the OnClickListener we have an alternate way of handling events also using XML file. It’s as follows:1. Assign a method to your button in the XML layout, using the android:onClick attribute. For example: <Button     android:layout_height="wrap_content"     android:layout_width="wrap_content"     android:text=“Click Me"     android:onClick=“myClick" />

Page 52: An ACTIVITY in android ( ANDROID APP DEVELOPMENT BY PRESENTATION )

2. Now, when a user clicks the button, the Android system calls the activity's myClick(View) method. In order for this to work, the method must be public and accept a View as its only parameter. For example: public void myClick(View v) { // code } The View passed into the method is a reference to the widget that was clicked.