You are on page 1of 33

Mobile Computing

Chapter Six: Android User Interface


Agenda
 Understanding the Components of a Screen
 Views and View Groups
 Linear Layout
 Absolute Layout
 Table Layout
 Relative Layout
 Frame Layout
 Scroll View
Understanding the components of A Screen

An activity displays the user interface of your application, which may
contain widgets like buttons, labels, text boxes, and so on.
 Typically, you define your UI using an XML file

<?xml​version=”1.0”​encoding=”utf-8”?>
<LinearLayout
​xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
Cont.…
android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”
​>
<TextView​​
​android:layout_width=”fill_parent”
​android:layout_height=”wrap_content”
​android:text=”@string/hello”
​/>
</LinearLayout>
Cont.…
During run time, you load the XML UI in the onCreate() event handler in your Activity class, using the
setContentView() method of the Activity class:

​@Override

​public​void​onCreate(Bundle​savedInstanceState)​{

​super.onCreate(savedInstanceState);

setContentView(R.layout.main);

​}

During compilation, each element in the XML file is compiled into its equivalent Android GUI class, with
attributes represented by methods. The Android system then creates the UI of the activity when it is loaded.
views and view groups
 An activity contains Views and ViewGroups. A view is a widget that has an appearance on
screen.

 Examples of views are buttons, labels, and text boxes. A view derives from the base class
android​.view.View.

 One or more views can be grouped together into a ViewGroup.

 A ViewGroup (which is itself a special type of view) provides the layout in which you can order
the appearance and sequence of views.
 Examples of ViewGroups include LinearLayout and FrameLayout. A ViewGroup derives
from the base class android.view.ViewGroup.
Cont.…
Android supports the following ViewGroups:

 LinearLayout

 AbsoluteLayout

 TableLayout

 RelativeLayout

 FrameLayout

 ScrollView
Linear layout
 The LinearLayout arranges views in a single column or a single row.

 Child views can be arranged either vertically or horizontally.

 To see how LinearL ayout works, consider the following elements typically contain in the main.xml file:
<?xml​version=”1.0”​encoding=”utf-8”?>
<LinearLayout
​xmlns:android=”http://schemas.android.com/apk/res/android”
​android:orientation=”vertical”
​android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”​​>
<TextView
​android:layout_width=”fill_parent”​
​android:layout_height=”wrap_content”
​android:text=”@string/hello”/>
</LinearLayout>ed in the main.xml file:
Cont.…
Each View and ViewGroup has a set of common attributes, some of which are described
table below.
Cont.…
 For example, the width of the <TextView> element fills the entire width of its using the fill parent

constant. Its height is indicated by the wrap content constant, which means that its height is the

height of its content. If you don’t want to have the <TextView> view occupy the entire row, you can set

its layout width attribute to wrap content, like this:

<​TextView

​android:layout_width=”wrap_content

​android:layout_height=”wrap_content”

​android:text=”@string/hello”

/>
Cont.…
 This will set the width of the view to be equal to the width of the text contained within it.
<?xml​version=”1.0”​encoding=”utf-8”?>
<LinearLayout​xmlns:android=”http://schemas.android.com/apk/res/android”
​android:orientation=”vertical”
​android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”​​>
<TextView
​android:layout_width=”105dp”
​android:layout_height=”wrap_content”
​android:text=”@string/hello”​​/>
<Button
​android:layout_width=”160dp”
​android:layout_height=”wrap_content”
​android:text=”Button”​​/>
</LinearLayout>
Cont.…

The preceding example also specifies that the orientation of the layout is vertical:
<LinearLayout​
​xmlns:android=”http://schemas.android.com/apk/res/android”
android:orientation=”vertical”
​android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”
​>
The default orientation layout is horizontal
Cont.…
 In LinearLayout, you can apply the layout weight and layout gravity attributes to views contained within it.
<?xml​version=”1.0”​encoding=”utf-8”?>
<LinearLayout​xmlns:android=”http://schemas.android.com/apk/res/android”
​android:orientation=”vertical”
​android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”​​>
<TextView
​android:layout_width=”105dp”​
​android:layout_height=”wrap_content”​
​android:text=”@string/hello”/>
<Button
​android:layout_width=”160dp”
​android:layout_height=”wrap_content”
​android:text=”Button”
Cont.…
android:layout_gravity=”right”
android:layout_weight=”0.2”
/>
<EditText
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:textSize=”18sp”
android:layout_weight=”0.8”
/>
</LinearLayout>
Absolute layout
The Absolute Layout enables you to specify the exact location of its children. Consider
the following UI defined

<?xml​version=”1.0”​encoding=”utf-8”?>

<AbsoluteLayout

​android:layout_width=”fill_parent”

​android:layout_height=”fill_parent”

​xmlns:android=”http://schemas.android.com/apk/res/android”in main.xml:
Cont.…
>
<Button
​android:layout_width=”188dp”
​android:layout_height=”wrap_content”
​android:text=”Button”
​android:layout_x=”126px”
​android:layout_y=”361px”​​/>
<Button
​android:layout_width=”113dp”
​android:layout_height=”wrap_content”
​android:text=”Button”
​android:layout_x=”12px”
​android:layout_y=”361px”​​/>
</AbsoluteLayout>
Table layout

The Table Layout groups views into rows and columns.

You use the <TableRow> element to designate a row in the table.

Each row can contain one or more views.

Each view you place within a row forms a cell.

The width of each column is determined by the largest width of each cell in
that column.
Cont.…
?xml​version=”1.0”​encoding=”utf-8”?>
<TableLayout​
​xmlns:android=”http://schemas.android.com/apk/res/android”
​android:layout_height=”fill_parent”​
​android:layout_width=”fill_parent”​​>
​<TableRow>
​<TextView
​android:text=”User​Name:”
​android:width​=”120px”​/>
​<EditText
​android:id=”@+id/txtUserName”
​android:width=”200px”​/>
​</TableRow>
Cont.…
​ TableRow>
<
​<TextView​
​android:text=”Password:”​​/>
​<EditText​
​android:id=”@+id/txtPassword”​
​android:password=”true”​/>
​</TableRow>
​<TableRow>
​<TextView​/>


Cont.…
​ CheckBox​android:id=”@+id/chkRememberPassword”
<
​android:layout_width=”fill_parent”​
​android:layout_height=”wrap_content”
​android:text=”Remember​Password”
​/>​​
​</TableRow>
​<TableRow>
​<Button​
​android:id=”@+id/buttonSignIn”​
​android:text=”Log​In”​/>
​</TableRow>
</TableLayout>
Relative layout
 The Relative Layout enables you to specify how child views are positioned relative to each other.
<?xml​version=”1.0”​encoding=”utf-8”?>
<RelativeLayout
​android:id=”@+id/RLayout”
​android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”
​xmlns:android=”http://schemas.android.com/apk/res/android”
​>
​<TextView
​android:id=”@+id/lblComments”
​android:layout_width=”wrap_content”
​android:layout_height=”wrap_content”
​android:text=”Comments”
android:layout_alignParentTop=”true”
android:layout_alignParentLeft=”true”
Cont.…
/>
​<EditText
​android:id=”@+id/txtComments”
​android:layout_width=”fill_parent”
​android:layout_height=”170px”
​android:textSize=”18sp”
android:layout_alignLeft=”@+id/lblComments”
android:layout_below=”@+id/lblComments”
android:layout_centerHorizontal=”true”
​/>
​<Button
​android:id=”@+id/btnSave”
Cont.…
android:layout_width=”125px”
​android:layout_height=”wrap_content”
​android:text=”Save”
android:layout_below=”@+id/txtComments”
android:layout_alignRight=”@+id/txtComments”
​/>
​<Button
​android:id=”@+id/btnCancel”
​android:layout_width=”124px”
​android:layout_height=”wrap_content”
​android:text=”Cancel”
android:layout_below=”@+id/txtComments”
android:layout_alignLeft=”@+id/txtComments”
​/>
</RelativeLayout>
 Notice that each view embedded within the Relative Layout has attributes that enable it
to align with another view. These attributes are as follows:

 layout_alignParentTop

 layout_alignParentLeft

 layout_alignLeft

 layout_alignRight

 layout_below

 layout_centerHorizontal
Frame layout
 The FrameLayout is a placeholder on screen that you can use to display a single view.

 Views that you add to a Frame Layout are always anchored to the top left of the layout.

<?xml​version=”1.0”​encoding=”utf-8”?>

<RelativeLayout

​android:id=”@+id/RLayout”

​android:layout_width=”fill_parent”

​android:layout_height=”fill_parent”

​xmlns:android=”http://schemas.android.com/apk/res/android”

​>
Cont.…
​<TextView
​android:id=”@+id/lblComments”
​android:layout_width=”wrap_content”
​android:layout_height=”wrap_content”
​android:text=”This​is​my​lovely​dog,​Ookii”
​android:layout_alignParentTop=”true”
​android:layout_alignParentLeft=”true”
​/>
​<FrameLayout
​android:layout_width=”wrap_content”
​android:layout_height=”wrap_content”
​android:layout_alignLeft=”@+id/lblComments”
​android:layout_below=”@+id/lblComments”
​android:layout_centerHorizontal=”true”
​>
Cont.…
<ImageView
​android:src​=​“@drawable/ookii”
​android:layout_width=”wrap_content”
​android:layout_height=”wrap_content”
​/>
​</FrameLayout>
</RelativeLayout>
Cont.…
If you add another view (such as a Button view) within the
FrameLayout, the view will overlap the previous view
<?xml​version=”1.0”​encoding=”utf-8”?>
<RelativeLayout
​android:id=”@+id/RLayout”
​android:layout_width=”fill_parent”
​android:layout_height=”fill_parent”
Scroll view

A Scroll View is a special type of Frame Layout in that it enables


users to scroll through a list of views that occupy more space
than the physical display.

The Scroll View can contain only one child view or ViewGroup,
which normally is a Linear Layout.
Cont.…
 The following main.xml content shows a ScrollView containing a LinearLayout, which in turn contains some Butt
<?xml​version=”1.0”​encoding=”utf-8”?>
<ScrollView
​android:layout_width=”fill_parent”on and EditText views:
​android:layout_height=”fill_parent”
​xmlns:android=”http://schemas.android.com/apk/res/android”
​>
xmlns:android=”http://schemas.android.com/apk/res/android”
​>
​<LinearLayout
​android:layout_width=”fill_parent”
​android:layout_height=”wrap_content”
​android:orientation=”vertical”
>
Cont.…
<Button />
​android:id=”@+id/button1” ​<Button
​android:layout_width=”fill_parent” ​android:id=”@+id/button3”

​android:layout_width=”fill_parent”
android:layout_height=”wrap_conte
nt” ​
​android:text=”Button​1” android:layout_height=”wrap_cont
ent”
​/>
​android:text=”Button​3”
​<Button
​/>
​android:id=”@+id/button2”
​android:layout_width=”fill_parent”
<EditText
​ ​android:id=”@+id/txt”
android:layout_height=”wrap_conte ​android:layout_width=”fill_parent”
nt” ​android:layout_height=”300px”
​android:text=”Button​2”
​/>

Cont.…
​<Button
​android:id=”@+id/button4”
​android:layout_width=”fill_parent”
​android:layout_height=”wrap_content”
​android:text=”Button​4”
​/>
​<Button
​android:id=”@+id/button5”
​android:layout_width=”fill_parent”
​android:layout_height=”wrap_content”
​android:text=”Button​5”
​/>
​</LinearLayout>
</ScrollView>
Thank you!

You might also like