unlocking android chapter 4. understanding activities and views exploring the activity lifecycle ...

Post on 17-Dec-2015

219 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

UI ConceptsUnlocking Android

Chapter 4

Understanding activities and views Exploring the Activity lifecycle Working with resources Defining the AndroidManifest.xml

Goal

Understanding activities

Views and other Android components◦ compiled into a binary form

R.java◦ available to applications as

resources◦ make use of strings, colors,

styles, and graphics R.java class

◦ automatically generated◦ provides a reference to

individual resources ◦ is the bridge between binary

references and source.◦ to grab a string or a color and add

it to a View. AndroidManifest. Xml

◦ where your application begins◦ what its permissions are◦ Activities (services and

receivers ) it includes

Requirements◦ Allows the user to search for restaurant reviews based

on location and cuisine. ◦ Allow the user to call, visit the website of, or map

directions to a selected restaurant. Need three basic screens to begin with:

◦ A criteria screen where a user enters parameters to search for restaurant reviews

◦ A list-of-reviews screen that shows paged results that match the specified criteria

◦ A detail page that shows the review details for a selected review item

A screen =an Activity

RestaurantFinder

1 it gives our application a context,

◦ because Activity itself extends android.app.ApplicationContext;

it brings the Android lifecycle methods into play;

it gives the framework a hook to start and run your application; and

it provides a container into which View elements can be placed.

Needs three Views ◦ because an Activity represents an interaction with the

user, it needs to provide components on the screen. ◦ location, cuisine, and grabReviews

Location◦ is a type of View ◦ known as an EditText

cuisine ◦ is a fancy select list component, ◦ known in Android terms as a Spinner, and

grabReviews ◦ is a Button.

2

This is one of a series of important lifecycle methods the Activity class provides.

Every Activity will override onCreate(), ◦ component initialization steps are invoked, ◦ not every Activity will need to override other

lifecycle methods.

3

setContentView() ◦ normally associate an XML layout file◦ you do not have to use an XML file at all;

you can instead define all of your layout and View configuration in code, as Java objects.

◦ it is often easier, and better practice use an XML layout resource decoupling, each xml layout file for each Activity.

An XML layout file ◦ defines View objects,

are laid out in a tree, can then be set into the Activity for use.

4

Dynamic Views ◦ Can bind to data, ◦ can be referenced in code ◦ cast to their respective subtypes

Static Views ◦ don’t need to interact with or update at runtime

like labels, ◦ do not need to be referenced in code

5

“Adapter” concept◦ link views that contain collections (AdapterView) with data. ◦ a collection handler that returns each item in the collection as a View.

An Adapter ◦ is an interface◦ a bridge between an AdapterView and the underlying data for that view. ◦ provides access to the data items ◦ making a View for each item in the data set◦ many basic adapters:

ListAdapter, ArrayAdapter, GalleryAdapter, CursorAdapter, And more. can create your own Adapter

An AdapterView a subclass of view and viewgroup an abstract class is a view whose children are determined by an Adapter◦ commonly used subclasses of AdapterView◦ ListView, GridView, Spinner, and Gallery 

6

using an ArrayAdapter that is populated with◦ Context (this), ◦ a View element defined in an XML resource file

used for the element shown in the Spinner before it is selected;

◦ an array representing the data After the spinner selected

◦ Set a different View (R.layout.spinner_view_dropdown) for the drop-down

7- ArrayAdapter

Once our Adapter and its View elements are defined, we set it into the Spinner object

Handle event◦ OnClickListener with our Button, in order to

respond when the button is clicked

8-9

After the onCreate() method is complete, with the binding of data to our Spinner views, we have menu buttons and associated actions. ◦ different than on-screen Button views

Menu Button vs on-screen Button◦ is invoked by pressing the Menu button on the

device and tapping a selection (button and a tap)

◦ an on-screen button (single tap)

menu buttons

Menu class add() method to create a single MenuItem element B. ◦ passing a group ID, ◦ An ID, ◦ an order, and ◦ a text resource reference to create the menu item.

Assigning to the menu item an icon with the setIcon method. ◦ The text and the image are externalized from the code, again

using Android’s concept of resources. The MenuItem

◦ duplicates the on-screen Button with the same label for the “Get reviews” purpose.

onMenuItemSelected() event method C,where we parse the ID of the multiple possible menu items with a case/switch statement.

HandleGetReviews• puts the user’s selection state in the Application object • sets up to call the next screen. • used in multiple places,

1. from our on-screen Button2. from our MenuItem.

Application object Used internally by Android for many purposes, Can be extended,

◦ RestaurantFinderApplication ◦ includes a few member variables in JavaBean style

Store global state information◦ Can be retrieve later

One way to pass objects back and forth between activities;◦ You can also use public static members and Intent extras

with Bundle objects. ◦ You can use the provided SQLite database, or◦ You can implement your own ContentProvider and store

data there.

asking another Activity to respond to the user’s selection of a menu item by calling startActivity (Intent intent)

•validate()• Called before we allow the next

Activity to be invoked, • display a pop-up-style alert dialog

to the user if the location has not been specified.

•OnClickListener() • button can be made to respond to a

click event

AlertDialog.Builder(Context context)Constructor using a context for this builder and the AlertDialog it creates.

Exploring the Activity lifecycle

Every process running on the Android platform is placed on a stack.

Android can’t keep every process running forever◦ system resources are finite.

How to use the limit resources?◦ When you use an Activity in the foreground, the

system process that hosts that Activity is placed at the top of the stack,

◦ previous process (the one hosting whatever Activity was previously in the foreground) is moved down one notch

Activity lifecycle

Foreground activity◦ at the top of the screen that the user is currently

interacting with  Visible activity

◦ an activity that is visible to the user but not in the foreground,

◦ such as one sitting behind a foreground dialog Background activity 

◦ Any process hosting a background Activity is next in line.

Empty process ◦ Any process not hosting any Activity (or Service or

BroadcastReceiver)is last in line.

Process priorities

Working with Views

View- building blocks of the UI

Related to layout

Understanding layout Layout is defined in terms of

◦ ViewGroup ◦ LayoutParams

ViewGroup ◦ is a container

is a View that contains other views (has children) Child View elements must fit into the layout specified by their

parents. a child View has to lay itself out based on its parents’ LayoutParams

a child View specify a different layout for its own children LayoutParams

◦ public static class- ViewGroup.LayoutParams◦ used by views to tell their parents how they want to be laid out◦ dimensions —width and height◦ relative or absolute placement◦ Margins

Grasping events

Allow other components to attach and listen for events. ◦ View class methods:

onFocusChanged(), onSizeChanged(), onLayout(), onTouchEvent()

Similarly, other items◦ Activity lifecycle methods

onCreate(), onFreeze()

View items are Observable

Using resources

Supported resource types

Referencing resources in Java

This maps to an XML layout file at src/res/layout/review_detail.xml

Defining views and layouts through XML resources Views and layout are defined in XML

◦ rather than in Java code◦ as resources

Benefits◦ easier to work with ◦ decoupled from the code◦ Reusable

Resource files ◦ are placed in the res/layout source directory◦ many XML files allowed ◦ the root of these XML files is

subclasses ofViewGroup RelativeLayout, LinearLayout, FrameLayout

◦ body of XML represent the view/layout tree.

•layout_[attribute]•Android: padding = setPadding()•android:id="@+id/[name]•android: layout_below="@id/[name]•style="@style/[stylename]

Externalizing values

Providing animations

Understanding the AndroidManifest file

Android requires a manifest file for every application

Is placed in the root directory of the project source

Describes ◦ application context◦ supported activities◦ services◦ intent receivers ◦ content providers ◦ permissions

AndroidManifest.xml

•To inform the system which implicit intents they can handle•Each filter describes a capability of the component, a set of intents that the component is willing to receive.

top related