Dieser Artikel ist der erste von "Entwicklung von Android-Anwendungen: Wie implementieren Sie dies?"
Das Hauptziel ist (willkürlich) die Annahme "Anfänger und Fortgeschrittene, die bald Google gelernt haben" wie ich. Da es sowohl Java als auch Kotlin erklärt, sagen auch diejenigen, die sagen: "Ich verstehe die Implementierung in Java, aber wie schreibt man sie in Kotlin?" Ich hoffe es wird nützlich sein.
Ein Beispiel für dieses Projekt finden Sie unter dem folgenden Link. Der Hauptzweig ist der Kotlin-Quellcode und der Java-Zweig ist der Java-Quellcode.
https://github.com/Dai1678/SampleCodePrograms
Ich denke, es ist das erste, was mich beeindruckt, wenn ich anfange, Android-Apps zu entwickeln.
Als Beispiel
Das habe ich versucht.
Android Studio 3.0+ Bestätigter Betrieb unter Android 8.0
Fügen Sie der Gradle-Datei die folgende Anweisung hinzu, da die Schaltfläche "Floating Action" verwendet wird.
build.gradle
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 27
defaultConfig {
applicationId "net.ddns.dai.samplecodeprograms"
minSdkVersion 15
targetSdkVersion 27
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
implementation 'com.android.support:design:27.1.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
Die Art und Weise, wie FloatingActionButton umgeschrieben wird, ist je nach Root-Tag etwas anders. Bitte beachten Sie entsprechend dem Layout der Anwendung, die Sie machen.
activity_button_sample.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
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"
android:orientation="vertical"
tools:context="net.ddns.dai.samplecodeprograms.ButtonSampleActivity">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Über die Implementierung von Button" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/changeText"
android:text="Bitte drücken"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:id="@+id/textChangeButton"
android:text="Button"/>
</LinearLayout>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/btn_star" />
<!-- @dimen/fab_margin -> 16dp -->
</FrameLayout>
</LinearLayout>
Der wichtige Teil ist, dass der Inhaltsteil von FrameLayout umgeben ist. FrameLayout wird verwendet, wenn Sie View überlappend anzeigen möchten. Weil es einen schwebenden Aktionsknopf gibt. Es ist zu beachten, dass die Komponenten in diesem Layout nicht positioniert werden können (alle oben links angezeigt). Platzieren Sie die Komponenten, indem Sie LinearLayout einfügen.
In diesem Fall kann die Position der schwebenden Aktionstaste als "android: layout_gravity =" bottom | end "" angegeben werden.
Sie müssen FrameLayout nicht verwenden, da Sie sie an relativen Positionen platzieren können. Es ist in Ordnung, wenn Sie die Position wie ↓ angeben.
activity_button_sample.xml
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_dialog_email" />
Wie ich später erklären werde, ist es in Ordnung, über FloatingActionButton genauso nachzudenken wie über das relative Layout. Wenn Sie beim Erstellen einer neuen Aktivität die Option Basisaktivität auswählen, wird diese standardmäßig verwendet. Wenn Sie es noch cooler verwenden möchten, sollten Sie es vielleicht verwenden?
Ich denke, es gibt verschiedene Möglichkeiten, die Tastenverarbeitung zu beschreiben. Es gibt zwei Möglichkeiten, wie ich es richtig benutze. Ich werde kurz in Java und Kotlin mit Quellcode erklären.
--Wenn es nur einen Button-Prozess gibt (FloatingActionButton wird als Beispiel weggelassen)
ButtonSampleActivity.java
public class ButtonSampleActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_sample);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
boolean flag = false;
Button button = findViewById(R.id.textChangeButton);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
TextView textView = findViewById(R.id.changeText);
if (flag){
textView.setText("Bitte drücken");
button.setText("BUTTON");
flag = false;
}else{
textView.setText("Taste wurde gedrückt!");
button.setText("Rückkehr");
flag = true;
}
}
});
}
}
Dies ist eine Methode, die häufig in Beispielcode eingeführt wird, der auf vielen Websites und Android-Entwicklern veröffentlicht wird. Ich verwende eine anonyme Klasse innerhalb der onCreate-Methode. Wenn Sie ein oder zwei Schaltflächen haben, können Sie dies auf diese Weise tun.
--Wenn es mehrere Button-Prozesse gibt
ButtonSampleActivity.java
public class ButtonSampleActivity extends AppCompatActivity implements View.OnClickListener {
Button button;
boolean flag = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_button_sample);
ActionBar actionBar = getSupportActionBar();
if (actionBar != null){
actionBar.setDisplayHomeAsUpEnabled(true);
}
button = findViewById(R.id.textChangeButton);
button.setOnClickListener(this);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.textChangeButton:
TextView textView = findViewById(R.id.changeText);
if (flag){
textView.setText("Bitte drücken");
button.setText("BUTTON");
flag = false;
}else{
textView.setText("Taste wurde gedrückt!");
button.setText("Rückkehr");
flag = true;
}
break;
case R.id.fab:
Snackbar.make(view, "fabelhaft wurde gedrückt!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
break;
}
}
}
Wenn Sie keine anonymen Klassen verwenden möchten, implementieren Sie OnClickListener. Bitte schreiben Sie zunächst in die erste Zeile.
Wenn Sie eine Fehlermeldung mit der roten Linie erhalten, verwendet die rote Sprechblase die Methode publick void onClick (View view) {}
unter Android Studio.
Sie werden aufgefordert, eine zu erstellen. Wenn Sie diese ausführen, wird automatisch eine Methode für Sie erstellt. (Du kannst es selbst schreiben)
Bei der onClick-Methode wird die ID der in xml angegebenen Schaltfläche von "view.getId ()" erfasst und die Verarbeitung aufgeteilt.
FindViewById und setOnClickListener (this) können leicht vergessen werden. Achtung! (Es kann durch Verwendung von Butter Knife oder Data Biding vereinfacht werden, aber ich wollte nicht, dass es sich wesentlich vom vorhandenen Schreibstil ändert. Nicht eingeführt. )
Es ist auch in build.gradle geschrieben, aber hier haben wir kotlin-android-extensions
eingeführt.
Dies ist sehr praktisch. Sie können den in xml angegebenen ID-Namen so verwenden, wie er ist, und die Codemenge kann sehr gering sein.
--Wenn es nur einen Button-Prozess gibt
ButtonSampleActivity.kt
class ButtonSampleActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_button_sample)
val actionBar = supportActionBar
actionBar!!.setDisplayHomeAsUpEnabled(true)
var flag = false
//kotlin-android-Dank der Erweiterungen können Sie die ID von xml angeben, ohne einen Satz von findViewById zu schreiben! !!
textChangeButton.setOnClickListener { view ->
flag = if (flag){
changeText.text = "Bitte drücken"
textChangeButton.text = "BUTTON"
false
}else{
changeText.text = "Taste wurde gedrückt"
textChangeButton.text = "Rückkehr"
true
}
}
}
}
Es ist viel sauberer als der Java-Quellcode, nicht wahr? Keine findViewById, nutzlose Nullprüfungen, onClick und Semikolon! Okay, lass uns jetzt mit Kotlin anfangen ()
--Wenn es mehrere Button-Prozesse gibt
ButtonSampleActivity.kt
class ButtonSampleActivity : AppCompatActivity(), View.OnClickListener {
private var flag = false
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_button_sample)
val actionBar = supportActionBar
actionBar!!.setDisplayHomeAsUpEnabled(true)
//kotlin-android-Dank der Erweiterungen können Sie die ID von xml angeben, ohne einen Satz von findViewById zu schreiben! !!
textChangeButton.setOnClickListener(this)
fab.setOnClickListener(this)
}
override fun onClick(view: View) {
when (view.id){ //Da es keine switch-Anweisung gibt, verwenden Sie die when-Anweisung
R.id.textChangeButton -> {
this.flag = if (flag){
changeText.text = "Bitte drücken"
textChangeButton.text = "BUTTON"
false
}else{
changeText.text = "Taste wurde gedrückt"
textChangeButton.text = "Rückkehr"
true
}
}
R.id.fab -> {
Snackbar.make(view, "fabelhaft wurde gedrückt!", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
}
}
}
}
Dies ist auch eine Methode zum Schreiben der onClick-Methode außerhalb der onCreate-Methode. Was ich über diesen Quellcode wissen möchte, ist, dass er sich von Java unterscheidet.
Was für ein Ort wie.
Es beschreibt detailliert den Charme und die Notation von Kotlin.
Schreiben Sie um Text wie TextView und EditText.
Ich würde es gerne Junioren an der Universität zeigen, aber ich wäre dankbar, wenn Qiita-Benutzer Kommentare abgeben könnten, wenn Nachfrage besteht. Wenn Sie Fehler haben, stellen Sie bitte eine Korrekturanfrage.
Recommended Posts