This document provides an overview of how to transition between iOS and Android development by comparing key concepts and technologies. It discusses native programming languages and data types, classes and structs/data classes, enums, extensions, optionals, lazy properties, frameworks like UIKit/Activity and their lifecycles, assets, intents/segues, tables/recyclers, dependency managers like CocoaPods/Gradle, and encourages staying curious across mobile platforms.
Kotlin is a statically typed programming language for the JVM, Android and the browser.
More and more in the Android community start using Kotlin, we’ll see why and how you can do it too.
Explore some cool generic techniques which you could use for building complex ui in a declarative manner.
TableKit is a super lightweight yet powerful generic library that allows you to build complex table views in a declarative type-safe manner. It hides a complexity of UITableViewDataSource and UITableViewDelegate methods behind the scene, so your code will be look clean, easy to read and nice to maintain.
https://github.com/maxsokolov/TableKit
Kotlin is a statically typed programming language for the JVM, Android and the browser.
More and more in the Android community start using Kotlin, we’ll see why and how you can do it too.
Explore some cool generic techniques which you could use for building complex ui in a declarative manner.
TableKit is a super lightweight yet powerful generic library that allows you to build complex table views in a declarative type-safe manner. It hides a complexity of UITableViewDataSource and UITableViewDelegate methods behind the scene, so your code will be look clean, easy to read and nice to maintain.
https://github.com/maxsokolov/TableKit
beyond tellerrand: Mobile Apps with JavaScript – There's More Than WebHeiko Behrens
abstract from http://2011.beyondtellerrand.com
Modern web technologies and responsive design aim at a platform independent code base while promising first-class experience on any mobile device. Even though purely web-based approaches can achieve stunning results, they (still) cannot compete with their native counterpart regarding platform features and integration.
In this talk, I will show you how we can use JavaScript to produce mobile apps that include features such as native UI, push notifications, sensors, and paid distribution. You can expect lots of live demos when I will compare the strengths and weaknesses of various frameworks.
Sexy JavaScript with lodash and ES6
Declarative programing is all about intent. It's about writing code that focuses on what we want to do, not how we do it. Declarative code is elegant and easy to change and maintain. Functional programing is a paradigm that helps writing such code, and libraries such as underscore.js and lodash are a huge help. This talk is about sprinkling ES6 syntax on top of lodash in order to write sexy, compact and declarative code.
Taming Core Data by Arek Holko, MacoscopeMacoscope
Core Data is a framework that you use to manage the model layer objects in your application. A framework that you use to build the persistence layer in your application.
Elixir has a powerful and rapidly growing web development framework Phoenix and a part of this framework is an Ecto, a DSL library for data access. This talk will be an introduction into Ecto revealing the basic concepts and some of its more advanced features.
Elixir Meetup 4 Lviv
Did you know that there is a function in the Objective-C runtime that gives you exactly this list of classes in your app?
With this tool, you can easily build a debug view which will enable you to instantiate any of your ViewControllers, and save you a lot of development time.
Vibrant Technologies is headquarted in Mumbai,India.We are the best Python training provider in Navi Mumbai who provides Live Projects to students.We provide Corporate Training also.We are Best Python classes in Mumbai according to our students and corporators
beyond tellerrand: Mobile Apps with JavaScript – There's More Than WebHeiko Behrens
abstract from http://2011.beyondtellerrand.com
Modern web technologies and responsive design aim at a platform independent code base while promising first-class experience on any mobile device. Even though purely web-based approaches can achieve stunning results, they (still) cannot compete with their native counterpart regarding platform features and integration.
In this talk, I will show you how we can use JavaScript to produce mobile apps that include features such as native UI, push notifications, sensors, and paid distribution. You can expect lots of live demos when I will compare the strengths and weaknesses of various frameworks.
Sexy JavaScript with lodash and ES6
Declarative programing is all about intent. It's about writing code that focuses on what we want to do, not how we do it. Declarative code is elegant and easy to change and maintain. Functional programing is a paradigm that helps writing such code, and libraries such as underscore.js and lodash are a huge help. This talk is about sprinkling ES6 syntax on top of lodash in order to write sexy, compact and declarative code.
Taming Core Data by Arek Holko, MacoscopeMacoscope
Core Data is a framework that you use to manage the model layer objects in your application. A framework that you use to build the persistence layer in your application.
Elixir has a powerful and rapidly growing web development framework Phoenix and a part of this framework is an Ecto, a DSL library for data access. This talk will be an introduction into Ecto revealing the basic concepts and some of its more advanced features.
Elixir Meetup 4 Lviv
Did you know that there is a function in the Objective-C runtime that gives you exactly this list of classes in your app?
With this tool, you can easily build a debug view which will enable you to instantiate any of your ViewControllers, and save you a lot of development time.
Vibrant Technologies is headquarted in Mumbai,India.We are the best Python training provider in Navi Mumbai who provides Live Projects to students.We provide Corporate Training also.We are Best Python classes in Mumbai according to our students and corporators
Explore some cool generic techniques which you could use for building complex ui in a declarative manner.
TableKit is a super lightweight yet powerful generic library that allows you to build complex table views in a declarative type-safe manner. It hides a complexity of UITableViewDataSource and UITableViewDelegate methods behind the scene, so your code will be look clean, easy to read and nice to maintain.
https://github.com/maxsokolov/TableKit
With the introduction of the iPhone 6s and the iPhone 6s Plus, Apple added 3D Touch, a new dimension to the multi-touch user interface. This new technology senses how deeply users press the display and provides a new way to interact with the iPhone.
In iOS 9, Apple introduced several 3D Touch APIs. In this session I will explain in a practical way what is 3D Touch and how you can benefit from it in your app. I will cover home screen quick actions, peek and pop actions and also how to use the force properties of a UITouch event.
Talk on how to think when building Android apps using a reactive Clean Architecture. This talk was held at the Stockholm Android Meetup group April 17 2018 at Developers bay.
Esta charla comprende las lecciones aprendidas convirtiendo la app de Android de Teambox (una app repleta de deuda técnica y con un alto nivel de acoplamiento entre clases), en la versión actual de Redbooth, que intenta cumplir la arquitectura Hexagonal y los principios SOLID. Durante la exposición explicaremos como fuimos desenredando el código paso a paso; como aplicamos por partes los conceptos de la arquitectura hexagonal; como dejamos de lado componentes del framework de Android que dificultaban el mantenimiento de la app; y que errores cometimos, como los solucionamos y como se podrían haber evitado.
Android Classes In Mumbai
best android classes in mumbai with job assistance.
our features are:
expert guidance by it industry professionals
lowest fees of 5000
practical exposure to handle projects
well equiped lab
after course resume writing guidance
Building Modern Apps using Android Architecture ComponentsHassan Abid
Android architecture components are part of Android Jetpack. They are a collection of libraries that help you design robust, testable, and maintainable apps. In this talk, We will cover LiveData, ViewModel, Room and lifecycle components. We will go through practical code example to understand modern android app architecture especially MVVM architecture.
This talk describes building Silverlight 3 applications using F#. Both Visual Studio 2008 and 2010 RC are demonstrated. This talk was given by Talbott Crowell at the F# User Group meeting on April 4, 2010 at Microsoft, Cambridge, MA.
Use of TextField, Label, Sliders and Switch buttons
Handling ActionSheet and Alerts
Application Delegates
Handling ActionSheet and Alerts
Application Delegates
UIApplication Delegates
View Controllers
Life Cycle of Application & Methods
ARC
iPhone App Development Training Programme (contd.)
While Google is adding Kotlin as an official Android language, we're also expanding our research on this language. It’s developed by JetBrains, and the fact that these are the people behind a suite of IDEs, such as IntelliJ and ReSharper, really shines through in Kotlin. It’s pragmatic and concise and makes coding a satisfying and efficient experience.
Although Kotlin compiles to both JavaScript and soon machine code, I’ll focus on its prime environment, the JVM.
Please see my presentation to learn more!
3. Who are you?
how many native iOS dev?
3
how many native Android dev?
how mobile hybrid dev?
4. What courses?
Developing iOS 11 Apps with Swift
Paul Hegarty
https://itunes.apple.com/us/podcast/developing-i
os-11-apps-with-swift/id1315130780
Developing Android apps
4
8. Constants & Variables
let name: String = "Giuseppe"
var age: Int = 32
8
val name: String = "Giuseppe"
var age: Int = 32
let name = "Giuseppe"
var age = 32
val name = "Giuseppe"
var age = 32
Type inference
9. Classes
class Person {
let name: String
init(name: String) {
self.name = name
}
}
let aPerson = Person(name: "Giuseppe")
print(aPerson.name)
9
class Person(val name: String)
val aPerson = Person("Giuseppe")
print(aPerson.name)
10. How to hold data
struct Person {
let name: String
let surname: String
var age: Int
}
let aPerson = Person(name: "Giuseppe",
surname: "Filograno", age: 32)
10
data class Person(val name: String, val
surname: String, var age: Int)
val aPerson = Person("Giuseppe",
"Filograno", 32)
● No inheritance
● Passed by value
● Default initializer
No inheritance and automatically implements:
● equals()/hashCode() pair
● toString() of the form
"Person(name=Giuseppe,
surname=Filograno, age=32)"
● componentN() functions corresponding to
the properties in their order of declaration
● copy() function
11. Enums
enum Suit {
case spades, hearts, diamond, clubs
func simpleDescription() -> String {
switch self {
case .spades: return "spades"
case .hearts: return "hearts"
case .diamond: return "diamond"
case .clubs: return "clubs"
}
}
}
let hearts = Suit.hearts
print(hearts.simpleDescription())
enum class Suit {
spades, hearts, diamond, clubs;
fun simpleDescription(): String {
return when (this) {
Suit.spades -> "spades"
Suit.hearts -> "hearts"
Suit.diamond -> "diamonds"
Suit.clubs -> "clubs"
}
}
}
val hearts = Suit.hearts
print(hearts.simpleDescription())
11
13. Extensions
extension Double {
var km: Double { return self * 1_000.0 }
var mm: Double { return self / 1_000.0 }
var ft: Double { return self / 3.28084 }
}
let oneInch = 25.4.mm
print("One inch is (oneInch) meters")
// Prints "One inch is 0.0254 meters"
let threeFeet = 3.ft
print("Three feet is (threeFeet) meters")
// Prints "Three feet is 0.914399970739201 meters"
val Double.km
get() = this * 1000.0
val Double.mm
get() = this / 1_000.0
val Double.ft
get() = this / 3.28084
val oneInch = 25.4.mm
print("One inch is ${oneInch} meters")
// Prints "One inch is 0.0254 meters"
val threeFeet = 3.0.ft
print("Three feet is ${threeFeet} meters")
// Prints "Three feet is 0.914399970739201
meters"
13
14. Optionals
var aNumber: Int = 42
var optionalNumber: Int? = nil
optionalNumber = 42
optionalNumber?.negate()
optionalNumber!.negate()
var aNumber: Int = 42
var optionalNumner: Int? = null
optionalNumner = 42
val incrementedNumber = optionalNumner?.inc()
val numberPlusPlus = optionalNumner!!.inc()
14
15. If let
var optionalNumber: Int? = nil
if let number = optionalNumber {
let incrementedNumber =
number.advanced(by: 1)
print(incrementedNumber)
}
optionalNumber?.let {
val incrementedNumber = it.inc()
print(incrementedNumber)
}
15
16. Lazy Stored Properties
A lazy stored property is a property whose initial
value is not calculated until the first time it is
used. You indicate a lazy stored property by
writing the lazy modifier before its declaration.
class DataManager {
lazy var importer = DataImporter()
var data = [String]()
}
let manager = DataManager()
manager.data.append("Some data")
manager.data.append("Some more data")
// the DataImporter instance for the importer
property has not yet been created
lazy() is a function that takes a lambda and
returns an instance of Lazy<T> which can serve
as a delegate for implementing a lazy property:
the first call to get() executes the lambda passed
to lazy() and remembers the result, subsequent
calls to get() simply return the remembered
result.
class DataManager {
val importer by lazy { DataImporter() }
var data = mutableListOf<String>()
}
val manager = DataManager()
manager.data.add("Some data")
manager.data.add("Some more data")
16
20. IBOutlet, IBAction vs ...
Outlets provide a way to reference interface objects from source code files.
An action (or an action method) is a piece of code that’s linked to an event that can
occur in your app.
20
23. Asset Catalog
Asset catalogs simplify access to app resources by mapping between named assets and one
or more files targeted for different device attributes.
23
25. UIStoryboardSegue
An object that prepares for and performs the
visual transition between two view controllers.
Explicit Intent
An Intent is a messaging object you can use to
request an action from another app component.
val intent = Intent(this,
ActivityB::class.java)
val myString = editText.text.toString()
intent.putExtra("qString", myString)
startActivity(intent)
25
26. UITableView
A table view displays a list of items in a single
column. UITableView is a subclass of
UIScrollView, which allows users to scroll
through the table, although UITableView allows
vertical scrolling only.
RecyclerView
26
27. UITableViewDataSource
It’s a protocol adopted by an object that mediates
the application’s data model for a UITableView
object. The data source provides the table-view
object with the information it needs to construct and
modify a table view.
RecyclerView.Adapter
It's an abstract class that provide a binding from
an app-specific data set to views that are
displayed within a RecyclerView.
27
func tableView(_ tableView: UITableView, cellForRowAt
indexPath: IndexPath) -> UITableViewCell {
let cell =
tableView.dequeueReusableCell(withIdentifier:
"LabelCell", for: indexPath)
cell.textLabel?.text = "Row (indexPath.row)"
return cell
}
func tableView(UITableView,
numberOfRowsInSection: Int) -> Int
fun getItemCount(): Int
fun onCreateViewHolder(parent:
ViewGroup?, viewType: Int): ViewHolder
fun onBindViewHolder(holder:
ViewHolder?, position: Int)
28. Cocoapods
CocoaPods is a dependency manager for Swift
and Objective-C Cocoa projects. It has over 52
thousand libraries and is used in over 3 million
apps.
Gradle
Gradle has built-in support for dependency
management and lives up the task of fulfilling
typical scenarios encountered in modern
software projects.
28
target 'MyApp' do
use_frameworks!
pod 'Alamofire', '~> 3.0'
end
pod install //generates a Podfile.lock
dependencies {
implementation fileTree(dir: 'libs',
include: ['*.jar'])
implementation
"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kot
lin_version"
implementation
"com.android.support:recyclerview-v7:28.0.0"
}
30. Final considerations
● Android and iOS development worlds seem not so different!
● Don’t reject other (mobile) technologies
● Stay curious!
● To study a slightly different technology helps you to better understand your
core technology
30