Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di...
-
Upload
madeleine-anthony -
Category
Documents
-
view
221 -
download
2
Transcript of Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di...
![Page 1: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/1.jpg)
Programming with Android: Layouts, Widgets and Events
Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione
Università di Bologna
![Page 2: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/2.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events 2
Outline
Event Management: Event Listeners
Widget: examples
Widget: definition
ViewGroup: examples
ViewGroup: definition
Components of an Activity
Event Management: Event Handlers
![Page 3: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/3.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events 3
Android Applications Design
Developing an Android Application means using in a proper way the Android basic components …
ActivityActivity
LayoutLayout ViewsViewsFragmentFragment
IntentIntent
ServiceService BroadcastReceiverBroadcastReceiver
ContentProvidersContentProviders
![Page 4: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/4.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events4
Android: Views and Layouts
Components of the User Interface (UI) of an ActivityComponents of the User Interface (UI) of an Activity
ViewGroupViewGroup ViewView
View container Responsible for placing
other Views on the display Every layout must extend a
ViewGroup
Basic component of the UI Can handle/produce
events Every new UI component
must extend a View
![Page 5: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/5.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events5
Android: ViewGroups
ViewGroup define the placement of the Views.ViewGroup define the placement of the Views.
Defined in Java code (within the Activity file)
Defined in XML (layout file)
Use XML tags to place a ViewGroup
Place a View within a ViewGroup using these XML attributes
android:layout_width
android:layout_height } match_parent|wrap_content
![Page 6: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/6.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events6
<?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" > <Button
android:id="@+id/button1"
android:layout_width=”match_parent"
android:layout_height="wrap_content"
android:text="@string/buttonString1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonString2" />
</LinearLayout>
ACTIVITY_MAIN.XML
Android: ViewGroups
![Page 7: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/7.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events7
<?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" > <Button
android:id="@+id/button1"
android:layout_width=”match_parent"
android:layout_height="wrap_content"
android:text="@string/buttonString1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height=”match_parent"
android:text="@string/buttonString2" />
</LinearLayout>
ACTIVITY_MAIN.XML
Android: ViewGroups
![Page 8: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/8.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events8
A Layout can be declared within another Layout
List of most common Layouts provided by Android List of most common Layouts provided by Android
Name XML Tag Description
LinearLayout <LinearLayout></LinearLayout>
arrange Views by aligning them on a single row or column
RelativeLayout <RelativeLayout></RelativeLayout>
arrange Views through relative positions
TableLayout <TableLayout></TableLayout>
arrange Views into rows and columns
FrameLayout <FrameLayout></FrameLayout>
arrange a single View within a Layout
AbsoluteLayout <AbsoluteLayout></AbsoluteLayout>
arrange Views through absolute positions
Android: ViewGroups
![Page 9: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/9.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events9
A Layout can be declared within another Layout
List of most common Layouts provided by Android List of most common Layouts provided by Android
Name XML Tag Description
LinearLayout <LinearLayout></LinearLayout>
arrange Views by aligning them on a single row or column
RelativeLayout <RelativeLayout></RelativeLayout>
arrange Views through relative positions
TableLayout <TableLayout></TableLayout>
arrange Views into rows and columns
FrameLayout <FrameLayout></FrameLayout>
arrange a single View within a Layout
AbsoluteLayout <AbsoluteLayout></AbsoluteLayout>
arrange Views through absolute positions
Android: ViewGroups
![Page 10: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/10.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events10
LinearLayout view group that aligns all children in a single direction, vertically or horizontally.LinearLayout view group that aligns all children in a single direction, vertically or horizontally.
Orientation can be declared through XML tagandroid:orientation= HORIZONTAL|VERTICAL
Orientation can also be declared in Java through setOrientation(int orientation)
Views has also other two attributes:
gravity
weigth How much space is assigned to the View
Align the View with its parent
Android: ViewGroups
![Page 11: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/11.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events11
ORIENTATIONVERTICAL
ORIENTATIONVERTICAL
ORIENTATIONHORIZONTALORIENTATIONHORIZONTAL
Android: ViewGroups
![Page 12: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/12.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events12
<?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" > <!-- Also horizontal
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonString1" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonString2" />
</LinearLayout>
Android: ViewGroups
![Page 13: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/13.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events13
For each View in a LinearLayout, we can set the
android:weight XML property (integer value)
Importance of a View, how much it can expandImportance of a View, how much it can expand
<LinearLayout><Button …android:layout_width=match_parent android:weight=1/><Button … android:layout_width=match_parent android:weight=1/></LinearLayout>
Android: ViewGroups
![Page 14: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/14.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events14
For each View in a LinearLayout, we can set the
android:weight XML property (integer value)
Importance of a View, how much it can expandImportance of a View, how much it can expand
<LinearLayout><Button …android:layout_width=match_parent android:weight=1/><Button … android:layout_width=match_parent android:weight=2/></LinearLayout>
Android: ViewGroups
![Page 15: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/15.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events15
For each View in a LinearLayout, we can set the
layout_gravity XML property
Align a View with its parent (LinearLayout)Align a View with its parent (LinearLayout)
<LinearLayout><Button …android:layout_width=match_parentandroid:weigth=1/><Button … android:layout_width=match_parent android:layout_gravity=“center_vertical”android:weight=2/></LinearLayout>
Android: ViewGroups
![Page 16: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/16.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events16
A Layout can be declared within another Layout
List of most common Layouts provided by Android List of most common Layouts provided by Android
Name XML Tag Description
LinearLayout <LinearLayout></LinearLayout>
arrange Views by aligning them on a single row or column
RelativeLayout <RelativeLayout></RelativeLayout>
arrange Views through relative positions
TableLayout <TableLayout></TableLayout>
arrange Views into rows and columns
FrameLayout <FrameLayout></FrameLayout>
arrange a single View within a Layout
AbsoluteLayout <AbsoluteLayout></AbsoluteLayout>
arrange Views through absolute positions
Android: ViewGroups
![Page 17: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/17.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events17
RelativeLayout View group that displays all Views based on relative positions.RelativeLayout View group that displays all Views based on relative positions.
RELATIVE= COMPARED to the PARENT LAYOUTRELATIVE= COMPARED to the PARENT LAYOUT
android:alignParentBottom=“true|false”android:alignParentTop=“true|false”android:alignParentLeft=“true|false”android:alignParentRight=“true|false”android:alignParentStart=“true|false”android:alignParentEnd=“true|false”…
Android: ViewGroups
![Page 18: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/18.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events18
RelativeLayout View group that displays all Views based on relative positions.RelativeLayout View group that displays all Views based on relative positions.
RELATIVE= COMPARED to SIBLING VIEWsRELATIVE= COMPARED to SIBLING VIEWs
android:toLeftOf= IDandroid:toRightOf= IDandroid:toStartOf= IDandroid:toEndOf= ID…
XML Identifierof the View
used as referencepoint
XML Identifierof the View
used as referencepoint
Android: ViewGroups
![Page 19: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/19.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events19
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent" >
<EditText
android:id="@+id/username" android:text="username"
android:inputType="text"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/usernameLabel" >
</EditText>
<TextView
android:id="@+id/usernameLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/username"
android:text="Username" />
CONTINUE
ACTIVITY_MAIN.XML
Android: ViewGroups
![Page 20: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/20.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events20
<EditText
android:id="@+id/password" android:text="password"
android:inputType="textPassword"
android:layout_below="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/username"
android:layout_alignParentRight="true"
android:layout_toRightOf="@+id/usernameLabel" >
</EditText>
<TextView
android:id="@+id/passwordLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/password"
android:text="Password" />
</RelativeLayout>
ACTIVITY_MAIN.XML
Android: ViewGroups
![Page 21: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/21.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events21
A Layout can be declared within another Layout
List of most common Layouts provided by Android List of most common Layouts provided by Android
Name XML Tag Description
LinearLayout <LinearLayout></LinearLayout>
arrange Views by aligning them on a single row or column
RelativeLayout <RelativeLayout></RelativeLayout>
arrange Views through relative positions
TableLayout <TableLayout></TableLayout>
arrange Views into rows and columns
FrameLayout <FrameLayout></FrameLayout>
arrange a single View within a Layout
AbsoluteLayout <AbsoluteLayout></AbsoluteLayout>
arrange Views through absolute positions
Android: ViewGroups
![Page 22: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/22.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events22
TableLayout View group that arranges all Views into rows and columns (as an HTML table).TableLayout View group that arranges all Views into rows and columns (as an HTML table).
1. Consists of a list of TableRaw objects, each defyining a raw of the Table.
2. The width of a column is defined by the row with the widest cell in that column.
3. Cells can be empty, or can span multiple columns (like in HTML).
4. Border lines of the cells are not displayed.
PROPERTIES
Android: ViewGroups
![Page 23: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/23.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events23
TableLayout View group that arranges all Views into rows and columns (as an HTML table).TableLayout View group that arranges all Views into rows and columns (as an HTML table).
android:layout_columnandroid:layout_spanandroid:collapsecolumnandroid:shrinkColumnsandroid:stretchColumns
ADDITIONAL XML attributes
} Apply only towidth
layout_width is always WRAP_CONTENTlayout_height is WRAP_CONTENT (default)
Android: ViewGroups
![Page 24: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/24.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events24
<?xml version="1.0" encoding="utf-8"?>
<TableLayout android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android=schemas.android.com/apk/res/android
android:id="@+id/tableLayout”>
<TableRow android:layout_width="wrap_content" android:layout_height="wrap_content“ android:id="@+id/firstRow">
<Button
android:id="@+id/button1“
android:layout_width="wrap_content“
android:layout_height="wrap_content“
android:text="Button" />
<Button android:id="@+id/button2“
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button" />
<Button android:id="@+id/button3"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:text="Button" />
</TableRow>
ACTIVITY_MAIN.XML
CONTINUE
Android: ViewGroups
![Page 25: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/25.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events
<TableRow
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/secondRow">
<Button
android:layout_column="1"
android:layout_span="2"
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button">
</Button>
</TableRow>
</TableLayout>
25
ACTIVITY_MAIN.XML
Android: ViewGroups
![Page 26: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/26.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events26
A Layout can be declared within another Layout
List of most common Layouts provided by Android List of most common Layouts provided by Android
Name XML Tag Description
LinearLayout <LinearLayout></LinearLayout>
arrange Views by aligning them on a single row or column
RelativeLayout <RelativeLayout></RelativeLayout>
arrange Views through relative positions
TableLayout <TableLayout></TableLayout>
arrange Views into rows and columns
FrameLayout <FrameLayout></FrameLayout>
arrange a single View within a Layout
AbsoluteLayout <AbsoluteLayout></AbsoluteLayout>
arrange Views through absolute positions
Android: ViewGroups
![Page 27: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/27.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events27
FrameLayout Block out an area on the screen to display a single item (i.e. a single View).FrameLayout Block out an area on the screen to display a single item (i.e. a single View).
It should be used to display a single View within the Layout
Multiple views can be controlled through android:layout_gravity
AbsoluteLayout Arrange Views on the screen by specifying absolute x-y positions of each View.AbsoluteLayout Arrange Views on the screen by specifying absolute x-y positions of each View.
Deprecated, since it is dependant of the screen resolution
Android: ViewGroups
![Page 28: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/28.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events28
Android: Views and Layouts
Components of the User Interface (UI) of an ActivityComponents of the User Interface (UI) of an Activity
ViewGroupViewGroup ViewView
View container. Responsible for placing
other Views on the display Every layout must extend a
ViewGroup
Basic component of the UI Can handle/produce
events Every new UI component
must extend a View
![Page 29: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/29.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events 29
Android: Views objects
Views basic building blocks for user interface componentsViews basic building blocks for user interface components
Rectangular area of the screen Responsible for drawing Responsible for event handling
GoogleMap WebView Widgets topic of the day … User-defined Views
EXAMPLEs of VIEWS objects:EXAMPLEs of VIEWS objects:
![Page 30: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/30.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events 30
Android: Views objects
Widget Pre-defined interactive UI components (android.view.widgets)Widget Pre-defined interactive UI components (android.view.widgets)
TextView
EditText
Button
ToggleButton
Spinner
DataPicker
![Page 31: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/31.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 31
Widgets can be defined in the XML layout filesWidgets can be defined in the XML layout files
Widgets: Java and XML code
< TextViewandroid:id="@+id/textLabel”android:layout_width="match_parent"
android:layout_height="wrap_content”android:visibility="visible”android:enabled="true”android:scrollbars="vertical”android:text=“Hello World”
/>
PROPERTIES, defined through android:… attributesPROPERTIES, defined through android:… attributes
![Page 32: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/32.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 32
Widgets can be defined in XML and accessed from JavaWidgets can be defined in XML and accessed from Java
Widgets: Java and XML code
< TextView android:id="@+id/name1” />
public TextView text;text=(TextView)findViewById(R.id.name1);
JAVA
XML
CAST REQUIREDCAST REQUIREDpublic TextView text;text=new TextView();
![Page 33: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/33.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 33
Each Widget can have a focus and a visibility, based on the user’s interaction.
The user can force a focus to a specific component through the requestFocus() method.
The user can modify the visibility of a specific component through the setVisibility(int) method.
Widgets: Java and XML code
public TextView text;text=(TextView) findViewById(R.id.name1);text.setVisibility(true)text.requestFocus();
![Page 34: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/34.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 34
Widgets are organized on a hierarchy of classes …
Widgets: Hierarchy of the classes …
ViewView
TextViewTextView
EditViewEditView
ImageViewImageView
ButtonButton CheckedTextViewCheckedTextView
AutoCompleteTextView
AutoCompleteTextView CompoundButtonCompoundButton
CheckBoxCheckBox RadioButtonRadioButton ToggleButtonToggleButton
![Page 35: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/35.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events35
XML tags: <TextView> </TextView>
Could be filled with strings or HTML markups Not directly editable by users Usually used to display static informations
Widgets: TextView
<TextView android:text=”@string/textWelcome" android:id="@+id/textLabel" android:layout_width="wrap_content" android:layout_height="wrap_content”/>
![Page 36: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/36.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 36
Methods to place some texts inside a TextView …
public void setText(CharSequence text) public CharSequence getText()public void setSingleLine(boolean singleLine)public void setHorizontallyScrolling(boolean enable)public void setLines(int lines)public void setEllipsize(TextUtils.TruncateAt where)public void setHints(CharSequence hints)
Widgets: TextView methods
TextUtils.TruncateAt.END TextUtils.TruncateAt.MARQUEE TextUtils.TruncateAt.MIDDLE TextUtils.TruncateAt.START
![Page 37: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/37.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 37
Simple strings could be linkified automatically. How? Pick a normal string, and use Linkify.addLinks() to define
the kind of links to be created. Could manage: Web addresses, Emails, phone numbers, Maps
Widgets: Linkify elements
TextView textView=(TextView) findViewById(R.id.output); Linkify.addLinks(textView, Linkify.WEB_URLS |
Linkify.WEB_ADDRESSES | Linkify.PHONE_NUMBERS );
Linkify.addLinks(textView, Linkify.ALL);
It is possible to define custom Linkify objects. ..
![Page 38: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/38.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events38
XML tags: <EditText> </EditText>
Similar to a TextView, but editable by the users An appropriate keyboard will be displayed
Widgets: EditText
<EditText android:text=”@string/textDefault" android:id="@+id/editText”
android:inputType= “textCapSentences” | “textCapWords” |
“textAutoCorrect” | “textPassword” |
“textMultiLane” />
![Page 39: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/39.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 39
CompoundButton: Button + state (checked/unchecked)
Widgets: Button
XML tags: <Button> </Button>
Subclass of a TextView, but not directly editable by usersCan generate events related to click, long click, etc
<Button android:text="@string/textButton" android:id="@+id/idButton" android:background="@color/blue”/>
<selector><item android:color="#ff819191” android:state_pressed="true”></item></selector>
res/color/blue.xml
![Page 40: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/40.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 40
Widgets: Button and CompoundButton
checkBox CompoundButton
XML tags: <checkBox>
<checkBox android:layout_width="wrap_content” android:layout_height="wrap_content”android:id="@+id/buttonCheck”android:text="CheckBox”android:checked="true”/>
![Page 41: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/41.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 41
Widgets: Button and CompoundButton
checkBox CompoundButton
public boolean isChecked():Returns true if the button is
checked, false otherwise.
public boolean setChecked(bool)
Listener: onCheckedChangeListener
![Page 42: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/42.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 42
Widgets: Button and CompoundButton
radioButton CompoundButton
XML tags: <RadioButton>
<RadioButton android:layout_width="wrap_content” android:layout_height="wrap_content”android:id="@+id/buttonRadio” android:text="ButtonRadio”android:checked="true”/>
![Page 43: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/43.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 43
Widgets: Button and CompoundButton
radioButton CompoundButton
Define multiple (mutual-exclusive) options through a <RadioGroup> tag.
Only one button can be checked within the same RadioGroup.
Listener:OnCheckedChangeListener
![Page 44: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/44.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 44
Widgets: Button and CompoundButton
<RadioGroup android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical”> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonRadio1" android:text="Option 1" android:checked="true” />
<RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonRadio2" android:text="Option 2” /> </RadioGroup>
![Page 45: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/45.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 45
Widgets: Button and CompoundButton
toggleButton CompoundButton
It can assume only 2 states: checked/unchecked
Different labels for the states with: android:textOn and android:textOff XML attributes.
Listener:OnCheckedChangeListener
![Page 46: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/46.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 46
Widgets: Button and CompoundButton
toggleButton CompoundButton
XML tags: <ToggleButton>
<ToggleButton android:layout_width="wrap_content” android:layout_height="wrap_content”android:id="@+id/toggleButtonId”android:textOn="Button ON”android:textOff="Button OFF”android:checked="false”/>
![Page 47: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/47.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 47
Widgets: Spinners
Spinner component
XML tags: <Spinner>
Provides a quick way to select values from a specific set.
The spinner value-set can be defined in XML (through the entries tag) or through the SpinnerAdapter in Java
Listener:OnItemSelectedListener
![Page 48: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/48.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 48
Widgets: Spinners
Spinner component
XML tags: <Spinner>
<Spinner android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/spinnerId" android:entries="@array/stringOptions">/>
<resources> <string-array name="stringOptions"> <item>Option 1</item> <item>Option 2</item> <item>Option 3</item> <item>Option 4</item></string-array></resources> res/values.xml
![Page 49: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/49.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 49
Widgets: Button and CompoundButton
DataPicker component
XML tags: <DataPicker>
<DatePicker android:layout_width="wrap_content” android:layout_height="wrap_content”android:id=“@+id/datePickerId”android:endYear="1990”android:startYear="2014”android:maxDate="10/10/2014”/>
![Page 50: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/50.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 50
ImageView: subclass of View object.
Some methods to manipulate an image: void setScaleType(enum scaleType)
void setAlpha(double alpha)
void setColorFilter(ColorFilter color)
Widgets: ImageView
CENTER, CENTER_CROP, CENTER_INSIDE, FIT_CENTER, FIT_END, FIT_START, FIT_XY, MATRIX
![Page 51: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/51.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 51
Widgets: ImageView
ImageView component
XML tags: <ImageView>
<ImageView android:layout_width="wrap_content” android:layout_height="wrap_content”android:id="@+id/imageId”android:src="@drawable/android”/>
Source: android.jpg in drawable/
![Page 52: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/52.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 52
How to handle the events generated by a View?How to handle the events generated by a View?
Views and Events
1. Directly from XML
2. Through Event Listeners (general, recommended)
3. Through Event Handlers (general)
Views/Widgets are interactive components Upon certain action from the user, an appropriate event will be fired
Views/Widgets are interactive components Upon certain action from the user, an appropriate event will be fired
click, long click, focus, items selected, items checked,drag, …
![Page 53: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/53.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 53
For a limited set of components, it is possible to manage the events through callbacks indicated in the XML layout.
Views and Events
<Buttonandroid:text="@string/textButton”android:id="@+id/idButton” android:onClick=”doSomething”/>
public void doSomething(View w) {
// Code to manage the click event}
XML Layout File
Java code
![Page 54: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/54.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 54
How to handle the events generated by a View?How to handle the events generated by a View?
Views and Events
1. Directly from XML
2. Through Event Listeners (general, recommended)
3. Through Event Handlers (general)
Views/Widgets are interactive components Upon certain action from the user, an appropriate event will be fired
Views/Widgets are interactive components Upon certain action from the user, an appropriate event will be fired
click, long click, focus, items selected, items checked,drag, …
![Page 55: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/55.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 55
Each listener handles a single event…
Each listener contains a single callback method …
The callback is invoked at occurrence of the event.
Views and Events
ButtonButton
interface OnClickListener
public abstract void onClick(View v) {}
Each View contains a collection of nested interfaces (listeners). Each View contains a collection of nested interfaces (listeners).
![Page 56: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/56.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events56
Views and Events: ActionListener
public class ExampleActivity extends Activity implements OnClickListener {
…}
To handle events through the ActionListener mechanism:To handle events through the ActionListener mechanism:
1. Make the Activity implement the Listener Interface corrisponding to the Event generated by the View
1. Make the Activity implement the Listener Interface corrisponding to the Event generated by the View
(Click Event in this example)
![Page 57: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/57.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events57
Views and Events: ActionListener
public void onClick(View w) {…// Place here the code to manage the event
}
To handle events through the ActionListener mechanism:To handle events through the ActionListener mechanism:
2. Implement the abstract method of the Listener this will be the callback method when the Event is fired2. Implement the abstract method of the Listener this will be the callback method when the Event is fired
(Click Event in this example)
![Page 58: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/58.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events58
Views and Events: ActionListener
Button mybutton=(Button) findViewById(R.id.button1);
mybutton.setOnClickListener(this);
To handle events through the ActionListener mechanism:To handle events through the ActionListener mechanism:
3. Associate the ActionListener to the View through themethod setEVENTListener(this)
3. Associate the ActionListener to the View through themethod setEVENTListener(this)
(Click Event in this example)
![Page 59: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/59.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 59
interface OnClickListener
abstract method: onClick()interface OnLongClickListener
abstract method: onLongClick()interface OnFocusChangeListener
abstract method: onFocusChange()interface OnKeyListener
abstract method: onKey()interface OnCheckedChangeListener
abstract method: onCheckedChanged()
Views and Events: ActionListener
interface OnItemSelectedListener
abstract method: onItemSelected() interface OnCheckedChangeListener
abstract method: onCheckedChanged() interface OnItemSelectedListener
abstract method: onItemSelected() interface OnTouchListener
abstract method: onTouch() interface OnCreateContextMenuListener
abstract method: onCreateContextMenu()
LIST OF ACTIONLISTENER INTERFACESLIST OF ACTIONLISTENER INTERFACES
![Page 60: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/60.jpg)
Luca Bedogni, Marco Di Felice – Events and Widgets(c) Luca Bedogni 2012
60
Can be done through performEVENT() eventsThe corresponding listener (if set) will be invoked…
Views and Events: ActionListener
…Button button=(Button)findViewById(R.id.buttonNext);button.performClick();…
// Callback methodpublic void onClick(View v) {
….}
// Callback methodpublic void onClick(View v) {
….}
It is also possible to fire an event directly from the Java code (without user’s interaction) … useful for debugging!It is also possible to fire an event directly from the Java code (without user’s interaction) … useful for debugging!
![Page 61: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/61.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 61
How to handle the events generated by a View?How to handle the events generated by a View?
Views and Events
1. Directly from XML
2. Through Event Listeners (general, recommended)
3. Through Event Handlers (general)
Views/Widgets are interactive components Upon certain action from the user, an appropriate event will be fired
Views/Widgets are interactive components Upon certain action from the user, an appropriate event will be fired
click, long click, focus, items selected, items checked,drag, …
![Page 62: Programming with Android: Layouts, Widgets and Events Luca Bedogni Marco Di Felice Dipartimento di Scienze dell’Informazione Università di Bologna.](https://reader036.fdocuments.in/reader036/viewer/2022062422/56649ee65503460f94bf5bfb/html5/thumbnails/62.jpg)
Luca Bedogni, Marco Di Felice - Programming with Android – ViewGroups, Views and Events(c) Luca Bedogni 2012 62
Event Handlers Some Views have callback methods to handle specific events (example: When a Button is touched onTouchEvent() called)
Event Handlers Some Views have callback methods to handle specific events (example: When a Button is touched onTouchEvent() called)
Views and Events: Event Handlers
PROBLEM: to intercept an event, you must extend the View class and override the callback method … not very practical!
Events Handlers are used for custom (user-defined) components …
Events Listeners are used for common View/Widget components …
Events Handlers are used for custom (user-defined) components …
Events Listeners are used for common View/Widget components …
IN PRACTICE: