AndroidアプリをKotlinで作ろうとしてみた 2日め タイトルバー非表示×フォント変更×Admob
やってみたこと
画面全体に画像を表示させる
「SELECT」ボタンを押すと文字列「Sample」を表示させる
アプリ名の記載されたタイトルバーを表示させないようにする
Admobのテスト広告を表示させる(Googld SDK)
詰まったところ
- Android Studio上では画像が表示されるのに実機で表示されない
Android Studioで空のActivityを作ったときに標準で入る文言がPNG形式に対応していなかった。レイアウトxml内、該当ImageViewで画像ファイルを指定する部分を以下に修正。
android:src="@drawable/画像名(拡張子は除く)"
compatがよくわかっていないので調べなきゃこの先も詰まる気がする。
あと、思っていたよりもきめ細かい画像を背景に置かないとなかなか表示が荒い。
- Admobのテスト広告が表示されない
説明を雑に読み飛ばしすぎて、「アプリIDをコピペしないと動かない部分」「広告のユニットIDをコピペしないと動かない部分」の2種類があることに気づいていなかった。
なおFirebaseも同時に入れようとして余計こんがらがったので、こちらはまた今度。
- タイトルバーが消えない
こちらもcompat問題と関連していたような。MainActivityに修正しました。
その後、AndroidManifext.xml内で適用したいActivityごとに以下の属性を指定します。全体に雑に適用しようとしたけど無理でした。
android:theme="@android:style/Theme.NoTitleBar"
参考にしたもの
PNGが表示されない件
Admobが表示されない件
フォントの変え方(バージョンアップに伴い下記記事の手順が使えなかったので本家も参考にしました。そもそものやり方を知らなかったのでこちらの記事もありがたかったです)
タイトルバーが消えない件
次の予定
- ちょっと立ち止まって振り返りが必要な気がしてきたところ。主にcompatがついてたらどうなのって部分。
- Kotlinならではのもう少し短く書ける記法の適用
- ボタンを押したときに出る文字列のパターンを増やす
AndroidアプリをKotlinで作ろうとしてみた 1日め
何はともあれボタンと文字、おまけで、トースト
開発環境:Android Studio 3.2.1 (Windows 10 Pro)
デバッグ環境:HTC U Play
機能:
- 文字列「%s$d」を表示させる。
- 「SELECT」ボタンを押すとトースト「テストメッセージです」が出る。
プログラムとレイアウト
MainActivity.kt
package com.example.ああああ.myapplication
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.Toast
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val いいいい: Button = findViewById(R.id.うううう)
いいいい.setOnClickListener {
Toast.makeText(this, "テストメッセージです", Toast.LENGTH_SHORT).show()
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
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="@string/ええええ"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
android:textColor="@color/colorAccent" android:id="@+id/ええええ"
app:layout_constraintHorizontal_bias="0.501" app:layout_constraintVertical_bias="0.355"/>
<Button
android:text="@string/うううう"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/うううう"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintBottom_toBottomOf="parent" android:layout_marginTop="83dp"
app:layout_constraintTop_toBottomOf="@+id/うううう" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintVertical_bias="0.473"/>
</android.support.constraint.ConstraintLayout>
strings.xml
<resources>
<string name="app_name">My Application</string>
<string name="ええええ">%s$d</string>
<string name="うううう">select</string>
</resources>
ここが詰まった
USBデバッグでAndroid実機に送ったアプリが即落ちる
原因が複数あって手間取りましたが、
- そもそも実機用のUSBドライバーが入っていなかった
OEM USB ドライバのインストール | Android Developers
- val型のButton用変数の定義をonCreateの外側に書いていた
明示的に書かない限り変数は全部privateなのかな。
もっと短く書けるみたいだけどビルドに失敗した
Kotlin Android Extensionsを使ってもっとお洒落なコードにしたかったけれどできなかった。
書きながら調べてみたところ、単純にプラグインを入れていなかっただけのようでした。build.gradleを触っていなかった。
ここが面白かった
とはいえ短い
明示的に定義するあれこれがJavaより少ない気がします。また、かかった時間についてもコードとレイアウト分だけで考えるととても短いです。
次はExtensionsも使ってもっと短く、かつ分かりやすくできたらいいなと。
レイアウトの編集が楽しい
これまでGUIを編集することがあまりなかったこともあり、直感的な編集が楽しかったです。
次はこうしたい
画像を表示させたい
文字と場所が重なる時どうなるのか気になる。
変数を使って文字を変えたい
どうせならボタンを押した時に変えてみたい。
手元に紙の本があるという謎の心強さ
ペラペラめくれる is つよい。とりあえず一冊買ってみました。
Kotlinのサンプルが多く写経でのレベルアップを期待する面もあります。
以下、やってみようと思ったきっかけです。
続きを読む