writing a simple appevcomp.dcc.ufmg.br/wp-content/uploads/kotlin-firstapp.pdf · android studio -...

71
Writing a Simple App Fernando M. Q. Pereira [email protected]

Upload: others

Post on 31-May-2020

22 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

WritingaSimpleApp

[email protected]

Page 2: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Whatdoweneedtowriteanapp?

Page 3: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Whatdoweneedtowriteanapp?

-  IntegratedDevelopmentEnvironment

- AndroidStudio

-  Device- orEmulator

Page 4: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

WhichIDEsexistforAndroid?

Page 5: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

WhichIDEsexistforAndroid?

-  What'swhatabove?

Page 6: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

And,whataretheIDEsbelowthatsupportKotlin?

-  Anyothers?

VisualStudio

UnrealEngine

AndroidStudio

CoronaLabs IntelliJIDEA

ApacheCordova

Page 7: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

And,whataretheIDEsbelowthatsupportKotlin?

AndroidStudio

IntelliJIDEA

-  TryKotlin

-  Eclipse

-  Vim

-  SublimeTest

-  Atom

-  ...

Page 8: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

AndroidStudio

-  Google,JetBrains-  Kotlin,Java,C++

-  Freeware-  Sourcecode

Google intros Android Studio, an IDE for building appshttps://www.engadget.com/2013/05/15/google-android-studio/ ZachHonig,05.15.13

Google releases Android Studio 1.0, the first stable version of its IDEhttps://venturebeat.com/2014/12/08/google-releases-android-studio-1-0-the-first-stable-version-of-its-ide/ EmilProtalinsk,08.12.14

Page 9: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

StartingaProjectonAndroidStudio

Page 10: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

StartingaProjectonAndroidStudio

RemembertoenableKotlinsupport!

Page 11: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

StartingaProjectonAndroidStudio

WhichAPItochoose?

Page 12: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

StartingaProjectonAndroidStudio

Page 13: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

StartingaProjectonAndroidStudio

Page 14: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

TheStructureofaProject

-  Whatareeachofthesefilesandfolders?

Page 15: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

TheActivityCode

-  What'sanActivity?

-  Explainthesyntax"Bundle?",e.g.,thequestionmark.

packagecom.example.fernando.helloworld

importandroid.support.v7.app.AppCompatActivityimportandroid.os.Bundle

classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}}

Page 16: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

TheActivityCode

-  What'stheoverridekeyworddoing?

-  Whydon'twehavesemicolons?

packagecom.example.fernando.helloworld

importandroid.support.v7.app.AppCompatActivityimportandroid.os.Bundle

classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}}

Page 17: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

RunningtheApp

Page 18: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

EnablinganAndroidDevicetoRunourApp

1.  Onyourdevice,openSettings>AboutphoneandtapBuildnumberseventimes.

Page 19: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

EnablinganAndroidDevicetoRunourApp

1.  Returntothepreviousscreen(Settings).Developeroptionsappearsatthebottomofthelist.TapDeveloperoptions.

2.  EnableUSBDebugging.

Page 20: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

RunningtheAppontheDevice

-  Clickrun.

Selectthetargetdeviceyouwant

Page 21: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

RunningtheAppontheEmulator

-  EmulatorsimulatesanactualAndroiddevice

-  Incomingcalls-  Incomingtextmessages

- Geolocation- Simulatedifferentnetworkspeeds

- Hardwaresensors:- Rotationandbearing

- AccessGooglePlayStore

Page 22: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

AndroidVirtualDevice(AVD)

-  Hardwarecharacteristics-  Softwarecharacteristics-  Privatestorage

ThesameemulatorcanrundifferentAndroidVirtualDevices

Page 23: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

LaunchingtheEmulator

-  Viathecommandline

$cd/Users/pronesto/Library/Android/sdk/emulator$emulator-avdNexus_5X_API_28-netdelaynone-netspeedfull

-  Viatheandroidstudio- Run→Runapp

Page 24: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

LaunchingtheEmulator

-  Viathecommandline

$cd/Users/pronesto/Library/Android/sdk/emulator$emulator-avdNexus_5X_API_28-netdelaynone-netspeedfull

-  Viatheandroidstudio- Run→Runapp- Selectthevirtualdevice

Page 25: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

LaunchingtheEmulator

-  Viatheandroidstudio- Run→Runapp- Selectthevirtualdevice

Andbeaware:startingtheemulatormighttakeforever...

Page 26: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

LeavetheEmulatorinStandBy

-  Theemulator'sprocessisindependentfromAndroidStudio

-  YoucanevenstartitwithoutAS

Page 27: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

CreatinganewAndroidVirtualDevice

-  Viathecommandline

$cd/Users/pronesto/Library/Android/sdk/tools/bin$avdmanagercreateavd-ntest-k"system-images;android-25;google_apis;x86"

Page 28: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

CreatinganewAndroidVirtualDevice

-  Viathecommandline

$cd/Users/pronesto/Library/Android/sdk/tools/bin$avdmanagercreateavd-ntest-k"system-images;android-25;google_apis;x86"

-  Viatheandroidstudio- Tools→AVDManager

Page 29: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

CreatinganewAndroidVirtualDevice

-  Viathecommandline

$cd/Users/pronesto/Library/Android/sdk/tools/bin$avdmanagercreateavd-ntest-k"system-images;android-25;google_apis;x86"

-  Viatheandroidstudio- Tools→AVDManager→+CreateVirtualDevice

Page 30: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

CreatinganewAndroidVirtualDevice

-  Viathecommandline

$cd/Users/pronesto/Library/Android/sdk/tools/bin$avdmanagercreateavd-ntest-k"system-images;android-25;google_apis;x86"

-  Viatheandroidstudio- Tools→AVDManager→+CreateVirtualDevice

-  Youmustselectanimagetodownload

Page 31: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

CreatinganewAndroidVirtualDevice

Anotherthingthatcantakeforever...

Page 32: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

DEPARTMENTOFCOMPUTERSCIENCEUNIVERSIDADEFEDERALDEMINASGERAIS

FEDERALUNIVERSITYOFMINASGERAIS,BRAZIL

EDITINGTHEACTIVITY

Page 33: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Whatgoesintoeachfolder?

-  Let'sstarttakingalookintothelayoutfolder.Whatdoyouthinkwewillfindthere?

Page 34: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Thisviewhasfourparts.Whatarethey?

Page 35: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Canyoupicturethislayout?

<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity">

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>

Page 36: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Whatarethesetwoviews?

Page 37: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

DesignEditororTextEditor?

-  Bothviewshaveadvantagesanddisadvantages.Canyoulistthem?

Page 38: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Exercise:changethetextview

Page 39: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Whataretheresourcevalues?

-  Whatarecolors,stringsandstyles?

-  Howcanwecreatenewvalues?

Page 40: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Creatingnewstrings

<resources> <string name="app_name">HelloWorld</string> <string name="hello_Text">Hello World!</string> </resources>

activity_main.xml

strings.xml

Page 41: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Whataretheadvantagesofusingresources?

Page 42: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

AddinganewComponenttotheView

Page 43: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

HowtoDeterminethePositionoftheButton?

-  Forinstance,relativetotheTextView?

Page 44: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

HowtoDeterminethePositionoftheButton?

-  Forinstance,relativetotheTextView?

<Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="8dp" android:text="Button" app:layout_constraintTop_toBottomOf="@+id/textView" tools:layout_editor_absoluteX="147dp" />

Page 45: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Playingwiththelayout

-  Addasecondbuttontoyourview,andtrytopositionthemusingrelativeconstraitns,liketheblueprintontheright.

Page 46: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

PlayingwithAttributes

-  Trytochangetheattributesofbuttons.Addnewresourcestoyourcolorpalette.

<?xml version="1.0" encoding="utf-8"?> <resources> <color name="colorPrimary">#3F51B5</color> <color name="colorPrimaryDark">#303F9F</color> <color name="colorAccent">#FF4081</color> <color name="buttonBackground">#BBDEFB</color> </resources>

Page 47: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

PlayingwithAttributes

-  Trytoarriveatthelayoutontheright§.

§:takenfromhttps://codelabs.developers.google.com/codelabs/build-your-first-android-app-kotlin/index.html#5

Page 48: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

DEPARTMENTOFCOMPUTERSCIENCEUNIVERSIDADEFEDERALDEMINASGERAIS

FEDERALUNIVERSITYOFMINASGERAIS,BRAZIL

HANDLINGEVENTS

Page 49: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

LinkingJavaandXML

-  WhatisthecallsetContentView(...activity_main)doing?

packagecom.example.fernando.helloworld

importandroid.support.v7.app.AppCompatActivityimportandroid.os.Bundle

classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)}}

Page 50: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Addingasimpleevent

-  Wheneverweclickonthe"TOAST"button,weshalldisplaythe"HellowToast!"message.

-  Howtoconnectbuttonandevent?

funtoastMe(view:View){valmyToast=Toast.makeText(this,"HelloToast!",Toast.LENGTH_SHORT)myToast.show()}

Page 51: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Linkingviewandevent

Page 52: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

WecanedittheXMLlayoutdirectly

<Button android:id="@+id/toast_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="8dp" android:layout_marginLeft="24dp" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:background="@color/buttonBackground" android:onClick="toastMe" android:text="@string/str_toast" android:textSize="18sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView" />

Page 53: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

AddingtheEventHandlerProgramatically

classMainActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)valtoastButton=findViewById<Button>(R.id.toast)toastButton.setOnClickListener{toastMe()}}privatefuntoastMe(){valmyToast=Toast.makeText(this,"Hello!",Toast.LENGTH_SHORT)myToast.show()}}

Page 54: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Keepingtrackofstate

-  Wewouldliketoadda"countMe"eventontotheapp.

-  ItincrementsthetextwheneverwetouchCOUNT

-  What'sthestateinthiscase?

-  Howtokeeptrackofit?

Page 55: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Implementingthecounter

funcountMe(view:View){//GetthetextviewvalshowCountTextView=findViewById<TextView>(R.id.textView)//Getthevalueofthetextview.valcountString=showCountTextView.text.toString()//Convertvaluetoanumberandincrementitvarcount:Int=Integer.parseInt(countString)count++//Displaythenewvalueinthetextview.showCountTextView.text=count.toString();}

-  Howtoconnectbuttonandevent?

Page 56: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Associatingbuttonwithevent

Page 57: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Creatinganewactivity

-  Again:what'sanactivity?-  WhytohavemultipleactivitiesinanAndroidapp?-  CreateanewemptyactivitycalledSecondActivity.

Page 58: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.fernando.helloworld"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"></activity> </application> </manifest>

TheManifestFile

-  What'sthemeaningofthedifferententriesforactivities?

-  What'sthedifferencebetweenMAINandLAUNCHER?

Page 59: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

MAIN+LAUNCHER

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.fernando.helloworld"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SecondActivity"></activity> </application> </manifest>

Page 60: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

TheCodeoftheSecondActivity

-  Let'screatethelayoutforthisactivity.

packagecom.example.fernando.helloworld

importandroid.support.v7.app.AppCompatActivityimportandroid.os.Bundle

classSecondActivity:AppCompatActivity(){overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_second)}}

Page 61: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

AddingoneTextViewtothelayout

Page 62: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

TrytoaddthefollowingTextViewtotheLayout

-  Howwouldyouinvokethesecondactivity?

Page 63: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

InvokingtheSecondActivity

funrandomMe(view:View){//CreateanIntenttostartthesecondactivityvalrandomIntent=Intent(this,SecondActivity::class.java)//Startthenewactivity.startActivity(randomIntent)}

MainActivity.kt

-  AndhowtoassociatethismethodwiththeRANDOMbutton?

Page 64: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Associatingtheobserverwiththehandler

Page 65: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Thusfar,that'sallthatwehave

-  Howtogeneratearandomnumberbetween1andcount?

-  WeneedtotellSecondActivitywhat'sthevalueofcount.

- Howtodoit?

Page 66: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

GlobalVariables

classSecondActivity:AppCompatActivity(){//TOTAL_COUNTislikeastaticvariableinjavacompanionobject{constvalTOTAL_COUNT="total_count"}

overridefunonCreate(savedInstanceState:Bundle?){...}}

SecondActivity.kt

-  WestillneedtotellSecondActivitywhat'sthevalueofcount.

- Howtousetheglobalvariabletodoit?

Page 67: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Senddatafromanactivitytoanother

funrandomMe(view:View){//CreateanIntenttostartthesecondactivityvalrandomIntent=Intent(this,SecondActivity::class.java)

//GetthetextviewvalshowCountTextView=findViewById<TextView>(R.id.textView)

//Getthevalueofthetextview.valcountString=showCountTextView.text.toString()

//Convertthecounttoanintvalcount=Integer.parseInt(countString)

//AddthecounttotheextrasfortheIntent.randomIntent.putExtra(SecondActivity.TOTAL_COUNT,count)

//Startthenewactivity.startActivity(randomIntent)}

MainActivity.kt

Page 68: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Gettinginfofromanotheractivity

-  Now,SecondActivityneedstogettheinformationpassedbyMainActivity,anduseitasthelimittotherandomnumberthatitwilldisplay.- Howtodoit?

Page 69: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Displayingtherandomnumber

classSecondActivity:AppCompatActivity(){companionobject{constvalTOTAL_COUNT="total_count"}

overridefunonCreate(savedInstanceState:Bundle?){super.onCreate(savedInstanceState)setContentView(R.layout.activity_second)showRandomNumber()}

funshowRandomNumber(){...}}

SecondActivity.kt

-  WeneedtoimplementshowRandomNumber...

Page 70: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Displayingtherandomnumber

funshowRandomNumber(){//Getthecountfromtheintentextrasvalcount=intent.getIntExtra(TOTAL_COUNT,0)

//Generatetherandomnumbervalrandom=Random()varrandomInt=0

if(count>0){//AddonebecausetheboundisexclusiverandomInt=random.nextInt(count+1)}

//Displaytherandomnumber.findViewById<TextView>(R.id.textview_random).text=Integer.toString(randomInt)

//Substitutethemaxvalueintothestringresource//fortheheading,andupdatetheheadingfindViewById<TextView>(R.id.textview_label).text=getString(R.string.random_heading,count)}

SecondActivity.kt

Whatarethesetwoparameters?

Page 71: Writing a Simple Appevcomp.dcc.ufmg.br/wp-content/uploads/Kotlin-FirstApp.pdf · Android Studio - Google, JetBrains - Kotlin, Java, C++ - Freeware - Source code Google intros Android

Buildingstrings

<resources>...<stringname="random_heading">Hereisarandomnumberbetween0and%1d.</string></resources>

strings.xml