Basics
There are two tools: NDK
and SDK
. Each tool has a version.
Android has a concept of Android native API level
.
There are three environment variables to set:
ANDROID_NDK_ROOT
ANDROID_SDK_ROOT
ANDROID_HOME
The name of the app is determined by <application android:label
in
AndroidManifest.xml
. We can use @string/app_name
.
The title of the nav bar is determined by <activity android:label
in AndroidManifest.xml
.
Button click:
val button: Button = findViewById(R.id.button1)
button1.setOnclickListener {
Toast.makeText(this, "Clicked me!", Toast.LengthShort).show()
}
The menu is added in res/menu
The directory res/menu
is created by
us manually. After creating the directory, we can right click it, and select
menu resource file
. If we name it main
, it will create a file main.xml
inside res/menu
. Inside main.xml
, each menu item contains something like
below:
<item android:id="@+id/add_item" android:title="Add" />
After creating main.xml
, click the menu Code -> Override Method
, select
onCreateOptionsMenu
:
menuInflater.inflace(R.menu.main, menu)
return true
To define a function when a menu item is clicked, click the menu Code->Override Method
,
select onOptionsItemSelected
.
when (item.itemId) {
R.id.add_item -> { xxx }
R.id.remove_item -> { xxx }
}
return true
To destroy an activity, call finish()
.
TextView
It is a label in other GUI.
<TextView
android:id="@+id/textView"
android:text="hello world"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
To change the alignment, use android:gravity
.
android:gravity="center"
// top, bottom, center, start, end
// center_vertical|center_horizontal
To change the color, use android::textColor
android::textColor="#00ff00"
To change the font size, use android::textSize="24sp"
EditText
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="this is some hint"
android:maxLines="10"
/>
To get the text of EditText in the kotlin code, use:
val inputText = editText.text.toString()
LinearLayout
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
orientation
can also be horizontal
.
view binding
Edit app/build.gradle
, add the following:
android { ...
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
}
}
Then in the main activity, use:
// activity_main.xml -> AcitvityMainBinding
import com.bignerdranch.android.geoquiz.databinding.ActivityMainBinding
private lateinit var binding: ActivityMainBinding
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
binding.trueButton.setOnClickListener { view: View -> }
binding.falseButton.setOnClickListener { view: View -> }