50
LFE Medieninformatik Prof. Dr. Heinrich Hußmann (Dozent), Alexander De Luca, Gregor Broll (supervisors) Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010

Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

LFE Medieninformatik Prof. Dr. Heinrich Hußmann (Dozent), Alexander De Luca, Gregor Broll (supervisors)

Praktikum Entwicklung vonMediensystemen mit Android

Implementing a User Interface

Donnerstag, 6. Mai 2010

Page 2: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Outline

• Introduction• Layouting Components using XML• Common Layout Objects• Hooking into a Screen Element• Listening for UI Notifications• Applying a Theme to Your Application

Donnerstag, 6. Mai 2010

Page 3: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Introduction

• ActivityBasic functional unit of an Android applicationBut by itself, it does not have any presence on the screen

• Views and ViewgroupsBasic units of user interface expression on the Android platform

Donnerstag, 6. Mai 2010

Page 4: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

ViewsImplementing a User Interface

Donnerstag, 6. Mai 2010

Page 5: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Views Introduction

• android.view.ViewStores layout and content for a specific rectangular area of the

screenHandles measuring and layout, drawing, focus change, scrolling,

and key/gesturesBase class for widgets

Text EditText InputMethod MovementMethod Button RadioButton Checkbox ScrollView

Donnerstag, 6. Mai 2010

Page 6: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Viewgroups Introduction

• android.view.ViewgroupContains and manages a subordinate set of views and other

viewgroupsBase class for layouts

Donnerstag, 6. Mai 2010

Page 7: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Tree-Structured UI Introduction

• An Activity in AndroidDefined using a tree of view and viewgroup nodes

• setContentView() methodCalled by the Activity to attach the tree to the screen for

rendering

Donnerstag, 6. Mai 2010

Page 8: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

LayoutParams Introduction

• Every viewgroup class uses a nested class that extends ViewGroup.LayoutParamsContains property types that defines the child’s size and position

Donnerstag, 6. Mai 2010

Page 9: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Programmatic UI Layout

• Programmatic UI LayoutConstructing and building the applications UI directly from source

codeDisadvantage

small changes in layout can have a big effect on the source code

Donnerstag, 6. Mai 2010

Page 10: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Upgrading UI to XML Layout

• XML-based LayoutInspired by web development model where the presentation of

the application’s UI is separated from the logicTwo files to edit

Java file – application logic XML file – user interface

Donnerstag, 6. Mai 2010

Page 11: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Upgrading UI to XML Layout

Donnerstag, 6. Mai 2010

Page 12: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Upgrading UI to XML Layout

Donnerstag, 6. Mai 2010

Page 13: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Donnerstag, 6. Mai 2010

Page 14: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Common Layout ObjectsImplementing a User Interface

Donnerstag, 6. Mai 2010

Page 15: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Common Layout Objects

FrameLayout LinearLayout

TableLayout AbsoluteLayout RelativeLayout

Donnerstag, 6. Mai 2010

Page 16: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

FrameLayoutCommon Layout Objects

• Simplest layout object • Intended as a blank reserved space on your screen that

you can later fill with a single object Example: a picture that you'll swap out

• All child elements are pinned to the top left corner of the screen

• Cannot specify a location for a child element

Donnerstag, 6. Mai 2010

Page 17: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Common Layout Objects

FrameLayout LinearLayout

TableLayout AbsoluteLayout RelativeLayout

Donnerstag, 6. Mai 2010

Page 18: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

LinearLayoutCommon Layout Objects

• Aligns all children in a single direction — vertically or horizontallyAll children are stacked one

after the other a vertical list will only have one

child per row (no matter how wide they are)

a horizontal list will only be one row high (the height of the tallest child, plus padding)

Donnerstag, 6. Mai 2010

Page 19: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Common Layout Objects

FrameLayout LinearLayout

TableLayout AbsoluteLayout RelativeLayout

Donnerstag, 6. Mai 2010

Page 20: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

TableLayoutCommon Layout Objects

• Positions its children into rows and columns

• Does not display border lines for their rows, columns, or cells

• Cells cannot span columns, as they can in HTML

Donnerstag, 6. Mai 2010

Page 21: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Common Layout Objects

FrameLayout LinearLayout

TableLayout AbsoluteLayout RelativeLayout

Donnerstag, 6. Mai 2010

Page 22: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

AbsoluteLayoutCommon Layout Objects

• Enables children to specify exact x/y coordinates to display on the screen (0,0) is the upper left cornervalues increase as you move down or to the right

• Overlapping elements are allowed (although not recommended)

• NOTE: It is generally recommended NOT to use AbsoluteLayout UNLESS you have

good reasons to use it It is because it is fairly rigid and does not work well with different device

displays

Donnerstag, 6. Mai 2010

Page 23: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Common Layout Objects

FrameLayout LinearLayout

TableLayout AbsoluteLayout RelativeLayout

Donnerstag, 6. Mai 2010

Page 24: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

RelativeLayoutCommon Layout Objects

• Lets children specify their position relative to each other (specified by ID), or to the parent

Donnerstag, 6. Mai 2010

Page 25: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Important Layout Paramters

Layout-Height: fill_parent, wrap_content, Pixels

Layout-Width: fill_parent, wrap_content, Pixels

Id: @+id/my_variable

Min-Height, Max-Height...

Min-Width, Max-Width

Allgemein:

Speziell:EditText Input type text, textEmailAddress, number,

numberDecimal

TextView, Button, EditText

Text @string/resource_id

TextView Text color, Text size

Donnerstag, 6. Mai 2010

Page 26: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Online Reference

http://developer.android.com/guide/tutorials/views/index.html

Donnerstag, 6. Mai 2010

Page 27: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Hooking into a screen elementImplementing a User Interface

Donnerstag, 6. Mai 2010

Page 28: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Hooking into a Screen Element

Text field

Button

Donnerstag, 6. Mai 2010

Page 29: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Hooking into a Screen Element

Donnerstag, 6. Mai 2010

Page 30: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

@+id syntax:Creates a resource number in the R class (R.java file) if one doesn't exist, or uses it if it does exist.

Any String value(no spaces)

Hooking into a Screen Element

Donnerstag, 6. Mai 2010

Page 31: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Hooking into a Screen Element

Donnerstag, 6. Mai 2010

Page 32: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Hooking into a Screen Element

Donnerstag, 6. Mai 2010

Page 33: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Hooking into a Screen Element

Donnerstag, 6. Mai 2010

Page 34: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Listening for UI Notifications

Donnerstag, 6. Mai 2010

Page 35: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Resource Folders and LocalizationImplementing a User Interface

Donnerstag, 6. Mai 2010

Page 36: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Resource Folders

Donnerstag, 6. Mai 2010

Page 37: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Resource Folders

• Folder structure is automatically parsed into Resource-File

• Do not modify this file!

37

Donnerstag, 6. Mai 2010

Page 38: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Resource Folders

• Separate storage of Strings and Graphics • Makes it easier to modify software parts• Resources are accessed via „R.java“

38

Donnerstag, 6. Mai 2010

Page 39: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Resource Folders

39

Donnerstag, 6. Mai 2010

Page 40: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Localization

• Creating folders for other languages does not need any code change

• Watch the application size!

40

Donnerstag, 6. Mai 2010

Page 41: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Localization

41

Donnerstag, 6. Mai 2010

Page 42: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Localization

• May be used for other device specific things as wellCountryScreen dimensionsScreen orientationTouchscreen type (finger, stylus)and many more

42

Donnerstag, 6. Mai 2010

Page 43: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Applying a Theme to your application Implementing a User Interface

Donnerstag, 6. Mai 2010

Page 44: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Applying a Theme to Your Application

• Default theme: android.R.style.Themehttp://developer.android.com/reference/android/R.style.html

• Two ways to set the themeAdding the theme attribute in AndroidManifest.xml

Calling setTheme() inside the onCreate() method

Donnerstag, 6. Mai 2010

Page 45: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Editing AndroidManifest.xmlApplying a Theme to Your Application

• Adding the theme attribute in AndroidManifest.xml

Donnerstag, 6. Mai 2010

Page 46: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Calling setTheme()Applying a Theme to Your Application

• Calling setTheme() inside the onCreate() method

Donnerstag, 6. Mai 2010

Page 47: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Theme_Black Theme_Light

Donnerstag, 6. Mai 2010

Page 48: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

ExerciseImplementing a User Interface

Donnerstag, 6. Mai 2010

Page 49: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Exercise

• Chatting with Myself Application Components

Image

Text that displays the Name Drop down box that displays the status

o Availableo Busy

o Away

Text Area that displays messageso Format for the output is

□ ChatterName:The Message

Text Field where the user can type the message

Send Buttono When Pressed

□ Message typed on the text field is displayed on the text area

□ Text field is cleared

• Any improvements on the design or additional functionality is encouraged

Donnerstag, 6. Mai 2010

Page 50: Praktikum Entwicklung von Mediensystemen mit Android · Praktikum Entwicklung von Mediensystemen mit Android Implementing a User Interface Donnerstag, 6. Mai 2010. Outline • Introduction

Fragen?Viel Spaß!

Donnerstag, 6. Mai 2010