SlideShare a Scribd company logo
Android development first steps
Christoforos Nalmpantis
Software Engineer and Tech
Entrepreneur
Co-Founder of Neighbourfood
Founder of Coeus Labs
Loyds Banking Group
Powa Technologies
Busuu
What Now Travel
The App Business
Agenda
• Working as an Android
Engineer in London 

• What is Android

• Think "mobile"

• Tools in Android Development

• Android Development lifecycle

• Basic components

• Acitivity lifecycle - demo

• My first app
Working as an Android
Engineer in London
• Opportunities

• Big tech companies: Google,
Amazon, Facebook, Yahoo, (Apple?)
etc

• Start ups (SwiftKey, CityMapper,
Busuu)

• Finance, Games, Enterprise etc

• Interview process: Algorithms, Data
structures, Design patterns, Android
framework, Java

• Salary expectations 25k - 90k (£1,673 -
£4,960)

• Big events, conferences, many
meetups, interesting people, startup
spirit
Android History
• Android, Inc. was founded in Palo Alto, California in
October 2003, by Andy Rubin, Rich Miner, Nick Sears
and Chris White.
• Android was intended for digital cameras.
• Google acquired Android Inc. on August 17, 2005.
• At Google, the team led by Rubin developed a mobile
device platform powered by the Linux kernel.
Android is a software stack
• Linux Kernel - low level tasks
• Libraries in C C++ (e.g. sqlite) and Android runtime (e.g.
Android virtual machines, Dalvik and more recently ART.
• Application Framework - Your apps run within its own
instance of the VM using the classes and services
provided here.
• Applications - Includes your app and all apps installed on
the device.
Lollipop
• Material design: fluid,
purposeful motion

• Notifications: respond directly
from your lock screen.

• Battery: feature that extends
your device by up to 90
minutes

• More ways to secure your
device: multiple user accounts,
guest mode, android smart
lock.

• Even more devices: phones,
tablets, wear, tv, auto, one.
https://www.youtube.com/watch?v=d36cIFCJvQs
Start thinking like a mobile developer.
• Object Oriented Programming (OOP)
• Java
• Smartphones = small computers
• User Experience (UX) is very important.
• Mobile OS is an ecosystem of many Apps
Key mobile challenges
• Low processing power
• Limited RAM
• Intermittent, low bandwidth, high latency data
connections
• Impact on battery
• (Android?) Fragmentation
• Support multiple devices
Android version history
Tablets
Android Beam
HCE
Froyo
Gingerbread
Ice Cream Sandwich
Jelly Bean
Kit Kat
Lollipop
0
10
20
30
40
Region 1
Froyo
Gingerbread
Ice Cream Sandwich
Jelly Bean
Kit Kat
Lollipop
What happens when you run an app in Android
Studio?
Android
Project
Build Resources
Manifest
Byte Code
Sign
Install
on
device
n
Tools used in Android development.
• Android Studio
• Gradle
• Genymotion
• SDK Tools
• Version control system (git)
• Continuous Integration tools (Jenkins)
Android Studio Intelligent Code Editor
Android Studio Rich Layout Editor
Android Studio Multiscreen App Development
Android Studio Memory Monitor
Android Studio CPU Monitor
Android Studio Device Log Messages
Gradle
• From command line to Ide to continuous integration
• Declare and execute all tasks necessary to compile, test,
package and ship.
• Support multi-language, multi-platform, multi-project and
multi-channel software, Saas and mobile apps
Gradle Build Automation System
A faster Android
emulator
Genymotion is the next generation
of the AndroVM open source
project, already trusted by
2,500,000 developers. It’s even
easier to use and offers lots more
features.
Android SDK Tools
adb
android
AVD Manager
bmgr
Device Monitor
dmtracedump
Draw 9-Patch
Emulator
etc1tool
hprof-conv
jobb
lint
logcat
mksdcard
ProGuard SDK Manager
Tracer for OpenGL ES
Traceview
zipalign
Android SDK Tools location of sdk tools
Android SDK Tools Android Device Monitor
Android SDK Tools HierarchyViewer
Continuous Integration Jenkins
Git
• Git is a free and open source
distributed version control
system designed to handle
everything from small to very
large projects with speed and
efficiency.

• UI client for git -> SourceTree

• The Gitflow Workflow defines a
strict branching model
designed around the project
release.
Git SourceTree
Android Development
Lifecycle
Agile Methodology
–Manifesto for Agile Software Development
“Customer Collaboration over Contract
negotiation”
“Working Software over Comprehensive
Documentation”
“Individuals and Interactions over
Processes and tools”
“Responding to change over Following a
plan”
Basic Android Components
Activities
An Activity represents a single screen with a user
interface
Services
A service is a component that runs in the
background to perform long-running operations or
to perform work for remote processes.
Content
Providers
A content provider manages a shared set of app
data.
Broadcast
Receivers
A Broadcast receiver is a component that responds
to system-wide broadcast announcements.
The Manifest File
• Android system must know that the component exists by
reading the app’s AndroidManifest.xml file.
• Identify any user permissions the app requires.
• Declare the minimum API level required by the app.
• Declare hardware and software features used or required by
the app (e.g. camera, bluetooth services).
• Other than Android framework APIs (Google maps library).
• And more.
Basic Android
Components
AndroidManifest
Views and ViewGroups
• A View is the basic UI component.
• Buttons, TextViews, ImageViews and other are all subclasses of
View.
• ViewGroup is also subclass of a View, and can contain many views.
• Layouts are subclasses of ViewGroup ( LinearLayout, RelativeLayout,
FrameLayout).
• To convert Layouts to Java objects we need to inflate the layout.
• To use our views in Java we need to find the views after inflating the
layout which contains them.
Basic Android
Components
Views and ViewGroups
Time to code Activity Lifecycle
Time to code Activity Lifecycle
Time to code Activity Lifecycle
Time to code Activity Lifecycle
WTF
Time to code Activity Lifecycle
Declare your activity
Activity Lifecycle
• onCreate(Bundle
savedInstanceState)

• onStart()

• onResume()

• Now the activity is visible and
the user can interact with it!
Activity Lifecycle
• onPause()

• onStop()

• Now the app is not visible!
(these are images not real
views)
Activity Lifecycle
• onRestart()

• onStart()

• onResume()

• Now the activity is visible again
and the user can interact with
it!
Activity Lifecycle
• onPause()

• Now the activity is partial
visible! This is a technical term
and means that the activity is
on Pause() because a dialog is
shown. The user cannot
interact with the UI of our
activity anymore.
Activity Lifecycle
• onResume()

• Now the activity is visible again
and the user can interact with
it!
Activity lifecycle states
• Entire Lifetime: This is the lifetime between the first call to the
onCreate() and the final call to onDestroy() method. We create all
global resources such as screen layout, global variables etc in
onCreate() and release all resources with onDestroy() call.
• Visible Lifetime: It is the lifetime of an Activity between onStart()
and onStop() method calls. In this the Activity is visible to the user
and he may or may not be able to interact with it. During the visible
lifetime, an Activity maintains its state intact.
• Foreground Lifetime: Foreground lifetime starts with onResume()
and ends with onPause() method calls. During this, the Activity is
completely visible to the user and is on top of all other Activities so
that user can interact with it.
Time to code Activity Lifecycle
My first Android App
• Collect requirements

• Start development process

• Test

• Iterate again until the app is
ready for release.

• Maintain the app and add new
features using the previous
steps.
My first Android App Collect requirements
Break the project into
small user stories
• As a user I want an android
app.

• As a user I want the app to
show images from london.

• As a user I want the images to
be shown in a list view.

• As a user I want the listview to
support infinite images and
scroll smoothly.

• As a user I want to tap on an
image and show it in full
screen.
Analyse requirements
• Which components do we need?

• 2 screens -> 2 Activities

• 2 screens + 1 imageItem -> 3
Layouts

• List of images -> RecyclerView

• Show data in list -> Adapter

• Items of images -> ViewHolder

• Load images from Internet ->
Picasso
START CODING!!!
ScrollView
<?xml version="1.0" encoding=“utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/
apk/res/android"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">


<LinearLayout
android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">



<ImageView

android:id="@+id/item_image_imageView"

android:layout_width="match_parent"

android:layout_height="@dimen/image_size"

android:scaleType="centerCrop" />



<ImageView

android:layout_width="match_parent"

android:layout_height="@dimen/image_size"

android:scaleType="centerCrop" />



<ImageView

android:layout_width="match_parent"

android:layout_height="@dimen/image_size"

android:scaleType="centerCrop" />

.
.
.


</LinearLayout>
</ScrollView>
If you have 100 images in
the list and can fit 3 items
on screen at once - what is
the minimum number of
views you need to create to
scroll through the list?
1. one

2. three

3. four

4. five

5. ten

6. one hundred
ListView
• Request a view for every visible
item.

• Create two more for both
directions ( up/down) to avoid
flickering of the screen as a
new view is created and
populated.

• As you scroll more views are
added to memory
RecyclerView
• Request a view for every visible
item.

• Create two more for both
directions ( up/down) to avoid
flickering of the screen as a new
view is created and populated.

• As you scroll, the views going
off the screen are recycled and
reused for the new views, by
just populating the new data.

• Less memory overhead,
smoother scrolling and less
view management.
Useful links
• Speakers linkedn profile: https://uk.linkedin.com/pub/
christoforos-nalmpantis/44/231/23
• Activity lifecycle demo source code: https://github.com/
ChristoferNal/activityLifecycle
• PracticeRecyclerVIew source code: https://github.com/
ChristoferNal/practiceRecyclerView/tree/develop
Welcome to the Android World!
John Forbes Nash Game Theory

More Related Content

What's hot

Presentation1
Presentation1Presentation1
Android ActionBar Navigation reloaded
Android ActionBar Navigation reloadedAndroid ActionBar Navigation reloaded
Android ActionBar Navigation reloaded
Dominik Helleberg
 
Appcelerator Overview
Appcelerator OverviewAppcelerator Overview
Appcelerator Overview
Jeff Haynie
 
Oscar alert for wearables - Moto 360 & Apple Watch
Oscar alert for wearables - Moto 360 & Apple WatchOscar alert for wearables - Moto 360 & Apple Watch
Oscar alert for wearables - Moto 360 & Apple Watch
Carolyn Jao
 
Technology Trend 2018
Technology Trend 2018Technology Trend 2018
Technology Trend 2018
Wan Muzaffar Wan Hashim
 
CommNexus San Diego Presentation
CommNexus San Diego PresentationCommNexus San Diego Presentation
CommNexus San Diego Presentation
Jeff Haynie
 
Mobile User Interface Development Challenges and Trade-offs
Mobile User Interface Development Challenges and Trade-offsMobile User Interface Development Challenges and Trade-offs
Mobile User Interface Development Challenges and Trade-offs
JonFerraiolo
 
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Jeff Haynie
 
Enterprise Social using Open Source Frameworks
Enterprise Social using Open Source FrameworksEnterprise Social using Open Source Frameworks
Enterprise Social using Open Source Frameworks
Werner Keil
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App Development
Chris Morrell
 
Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)
Werner Keil
 

What's hot (11)

Presentation1
Presentation1Presentation1
Presentation1
 
Android ActionBar Navigation reloaded
Android ActionBar Navigation reloadedAndroid ActionBar Navigation reloaded
Android ActionBar Navigation reloaded
 
Appcelerator Overview
Appcelerator OverviewAppcelerator Overview
Appcelerator Overview
 
Oscar alert for wearables - Moto 360 & Apple Watch
Oscar alert for wearables - Moto 360 & Apple WatchOscar alert for wearables - Moto 360 & Apple Watch
Oscar alert for wearables - Moto 360 & Apple Watch
 
Technology Trend 2018
Technology Trend 2018Technology Trend 2018
Technology Trend 2018
 
CommNexus San Diego Presentation
CommNexus San Diego PresentationCommNexus San Diego Presentation
CommNexus San Diego Presentation
 
Mobile User Interface Development Challenges and Trade-offs
Mobile User Interface Development Challenges and Trade-offsMobile User Interface Development Challenges and Trade-offs
Mobile User Interface Development Challenges and Trade-offs
 
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...Building a sustainable, cross-platform mobile application strategy - SoCon 20...
Building a sustainable, cross-platform mobile application strategy - SoCon 20...
 
Enterprise Social using Open Source Frameworks
Enterprise Social using Open Source FrameworksEnterprise Social using Open Source Frameworks
Enterprise Social using Open Source Frameworks
 
Mobile App Development
Mobile App DevelopmentMobile App Development
Mobile App Development
 
Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)Enterprise Social using Open Source Frameworks (SMWCPH)
Enterprise Social using Open Source Frameworks (SMWCPH)
 

Similar to Android development first steps

Android development
Android developmentAndroid development
Android development
mkpartners
 
Mobile application development
Mobile application developmentMobile application development
Mobile application development
umesh patil
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
Imam Raza
 
Intro to android (gdays)
Intro to android (gdays)Intro to android (gdays)
Intro to android (gdays)
Omolara Adejuwon
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
Can Elmas
 
Unit I- ANDROID OVERVIEW.ppt
Unit I- ANDROID OVERVIEW.pptUnit I- ANDROID OVERVIEW.ppt
Unit I- ANDROID OVERVIEW.ppt
dineshkumar periyasamy
 
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break editionMatteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
DuckMa
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
lzongren
 
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai
Vibrant Technologies & Computers
 
Android Development Tutorial
Android Development TutorialAndroid Development Tutorial
Android Development Tutorial
Germán Bringas
 
Android Mobile App Development basics PPT
Android Mobile App Development basics PPTAndroid Mobile App Development basics PPT
Android Mobile App Development basics PPT
nithya697634
 
C maksymchuk android
C maksymchuk androidC maksymchuk android
C maksymchuk android
sdeconf
 
Android application and android operating system
Android application and android operating systemAndroid application and android operating system
Android application and android operating system
ProvaAkter
 
Introduction to Android Development.pptx
Introduction to Android Development.pptxIntroduction to Android Development.pptx
Introduction to Android Development.pptx
asmeerana605
 
Android workshop
Android workshopAndroid workshop
Android workshop
Sagar Patel
 
Introduction to android mobile app development.pptx
Introduction to android mobile app development.pptxIntroduction to android mobile app development.pptx
Introduction to android mobile app development.pptx
ridzah12
 
First step in android
First step in androidFirst step in android
First step in android
KS Technologies Vadodara
 
Android app devolopment
Android app devolopmentAndroid app devolopment
Android app devolopment
SitCom Solutions
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
Tomáš Kypta
 
Android Workshop Part 1
Android Workshop Part 1Android Workshop Part 1
Android Workshop Part 1
NAILBITER
 

Similar to Android development first steps (20)

Android development
Android developmentAndroid development
Android development
 
Mobile application development
Mobile application developmentMobile application development
Mobile application development
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
Intro to android (gdays)
Intro to android (gdays)Intro to android (gdays)
Intro to android (gdays)
 
Introduction to Android Development
Introduction to Android DevelopmentIntroduction to Android Development
Introduction to Android Development
 
Unit I- ANDROID OVERVIEW.ppt
Unit I- ANDROID OVERVIEW.pptUnit I- ANDROID OVERVIEW.ppt
Unit I- ANDROID OVERVIEW.ppt
 
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break editionMatteo Gazzurelli - Introduction to Android Development - Have a break edition
Matteo Gazzurelli - Introduction to Android Development - Have a break edition
 
Android dev o_auth
Android dev o_authAndroid dev o_auth
Android dev o_auth
 
Android class provider in mumbai
Android class provider in mumbaiAndroid class provider in mumbai
Android class provider in mumbai
 
Android Development Tutorial
Android Development TutorialAndroid Development Tutorial
Android Development Tutorial
 
Android Mobile App Development basics PPT
Android Mobile App Development basics PPTAndroid Mobile App Development basics PPT
Android Mobile App Development basics PPT
 
C maksymchuk android
C maksymchuk androidC maksymchuk android
C maksymchuk android
 
Android application and android operating system
Android application and android operating systemAndroid application and android operating system
Android application and android operating system
 
Introduction to Android Development.pptx
Introduction to Android Development.pptxIntroduction to Android Development.pptx
Introduction to Android Development.pptx
 
Android workshop
Android workshopAndroid workshop
Android workshop
 
Introduction to android mobile app development.pptx
Introduction to android mobile app development.pptxIntroduction to android mobile app development.pptx
Introduction to android mobile app development.pptx
 
First step in android
First step in androidFirst step in android
First step in android
 
Android app devolopment
Android app devolopmentAndroid app devolopment
Android app devolopment
 
Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013Android development - the basics, MFF UK, 2013
Android development - the basics, MFF UK, 2013
 
Android Workshop Part 1
Android Workshop Part 1Android Workshop Part 1
Android Workshop Part 1
 

Recently uploaded

Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Wask
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
Brandon Minnick, MBA
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
Pixlogix Infotech
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
saastr
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
Wouter Lemaire
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
HarisZaheer8
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
Tomaz Bratanic
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
saastr
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 

Recently uploaded (20)

Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Digital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying AheadDigital Marketing Trends in 2024 | Guide for Staying Ahead
Digital Marketing Trends in 2024 | Guide for Staying Ahead
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
Choosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptxChoosing The Best AWS Service For Your Website + API.pptx
Choosing The Best AWS Service For Your Website + API.pptx
 
Best 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERPBest 20 SEO Techniques To Improve Website Visibility In SERP
Best 20 SEO Techniques To Improve Website Visibility In SERP
 
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStrDeep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
Deep Dive: Getting Funded with Jason Jason Lemkin Founder & CEO @ SaaStr
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
UI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentationUI5 Controls simplified - UI5con2024 presentation
UI5 Controls simplified - UI5con2024 presentation
 
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
AWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptxAWS Cloud Cost Optimization Presentation.pptx
AWS Cloud Cost Optimization Presentation.pptx
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
GraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracyGraphRAG for Life Science to increase LLM accuracy
GraphRAG for Life Science to increase LLM accuracy
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
Deep Dive: AI-Powered Marketing to Get More Leads and Customers with HyperGro...
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 

Android development first steps

  • 2. Christoforos Nalmpantis Software Engineer and Tech Entrepreneur Co-Founder of Neighbourfood Founder of Coeus Labs Loyds Banking Group Powa Technologies Busuu What Now Travel The App Business
  • 3.
  • 4. Agenda • Working as an Android Engineer in London • What is Android • Think "mobile" • Tools in Android Development • Android Development lifecycle • Basic components • Acitivity lifecycle - demo • My first app
  • 5. Working as an Android Engineer in London • Opportunities • Big tech companies: Google, Amazon, Facebook, Yahoo, (Apple?) etc • Start ups (SwiftKey, CityMapper, Busuu) • Finance, Games, Enterprise etc • Interview process: Algorithms, Data structures, Design patterns, Android framework, Java • Salary expectations 25k - 90k (£1,673 - £4,960) • Big events, conferences, many meetups, interesting people, startup spirit
  • 6. Android History • Android, Inc. was founded in Palo Alto, California in October 2003, by Andy Rubin, Rich Miner, Nick Sears and Chris White. • Android was intended for digital cameras. • Google acquired Android Inc. on August 17, 2005. • At Google, the team led by Rubin developed a mobile device platform powered by the Linux kernel.
  • 7.
  • 8. Android is a software stack • Linux Kernel - low level tasks • Libraries in C C++ (e.g. sqlite) and Android runtime (e.g. Android virtual machines, Dalvik and more recently ART. • Application Framework - Your apps run within its own instance of the VM using the classes and services provided here. • Applications - Includes your app and all apps installed on the device.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18. Lollipop • Material design: fluid, purposeful motion • Notifications: respond directly from your lock screen. • Battery: feature that extends your device by up to 90 minutes • More ways to secure your device: multiple user accounts, guest mode, android smart lock. • Even more devices: phones, tablets, wear, tv, auto, one.
  • 20. Start thinking like a mobile developer. • Object Oriented Programming (OOP) • Java • Smartphones = small computers • User Experience (UX) is very important. • Mobile OS is an ecosystem of many Apps
  • 21. Key mobile challenges • Low processing power • Limited RAM • Intermittent, low bandwidth, high latency data connections • Impact on battery • (Android?) Fragmentation • Support multiple devices
  • 24. 0 10 20 30 40 Region 1 Froyo Gingerbread Ice Cream Sandwich Jelly Bean Kit Kat Lollipop
  • 25. What happens when you run an app in Android Studio? Android Project Build Resources Manifest Byte Code Sign Install on device n
  • 26. Tools used in Android development. • Android Studio • Gradle • Genymotion • SDK Tools • Version control system (git) • Continuous Integration tools (Jenkins)
  • 28. Android Studio Rich Layout Editor
  • 29. Android Studio Multiscreen App Development
  • 32. Android Studio Device Log Messages
  • 33. Gradle • From command line to Ide to continuous integration • Declare and execute all tasks necessary to compile, test, package and ship. • Support multi-language, multi-platform, multi-project and multi-channel software, Saas and mobile apps
  • 35. A faster Android emulator Genymotion is the next generation of the AndroVM open source project, already trusted by 2,500,000 developers. It’s even easier to use and offers lots more features.
  • 36. Android SDK Tools adb android AVD Manager bmgr Device Monitor dmtracedump Draw 9-Patch Emulator etc1tool hprof-conv jobb lint logcat mksdcard ProGuard SDK Manager Tracer for OpenGL ES Traceview zipalign
  • 37. Android SDK Tools location of sdk tools
  • 38. Android SDK Tools Android Device Monitor
  • 39. Android SDK Tools HierarchyViewer
  • 41. Git • Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. • UI client for git -> SourceTree • The Gitflow Workflow defines a strict branching model designed around the project release.
  • 44. –Manifesto for Agile Software Development “Customer Collaboration over Contract negotiation” “Working Software over Comprehensive Documentation” “Individuals and Interactions over Processes and tools” “Responding to change over Following a plan”
  • 45. Basic Android Components Activities An Activity represents a single screen with a user interface Services A service is a component that runs in the background to perform long-running operations or to perform work for remote processes. Content Providers A content provider manages a shared set of app data. Broadcast Receivers A Broadcast receiver is a component that responds to system-wide broadcast announcements.
  • 46. The Manifest File • Android system must know that the component exists by reading the app’s AndroidManifest.xml file. • Identify any user permissions the app requires. • Declare the minimum API level required by the app. • Declare hardware and software features used or required by the app (e.g. camera, bluetooth services). • Other than Android framework APIs (Google maps library). • And more.
  • 48. Views and ViewGroups • A View is the basic UI component. • Buttons, TextViews, ImageViews and other are all subclasses of View. • ViewGroup is also subclass of a View, and can contain many views. • Layouts are subclasses of ViewGroup ( LinearLayout, RelativeLayout, FrameLayout). • To convert Layouts to Java objects we need to inflate the layout. • To use our views in Java we need to find the views after inflating the layout which contains them.
  • 50. Time to code Activity Lifecycle
  • 51. Time to code Activity Lifecycle
  • 52. Time to code Activity Lifecycle
  • 53. Time to code Activity Lifecycle WTF
  • 54. Time to code Activity Lifecycle Declare your activity
  • 55. Activity Lifecycle • onCreate(Bundle savedInstanceState) • onStart() • onResume() • Now the activity is visible and the user can interact with it!
  • 56. Activity Lifecycle • onPause() • onStop() • Now the app is not visible! (these are images not real views)
  • 57. Activity Lifecycle • onRestart() • onStart() • onResume() • Now the activity is visible again and the user can interact with it!
  • 58. Activity Lifecycle • onPause() • Now the activity is partial visible! This is a technical term and means that the activity is on Pause() because a dialog is shown. The user cannot interact with the UI of our activity anymore.
  • 59. Activity Lifecycle • onResume() • Now the activity is visible again and the user can interact with it!
  • 60. Activity lifecycle states • Entire Lifetime: This is the lifetime between the first call to the onCreate() and the final call to onDestroy() method. We create all global resources such as screen layout, global variables etc in onCreate() and release all resources with onDestroy() call. • Visible Lifetime: It is the lifetime of an Activity between onStart() and onStop() method calls. In this the Activity is visible to the user and he may or may not be able to interact with it. During the visible lifetime, an Activity maintains its state intact. • Foreground Lifetime: Foreground lifetime starts with onResume() and ends with onPause() method calls. During this, the Activity is completely visible to the user and is on top of all other Activities so that user can interact with it.
  • 61. Time to code Activity Lifecycle
  • 62. My first Android App • Collect requirements • Start development process • Test • Iterate again until the app is ready for release. • Maintain the app and add new features using the previous steps.
  • 63. My first Android App Collect requirements
  • 64. Break the project into small user stories • As a user I want an android app. • As a user I want the app to show images from london. • As a user I want the images to be shown in a list view. • As a user I want the listview to support infinite images and scroll smoothly. • As a user I want to tap on an image and show it in full screen.
  • 65. Analyse requirements • Which components do we need? • 2 screens -> 2 Activities • 2 screens + 1 imageItem -> 3 Layouts • List of images -> RecyclerView • Show data in list -> Adapter • Items of images -> ViewHolder • Load images from Internet -> Picasso START CODING!!!
  • 66. ScrollView <?xml version="1.0" encoding=“utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/ apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical"> 
 <LinearLayout android:layout_width="match_parent"
 android:layout_height="match_parent"
 android:orientation="vertical">
 
 <ImageView
 android:id="@+id/item_image_imageView"
 android:layout_width="match_parent"
 android:layout_height="@dimen/image_size"
 android:scaleType="centerCrop" />
 
 <ImageView
 android:layout_width="match_parent"
 android:layout_height="@dimen/image_size"
 android:scaleType="centerCrop" />
 
 <ImageView
 android:layout_width="match_parent"
 android:layout_height="@dimen/image_size"
 android:scaleType="centerCrop" />
 . . . 
 </LinearLayout> </ScrollView>
  • 67. If you have 100 images in the list and can fit 3 items on screen at once - what is the minimum number of views you need to create to scroll through the list? 1. one 2. three 3. four 4. five 5. ten 6. one hundred
  • 68. ListView • Request a view for every visible item. • Create two more for both directions ( up/down) to avoid flickering of the screen as a new view is created and populated. • As you scroll more views are added to memory
  • 69. RecyclerView • Request a view for every visible item. • Create two more for both directions ( up/down) to avoid flickering of the screen as a new view is created and populated. • As you scroll, the views going off the screen are recycled and reused for the new views, by just populating the new data. • Less memory overhead, smoother scrolling and less view management.
  • 70. Useful links • Speakers linkedn profile: https://uk.linkedin.com/pub/ christoforos-nalmpantis/44/231/23 • Activity lifecycle demo source code: https://github.com/ ChristoferNal/activityLifecycle • PracticeRecyclerVIew source code: https://github.com/ ChristoferNal/practiceRecyclerView/tree/develop
  • 71. Welcome to the Android World!
  • 72. John Forbes Nash Game Theory