Mobile App Development 2021W Lecture 20

From Soma-notes
Jump to navigation Jump to search

Video

Video from the lecture given on March 29, 2021 is now available. Note that this recording ends a bit abruptly and early as there were technical issues.

Notes

Lecture 20
----------

* Tutorial 8 is finally posted
  - will be finalized this afternoon

* Tutorial 9 will come out by next Monday

* Assignment 4 will be due still on April 12
  - will come out this week, hopefully by Wednesday
  - will give away answers in class

* No Tutorial 10 (schedule will be updated)

* Final exam on April 23, 2 PM
  - same format as the midterm, just 2 hours instead of 80 min

* Solutions for A3 will be posted on Wednesday
  - turn in by Tuesday night if you haven't already


Kotlin is a bit funny about numbers
 - it does NO automatic conversions
 - a number with no decimals is an Int
 - a number with decimals is a Double
 - but then, how do you write a Float as a constant?
    - append with an F

Floats vs Doubles
 - floats use 4 bytes, doubles use 8 bytes
 - so, doubles allow for much greater precision
    - larger exponent and mantissa
 - both are binary representations of numbers in
   scientific notation

Android intents & activities go together
 - intents are messages to an app to do something
 - activities are screens that can be displayed in response to intents
    - an intent doesn't have to cause a screen to be
      displayed, but if you want to display a new screen
      (including the first one), it will start with an
      intent

 - so, to switch screens we generate and receive intents
 - also, to call outside apps, we send intents

Intents have two kinds: explicit and implicit
 - explicit specifies exactly what to do
 - implicit allows the receiver to interpret,
   may even be receivable by multiple apps

Code

Below is the layout created during class. The app was just the default Kotlin hello world (empty activity).

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.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:id="@+id/valueLabel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="33dp"
        android:layout_marginBottom="215dp"
        android:text="Value"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toStartOf="@+id/value" />

    <EditText
        android:id="@+id/value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="74dp"
        android:ems="8"
        android:inputType="numberDecimal"
        app:layout_constraintBaseline_toBaselineOf="@+id/valueLabel"
        app:layout_constraintEnd_toEndOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>