Mobile App Dev 2021W: Tutorial 5: Difference between revisions

From Soma-notes
No edit summary
Line 5: Line 5:
[https://homeostasis.scs.carleton.ca/~soma/mad-2021w/code/Converter1A.zip Converter-1A.zip]
[https://homeostasis.scs.carleton.ca/~soma/mad-2021w/code/Converter1A.zip Converter-1A.zip]


===java/carleton.comp1601.converter_1a/MainActivity===
===app/java/carleton.comp1601.converter_1a/MainActivity===


<syntaxhighlight lang="kotlin" line>
<syntaxhighlight lang="kotlin" line>
Line 49: Line 49:
</syntaxhighlight>
</syntaxhighlight>


===res/layout/activity_main.xml===
===app/res/layout/activity_main.xml===


<syntaxhighlight lang="xml" line>
<syntaxhighlight lang="xml" line>
Line 86: Line 86:




===res/values/strings.xml===
===app/res/values/strings.xml===


<syntaxhighlight lang="xml" line>
<syntaxhighlight lang="xml" line>

Revision as of 23:03, 26 February 2021

This tutorial is in development.

Code

Converter-1A.zip

app/java/carleton.comp1601.converter_1a/MainActivity

package carleton.comp1601.converter_1a

import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {
    private lateinit var editTemperature: EditText
    private lateinit var result: TextView
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        result = findViewById(R.id.result)
        editTemperature = findViewById(R.id.editTemperature)
        editTemperature.addTextChangedListener(watcher)
    }
    private val watcher = object : TextWatcher {
        override fun afterTextChanged(s: Editable) {
            val Fs = editTemperature.getText().toString()
            var F = Fs.toDoubleOrNull()

            if (F == null) {
                result.setText("Please enter a number to convert.")
            } else {
                val C = (F - 32.0) * (5.0 / 9.0)
                result.setText(String.format("%s Farenheit is %.2f Celsius", Fs, C))
            }
        }

        override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
        }

        override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
        }
    }
}

app/res/layout/activity_main.xml

<?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">
    <LinearLayout
        android:orientation="vertical"
        android:padding="10sp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <EditText
            android:id="@+id/editTemperature"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:ems="10"
            android:gravity="center"
            android:hint="Enter Farenheit"
            android:inputType="numberSigned" />

        <TextView
            android:id="@+id/result"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/message"
            android:textAppearance="@style/TextAppearance.AppCompat.Large" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>


app/res/values/strings.xml

<resources>
    <string name="app_name">Temperature Converter</string>
    <string name="message">Enter a number please</string>
</resources>