SlideShare a Scribd company logo
1 of 67
User Interface
TK2323 Mobile Programming
Sem 1 2017/2018
Lam Meng Chun
lammc@ukm.edu.my (H-04-10)
Outline
View & Viewgroup Layout
▹Linear Layout
▹Relative Layout
▹Constraint Layout
Design for Multiple Screens
▸Px,dp,sp
▸Smallest-width Qualifier
▸Orientation Qualifiers
2
Attributes
▸ID
▸layout_width
▸layout_height
▸layout_margin
▸padding
▸background
▸layout_gravity
▸gravity
▸textSize
▸layout_weight
User Interface3
Viewgroup/ View
4
View
▹All user interface elements in an Android app are built
using View and ViewGroup objects.
▹A View is an object that draws something on the screen
that the user can interact with.
▸Button
▸EditText
▸TextView
5
Viewgroup
6
A ViewGroup is an object that holds other View (and ViewGroup)
objects in order to define the layout of the interface.
▸Relative Layout
▸Linear Layout
▸Constraint Layout
▸Grid Layout
Viewgroup
7
Layout Group
8
Layout
9
Layout
10
Linear Layout
11 Horizontal Vertical
Linear Layout
12
13
Linear Layout
Exercise
▹LinearLayout (_______)
▸TextView (How to…)
▸LinearLayout (_______)
⬩TextView (Game)
⬩TextView (Education)
⬩TextView (Sport)
13
Relative Layout
▹RelativeLayout is a view group that displays child views in
relative positions.
▹The position of each view can be specified as relative to
sibling elements (such as to the left-of or below another
view) or in positions relative to the parent RelativeLayout
area (such as aligned to the bottom, left or center).
14
Relative
Layout
15
Relative to parent Relative to other children
Relative Layout (Relative to
parent)
▹Relative to parent
▸ android:layout_alignParentLeft="true"
▸ android:layout_alignParentRight=“false“
▸ android:layout_alignParentTop=“true“
▸ android:layout_alignParentBottom=“false“
16
Relative Layout (Relative to
parent)
▹Relative to child
▸android:layout_below="@+id/…"
▸android:layout_above="@+id/…"
▸android:layout_alignLeft="@+id/…"
▸android:layout_alignRight="@+id/…"
▸android:layout_alignBottom="@+id/…"
▸android:layout_alignTop="@+id/…“
▸android:layout_toLeftOf="@+id/…"
▸android:layout_toRightOf="@+id/…"
17
Constraint Layout
▹ConstraintLayout allows you to create large and complex
layouts with a flat view hierarchy (no nested view groups).
▹ It's similar to RelativeLayout in that all views are layed
out according to relationships between sibling views and
the parent layout, but it's more flexible than RelativeLayout
and easier to use with Android Studio's Layout Editor.
18
Constraint
Layout
19
https://developer.android.com/training/constraint-
layout/index.html#add-constraintlayout-to-your-project
Constraint Layout
▹ Wrap Content: The view expands exactly as needed
to fit its contents.
▹ Fixed: You specify the dimension in the text box
below or by resizing the view in the editor.
20
Constraint Layout
▹ Any Size: The view expands exactly as needed to
match the constraints. The actual value is 0dp because the
view has no desired dimensions, but it resizes as needed to
meet the constraints. However, if the given dimension has
only one constraint, then the view expands to fit its
contents. Another way to think of it is "match constraints"
(instead of match_parent) because it expands the view as
much as possible after accounting for the limits of each
constraint and its margins.
21
22
Relative
Layout
Exercise
▹Relative to parent
▸ android:layout_alignParentLeft=“___"
▸ android:layout_alignParentRight=“____“
▸ android:layout_alignParentTop=“____“
▸ android:layout_alignParentBottom=“____“
22
Layouts
23
Layout
▹A layout defines the visual structure for a user interface,
such as the UI for an activity or app widget. You can declare
a layout in two ways:
24
Layout
Declare UI elements in XML.
Android provides a
straightforward XML
vocabulary that corresponds
to the View classes and
subclasses, such as those for
widgets and layouts.
Instantiate layout elements
at runtime.
Your application can create
View and ViewGroup objects
(and manipulate their
properties) programmatically.
25
Project UI
source code
(XML file)
26
Write XML Resource :
Structure
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a TextView" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello, I am a Button" />
</LinearLayout>
27
XML Resource
<Button
android:id="@+id/main_btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="Send" />
28
▹What’s the name of the XML element?
▹List all attribute names (Not attribute value)
▹Where is the open tag and close tag?
Project
source code
(java file)
29
Load the XML Layout
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// load the UI’s XML Layout
setContentView(R.layout.activity_main_layout);
}
30
What happened when we call setContentView() method
https://www.youtube.com/watch?v=j-23-3mYno0&feature=youtu.be
Create an instance of the
view object
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_layout);
// initialize the Button with View’s ID
Button myButton = (Button) findViewById(R.id.main_btn_send);
}
31
Create using Java Code32
Attributes
33
34
Sr.No View & description Example Value
layout_width
Specifies the width of the View or ViewGroup
wrap_content
match_parent
layout_height Specifies the height of the View or ViewGroup
wrap_content
match_parent
layout_margin
Specifies extra space on side of the View or ViewGroup
8dp
padding Sets the padding, in pixels, of all four edges. 8dp
background A drawable to use as the background/ color. #000000
layout_gravity
Specifies how child Views are positioned
Center, Bottom, Top
Left, Right
text Text to display in view @string/foo
textSize Size of the text 21sp
layout_weight
Specifies how much of the extra space in the layout
should be allocated to the View
1
Layout width and height
▹Any View object may have an integer ID associated with it,
to uniquely identify the View within the tree.
▹When the application is compiled, this ID is referenced as
an integer, but the ID is typically assigned in the layout
XML file as a string, in the id attribute.
35
Layout width and height
▹width and height of a view can be:
▸wrap_content : exactly large enough to fit the widget's
content
▸match_parent : as wide or tall as 100% of the screen or
layout
▸a specific fixed width such as 64dp (not usually
recommended)
dp = device pixels; sp = scaling pixels
36
Layout width
and height
37
Padding and Margin
Padding
is for inside/within
components
Margin
is to be applied for the
on-outside of the
components.
38
Padding39
Margin40
Layout
Gravity
41
android:layout_gravity
sets the gravity of the View
or Layout in its parent.
Layout
Gravity
42
Layout
Weight
43
Layout
Weight
44
android:layout_width
Set to 0 (Horizontal)
android:layout_height
Set to 0 (Vertical)
45
Linear Layout
Exercise
▹Attribute
▸Background
▸Weight
▸Width
▸textAlignment
45
Design for Multiple
Screens
(Density)
46
Units
Pixels:
The exact number of
'dots' both
horizontally and
vertically that make up
the file.
▸This is
the actual resolution of
the file.
DPI (Dots per inch):
The number of 'dots'
or pixels per each inch
of a printed or scanned
document.
47
Density-independent
pixel (dp)
A virtual pixel unit that
you should use when
defining UI layout, to
express layout
dimensions or position
in a density-
independent way.
▸px = dp * (dpi / 160)
▸240 dpi screen, 1 dp
equals 1.5 physical
pixels
Units of Measurement48
Sr.No Unit & description
1 dp
Density-independent pixel.
1 dp is equivalent to one pixel on a 160 dpi screen.
2 sp
Scale-independent pixel.
This is similar to dp and is recommended for specifying font
sizes.
3 px
Pixel. Corresponds to actual pixels on the screen
Pixel
49
▹(px units), so the views are physically larger on a low-density
screen and smaller on a high-density screen.
▹This is because although the actual screen sizes may be the
same, the high-density screen has more pixels per inch (the
same amount of pixels fit in a smaller area).
Dp
50
▹the layout dimensions are specified in density-independent
pixels (dp units). Because the baseline for density-independent
pixels is a medium-density screen, the device with a medium-
density screen looks the same.
▹For the low-density and high-density screens, however, the
system scales the density-independent pixel values down and
up, respectively, to fit the screen as appropriate.
Dp
51
Dp
52
Design for Multiple Screens
▹In most cases, you can ensure density independence in
your application simply by specifying all layout dimension
values in density-independent pixels (dp units) or
with "wrap_content", as appropriate.
▹The system then scales bitmap drawables as appropriate
in order to display at the appropriate size, based on the
appropriate scaling factor for the current screen's density.
53
Design for Multiple Screens
▹However, bitmap scaling can result in blurry or
pixelated bitmaps, which you might notice in the above
screenshots.
▹To avoid these artifacts, you should provide alternative
bitmap resources for different densities.
▹For example, you should provide higher-resolution
bitmaps for high-density screens and the system will use
those instead of resizing the bitmap designed for medium-
54
Size and Orientation
▹Using new size qualifiers
▹The fundamental size of a screen, as indicated by the
shortest dimension of the available screen area.
▹Specifically, the device's smallestWidth is the shortest of
the screen's available height and width (you may also think
of it as the "smallest possible width" for the screen).
55
Size and Orientation
▹“sw” (smallest possible width)
▹Specifically, the device's smallestWidth is the shortest of
the screen's available height and width
▹The smallestWidth is a fixed screen size characteristic of
the device
56
Size and Orientation
▹the device's smallestWidth does not change when the
screen's orientation changes.
▹Thus, using sw<N>dp is a simple way to specify the overall
screen size available for your layout by ignoring the screen's
orientation
57
Size and Orientation
▹320dp: a typical phone screen (240x320 ldpi, 320x480
mdpi, 480x800 hdpi, etc).
▹480dp: a tweener tablet like the Streak (480x800 mdpi).
▹600dp: a 7” tablet (600x1024 mdpi).
▹720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
58
Size and Orientation
▹This means that devices whose smallest width is greater
than or equal to 600dp will select the layout-
sw600dp/main.xml (two-pane) layout, while smaller screens
will select the layout/main.xml (single-pane) layout
59
Size and
Orientation
60
Preparing Resources
▹A set of six generalized densities:
▸ldpi (low) ~120dpi
▸mdpi (medium) ~160dpi
▸hdpi (high) ~240dpi
▸xhdpi (extra-high) ~320dpi
▸xxhdpi (extra-extra-high) ~480dpi
▸xxxhdpi (extra-extra-extra-high) ~640dpi
61
Preparing Resources
▹Use wrap_content, fill_parent, or the dp unit for layout
dimensions
▹Do not use hard-coded pixel values in your application
code
62
Preparing Resources
▹To generate these images, you should start with your raw
resource in vector format and generate the images for each
density using the following size scale:
63
Preparing
Resources
64
▹This means that if you generate a 200x200 image
for xhdpi devices, you should generate the same
resource in 150x150 for hdpi, 100x100 for mdpi and
finally a 75x75 image for ldpi devices.
Mdpi = 200/2*1 , xxxhdpi=200/2*4
Design for
Multiple
Screens:
Useful Tool
65
▹http://romannurik.github.io/AndroidAssetStudio/index.html
Design for
Multiple
Screens:
Useful Tool
66
▹http://romannurik.github.io/AndroidAssetStudio/index.html
Exercise
67

More Related Content

Similar to User Interface Layout and Design

Responsive Web Designs
Responsive Web DesignsResponsive Web Designs
Responsive Web DesignsNusrat Khanom
 
Mobile Application Development -Lecture 07 & 08.pdf
Mobile Application Development -Lecture 07 & 08.pdfMobile Application Development -Lecture 07 & 08.pdf
Mobile Application Development -Lecture 07 & 08.pdfAbdullahMunir32
 
Android ui layout
Android ui layoutAndroid ui layout
Android ui layoutKrazy Koder
 
Best Practices for Android UI by RapidValue Solutions
Best Practices for Android UI by RapidValue SolutionsBest Practices for Android UI by RapidValue Solutions
Best Practices for Android UI by RapidValue SolutionsRapidValue
 
Application Development - Overview on Android OS
Application Development - Overview on Android OSApplication Development - Overview on Android OS
Application Development - Overview on Android OSPankaj Maheshwari
 
04 user interfaces
04 user interfaces04 user interfaces
04 user interfacesC.o. Nieto
 
Android 102 - Flow, Layouts and other things
Android 102 - Flow, Layouts and other thingsAndroid 102 - Flow, Layouts and other things
Android 102 - Flow, Layouts and other thingsKai Koenig
 
03 layouts & ui design - Android
03   layouts & ui design - Android03   layouts & ui design - Android
03 layouts & ui design - AndroidWingston
 
Android training day 3
Android training day 3Android training day 3
Android training day 3Vivek Bhusal
 
Tku-行動app開發管理實務-Android應用程式開發基礎
Tku-行動app開發管理實務-Android應用程式開發基礎Tku-行動app開發管理實務-Android應用程式開發基礎
Tku-行動app開發管理實務-Android應用程式開發基礎Xavier Yin
 
Get ready for new nexus devices
Get ready for new nexus devicesGet ready for new nexus devices
Get ready for new nexus devicesKetan Raval
 
Android_Bootcamp_PPT_GDSC_ITS_Engineering
Android_Bootcamp_PPT_GDSC_ITS_EngineeringAndroid_Bootcamp_PPT_GDSC_ITS_Engineering
Android_Bootcamp_PPT_GDSC_ITS_EngineeringShivanshSeth6
 
Responsive Web design _2013
Responsive Web design _2013 Responsive Web design _2013
Responsive Web design _2013 Suresh B
 
responsive web design 1_oct_2013
responsive web design  1_oct_2013 responsive web design  1_oct_2013
responsive web design 1_oct_2013 Suresh B
 
responsive web design
responsive web designresponsive web design
responsive web designSuresh B
 
View groups containers
View groups containersView groups containers
View groups containersMani Selvaraj
 
Android App Development - 04 Views and layouts
Android App Development - 04 Views and layoutsAndroid App Development - 04 Views and layouts
Android App Development - 04 Views and layoutsDiego Grancini
 
Design guidelines for android developers
Design guidelines for android developersDesign guidelines for android developers
Design guidelines for android developersQandil Tariq
 

Similar to User Interface Layout and Design (20)

Responsive Web Designs
Responsive Web DesignsResponsive Web Designs
Responsive Web Designs
 
Mobile Application Development -Lecture 07 & 08.pdf
Mobile Application Development -Lecture 07 & 08.pdfMobile Application Development -Lecture 07 & 08.pdf
Mobile Application Development -Lecture 07 & 08.pdf
 
Android ui layout
Android ui layoutAndroid ui layout
Android ui layout
 
Best Practices for Android UI by RapidValue Solutions
Best Practices for Android UI by RapidValue SolutionsBest Practices for Android UI by RapidValue Solutions
Best Practices for Android UI by RapidValue Solutions
 
Application Development - Overview on Android OS
Application Development - Overview on Android OSApplication Development - Overview on Android OS
Application Development - Overview on Android OS
 
04 user interfaces
04 user interfaces04 user interfaces
04 user interfaces
 
Android 102 - Flow, Layouts and other things
Android 102 - Flow, Layouts and other thingsAndroid 102 - Flow, Layouts and other things
Android 102 - Flow, Layouts and other things
 
03 layouts & ui design - Android
03   layouts & ui design - Android03   layouts & ui design - Android
03 layouts & ui design - Android
 
Android training day 3
Android training day 3Android training day 3
Android training day 3
 
Tku-行動app開發管理實務-Android應用程式開發基礎
Tku-行動app開發管理實務-Android應用程式開發基礎Tku-行動app開發管理實務-Android應用程式開發基礎
Tku-行動app開發管理實務-Android應用程式開發基礎
 
Get ready for new nexus devices
Get ready for new nexus devicesGet ready for new nexus devices
Get ready for new nexus devices
 
Multi Screen Hell
Multi Screen HellMulti Screen Hell
Multi Screen Hell
 
Android_Bootcamp_PPT_GDSC_ITS_Engineering
Android_Bootcamp_PPT_GDSC_ITS_EngineeringAndroid_Bootcamp_PPT_GDSC_ITS_Engineering
Android_Bootcamp_PPT_GDSC_ITS_Engineering
 
Responsive Web design _2013
Responsive Web design _2013 Responsive Web design _2013
Responsive Web design _2013
 
responsive web design 1_oct_2013
responsive web design  1_oct_2013 responsive web design  1_oct_2013
responsive web design 1_oct_2013
 
Rwd ppt
Rwd pptRwd ppt
Rwd ppt
 
responsive web design
responsive web designresponsive web design
responsive web design
 
View groups containers
View groups containersView groups containers
View groups containers
 
Android App Development - 04 Views and layouts
Android App Development - 04 Views and layoutsAndroid App Development - 04 Views and layouts
Android App Development - 04 Views and layouts
 
Design guidelines for android developers
Design guidelines for android developersDesign guidelines for android developers
Design guidelines for android developers
 

More from MengChun Lam

Tk2323 lecture 10 sensor
Tk2323 lecture 10   sensorTk2323 lecture 10   sensor
Tk2323 lecture 10 sensorMengChun Lam
 
Tk2323 lecture 9 api json
Tk2323 lecture 9   api jsonTk2323 lecture 9   api json
Tk2323 lecture 9 api jsonMengChun Lam
 
Tk2323 lecture 11 process and thread
Tk2323 lecture 11   process and threadTk2323 lecture 11   process and thread
Tk2323 lecture 11 process and threadMengChun Lam
 
Tk2323 lecture 8 firebase
Tk2323 lecture 8   firebaseTk2323 lecture 8   firebase
Tk2323 lecture 8 firebaseMengChun Lam
 
Tk2323 lecture 6 fragment (new)
Tk2323 lecture 6   fragment (new)Tk2323 lecture 6   fragment (new)
Tk2323 lecture 6 fragment (new)MengChun Lam
 
Tk2323 lecture 7 data storage
Tk2323 lecture 7   data storageTk2323 lecture 7   data storage
Tk2323 lecture 7 data storageMengChun Lam
 
Tk2323 lecture 5 material design &amp; recycler view
Tk2323 lecture 5   material design &amp; recycler viewTk2323 lecture 5   material design &amp; recycler view
Tk2323 lecture 5 material design &amp; recycler viewMengChun Lam
 
Tk2323 lecture 7 sql
Tk2323 lecture 7   sql Tk2323 lecture 7   sql
Tk2323 lecture 7 sql MengChun Lam
 
Tk2323 lecture 3 intent
Tk2323 lecture 3   intentTk2323 lecture 3   intent
Tk2323 lecture 3 intentMengChun Lam
 
Tk2323 lecture 1 introduction to mobile application
Tk2323 lecture 1   introduction to mobile applicationTk2323 lecture 1   introduction to mobile application
Tk2323 lecture 1 introduction to mobile applicationMengChun Lam
 

More from MengChun Lam (10)

Tk2323 lecture 10 sensor
Tk2323 lecture 10   sensorTk2323 lecture 10   sensor
Tk2323 lecture 10 sensor
 
Tk2323 lecture 9 api json
Tk2323 lecture 9   api jsonTk2323 lecture 9   api json
Tk2323 lecture 9 api json
 
Tk2323 lecture 11 process and thread
Tk2323 lecture 11   process and threadTk2323 lecture 11   process and thread
Tk2323 lecture 11 process and thread
 
Tk2323 lecture 8 firebase
Tk2323 lecture 8   firebaseTk2323 lecture 8   firebase
Tk2323 lecture 8 firebase
 
Tk2323 lecture 6 fragment (new)
Tk2323 lecture 6   fragment (new)Tk2323 lecture 6   fragment (new)
Tk2323 lecture 6 fragment (new)
 
Tk2323 lecture 7 data storage
Tk2323 lecture 7   data storageTk2323 lecture 7   data storage
Tk2323 lecture 7 data storage
 
Tk2323 lecture 5 material design &amp; recycler view
Tk2323 lecture 5   material design &amp; recycler viewTk2323 lecture 5   material design &amp; recycler view
Tk2323 lecture 5 material design &amp; recycler view
 
Tk2323 lecture 7 sql
Tk2323 lecture 7   sql Tk2323 lecture 7   sql
Tk2323 lecture 7 sql
 
Tk2323 lecture 3 intent
Tk2323 lecture 3   intentTk2323 lecture 3   intent
Tk2323 lecture 3 intent
 
Tk2323 lecture 1 introduction to mobile application
Tk2323 lecture 1   introduction to mobile applicationTk2323 lecture 1   introduction to mobile application
Tk2323 lecture 1 introduction to mobile application
 

Recently uploaded

9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7Pooja Nehwal
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceanilsa9823
 
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...wyqazy
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Pooja Nehwal
 
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...Niamh verma
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceanilsa9823
 
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝soniya singh
 

Recently uploaded (7)

9892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x79892124323 | Book Call Girls in Juhu and escort services 24x7
9892124323 | Book Call Girls in Juhu and escort services 24x7
 
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual serviceCALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
CALL ON ➥8923113531 🔝Call Girls Saharaganj Lucknow best sexual service
 
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
哪里有卖的《俄亥俄大学学历证书+俄亥俄大学文凭证书+俄亥俄大学学位证书》Q微信741003700《俄亥俄大学学位证书复制》办理俄亥俄大学毕业证成绩单|购买...
 
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
Call US Pooja 9892124323 ✓Call Girls In Mira Road ( Mumbai ) secure service,
 
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
Chandigarh Call Girls Service ❤️🍑 9115573837 👄🫦Independent Escort Service Cha...
 
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun serviceCALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
CALL ON ➥8923113531 🔝Call Girls Gomti Nagar Lucknow best Night Fun service
 
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
Model Call Girl in Shalimar Bagh Delhi reach out to us at 🔝8264348440🔝
 

User Interface Layout and Design

  • 1. User Interface TK2323 Mobile Programming Sem 1 2017/2018 Lam Meng Chun lammc@ukm.edu.my (H-04-10)
  • 2. Outline View & Viewgroup Layout ▹Linear Layout ▹Relative Layout ▹Constraint Layout Design for Multiple Screens ▸Px,dp,sp ▸Smallest-width Qualifier ▸Orientation Qualifiers 2 Attributes ▸ID ▸layout_width ▸layout_height ▸layout_margin ▸padding ▸background ▸layout_gravity ▸gravity ▸textSize ▸layout_weight
  • 5. View ▹All user interface elements in an Android app are built using View and ViewGroup objects. ▹A View is an object that draws something on the screen that the user can interact with. ▸Button ▸EditText ▸TextView 5
  • 6. Viewgroup 6 A ViewGroup is an object that holds other View (and ViewGroup) objects in order to define the layout of the interface. ▸Relative Layout ▸Linear Layout ▸Constraint Layout ▸Grid Layout
  • 13. 13 Linear Layout Exercise ▹LinearLayout (_______) ▸TextView (How to…) ▸LinearLayout (_______) ⬩TextView (Game) ⬩TextView (Education) ⬩TextView (Sport) 13
  • 14. Relative Layout ▹RelativeLayout is a view group that displays child views in relative positions. ▹The position of each view can be specified as relative to sibling elements (such as to the left-of or below another view) or in positions relative to the parent RelativeLayout area (such as aligned to the bottom, left or center). 14
  • 15. Relative Layout 15 Relative to parent Relative to other children
  • 16. Relative Layout (Relative to parent) ▹Relative to parent ▸ android:layout_alignParentLeft="true" ▸ android:layout_alignParentRight=“false“ ▸ android:layout_alignParentTop=“true“ ▸ android:layout_alignParentBottom=“false“ 16
  • 17. Relative Layout (Relative to parent) ▹Relative to child ▸android:layout_below="@+id/…" ▸android:layout_above="@+id/…" ▸android:layout_alignLeft="@+id/…" ▸android:layout_alignRight="@+id/…" ▸android:layout_alignBottom="@+id/…" ▸android:layout_alignTop="@+id/…“ ▸android:layout_toLeftOf="@+id/…" ▸android:layout_toRightOf="@+id/…" 17
  • 18. Constraint Layout ▹ConstraintLayout allows you to create large and complex layouts with a flat view hierarchy (no nested view groups). ▹ It's similar to RelativeLayout in that all views are layed out according to relationships between sibling views and the parent layout, but it's more flexible than RelativeLayout and easier to use with Android Studio's Layout Editor. 18
  • 20. Constraint Layout ▹ Wrap Content: The view expands exactly as needed to fit its contents. ▹ Fixed: You specify the dimension in the text box below or by resizing the view in the editor. 20
  • 21. Constraint Layout ▹ Any Size: The view expands exactly as needed to match the constraints. The actual value is 0dp because the view has no desired dimensions, but it resizes as needed to meet the constraints. However, if the given dimension has only one constraint, then the view expands to fit its contents. Another way to think of it is "match constraints" (instead of match_parent) because it expands the view as much as possible after accounting for the limits of each constraint and its margins. 21
  • 22. 22 Relative Layout Exercise ▹Relative to parent ▸ android:layout_alignParentLeft=“___" ▸ android:layout_alignParentRight=“____“ ▸ android:layout_alignParentTop=“____“ ▸ android:layout_alignParentBottom=“____“ 22
  • 24. Layout ▹A layout defines the visual structure for a user interface, such as the UI for an activity or app widget. You can declare a layout in two ways: 24
  • 25. Layout Declare UI elements in XML. Android provides a straightforward XML vocabulary that corresponds to the View classes and subclasses, such as those for widgets and layouts. Instantiate layout elements at runtime. Your application can create View and ViewGroup objects (and manipulate their properties) programmatically. 25
  • 27. Write XML Resource : Structure <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a TextView" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello, I am a Button" /> </LinearLayout> 27
  • 30. Load the XML Layout public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // load the UI’s XML Layout setContentView(R.layout.activity_main_layout); } 30 What happened when we call setContentView() method https://www.youtube.com/watch?v=j-23-3mYno0&feature=youtu.be
  • 31. Create an instance of the view object public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_layout); // initialize the Button with View’s ID Button myButton = (Button) findViewById(R.id.main_btn_send); } 31
  • 34. 34 Sr.No View & description Example Value layout_width Specifies the width of the View or ViewGroup wrap_content match_parent layout_height Specifies the height of the View or ViewGroup wrap_content match_parent layout_margin Specifies extra space on side of the View or ViewGroup 8dp padding Sets the padding, in pixels, of all four edges. 8dp background A drawable to use as the background/ color. #000000 layout_gravity Specifies how child Views are positioned Center, Bottom, Top Left, Right text Text to display in view @string/foo textSize Size of the text 21sp layout_weight Specifies how much of the extra space in the layout should be allocated to the View 1
  • 35. Layout width and height ▹Any View object may have an integer ID associated with it, to uniquely identify the View within the tree. ▹When the application is compiled, this ID is referenced as an integer, but the ID is typically assigned in the layout XML file as a string, in the id attribute. 35
  • 36. Layout width and height ▹width and height of a view can be: ▸wrap_content : exactly large enough to fit the widget's content ▸match_parent : as wide or tall as 100% of the screen or layout ▸a specific fixed width such as 64dp (not usually recommended) dp = device pixels; sp = scaling pixels 36
  • 38. Padding and Margin Padding is for inside/within components Margin is to be applied for the on-outside of the components. 38
  • 41. Layout Gravity 41 android:layout_gravity sets the gravity of the View or Layout in its parent.
  • 44. Layout Weight 44 android:layout_width Set to 0 (Horizontal) android:layout_height Set to 0 (Vertical)
  • 47. Units Pixels: The exact number of 'dots' both horizontally and vertically that make up the file. ▸This is the actual resolution of the file. DPI (Dots per inch): The number of 'dots' or pixels per each inch of a printed or scanned document. 47 Density-independent pixel (dp) A virtual pixel unit that you should use when defining UI layout, to express layout dimensions or position in a density- independent way. ▸px = dp * (dpi / 160) ▸240 dpi screen, 1 dp equals 1.5 physical pixels
  • 48. Units of Measurement48 Sr.No Unit & description 1 dp Density-independent pixel. 1 dp is equivalent to one pixel on a 160 dpi screen. 2 sp Scale-independent pixel. This is similar to dp and is recommended for specifying font sizes. 3 px Pixel. Corresponds to actual pixels on the screen
  • 49. Pixel 49 ▹(px units), so the views are physically larger on a low-density screen and smaller on a high-density screen. ▹This is because although the actual screen sizes may be the same, the high-density screen has more pixels per inch (the same amount of pixels fit in a smaller area).
  • 50. Dp 50 ▹the layout dimensions are specified in density-independent pixels (dp units). Because the baseline for density-independent pixels is a medium-density screen, the device with a medium- density screen looks the same. ▹For the low-density and high-density screens, however, the system scales the density-independent pixel values down and up, respectively, to fit the screen as appropriate.
  • 51. Dp 51
  • 52. Dp 52
  • 53. Design for Multiple Screens ▹In most cases, you can ensure density independence in your application simply by specifying all layout dimension values in density-independent pixels (dp units) or with "wrap_content", as appropriate. ▹The system then scales bitmap drawables as appropriate in order to display at the appropriate size, based on the appropriate scaling factor for the current screen's density. 53
  • 54. Design for Multiple Screens ▹However, bitmap scaling can result in blurry or pixelated bitmaps, which you might notice in the above screenshots. ▹To avoid these artifacts, you should provide alternative bitmap resources for different densities. ▹For example, you should provide higher-resolution bitmaps for high-density screens and the system will use those instead of resizing the bitmap designed for medium- 54
  • 55. Size and Orientation ▹Using new size qualifiers ▹The fundamental size of a screen, as indicated by the shortest dimension of the available screen area. ▹Specifically, the device's smallestWidth is the shortest of the screen's available height and width (you may also think of it as the "smallest possible width" for the screen). 55
  • 56. Size and Orientation ▹“sw” (smallest possible width) ▹Specifically, the device's smallestWidth is the shortest of the screen's available height and width ▹The smallestWidth is a fixed screen size characteristic of the device 56
  • 57. Size and Orientation ▹the device's smallestWidth does not change when the screen's orientation changes. ▹Thus, using sw<N>dp is a simple way to specify the overall screen size available for your layout by ignoring the screen's orientation 57
  • 58. Size and Orientation ▹320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc). ▹480dp: a tweener tablet like the Streak (480x800 mdpi). ▹600dp: a 7” tablet (600x1024 mdpi). ▹720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc). 58
  • 59. Size and Orientation ▹This means that devices whose smallest width is greater than or equal to 600dp will select the layout- sw600dp/main.xml (two-pane) layout, while smaller screens will select the layout/main.xml (single-pane) layout 59
  • 61. Preparing Resources ▹A set of six generalized densities: ▸ldpi (low) ~120dpi ▸mdpi (medium) ~160dpi ▸hdpi (high) ~240dpi ▸xhdpi (extra-high) ~320dpi ▸xxhdpi (extra-extra-high) ~480dpi ▸xxxhdpi (extra-extra-extra-high) ~640dpi 61
  • 62. Preparing Resources ▹Use wrap_content, fill_parent, or the dp unit for layout dimensions ▹Do not use hard-coded pixel values in your application code 62
  • 63. Preparing Resources ▹To generate these images, you should start with your raw resource in vector format and generate the images for each density using the following size scale: 63
  • 64. Preparing Resources 64 ▹This means that if you generate a 200x200 image for xhdpi devices, you should generate the same resource in 150x150 for hdpi, 100x100 for mdpi and finally a 75x75 image for ldpi devices. Mdpi = 200/2*1 , xxxhdpi=200/2*4