白黒羊

初心者のAndroidアプリ製作ことはじめの自分用メモ

1年以上前の下書きを元に書いているので情報が古いかもしれないです。

使うソフト: Android Studio

プロジェクト作成

こんな感じで。
Gitでバージョン管理するときは、先にGit側で同じフォルダ名のリモートリポジトリ作ってクローンしてから、そのクローンしたフォルダを選択してプロジェクトを作ると余計な手間がかからなくて良いなと思いました。

それから指定されていたこともあってKotlinを使いますがjavaのスクリプトのコピペをしてAndroidStudioさんにKotlinに変換してもらうということをします。すごいな〜〜

バージョンは「API22 : Android 5.1 (Lollipop)」にしました。現時点で62.6%の機種に対応できるということと、API21で開発すると既知のバグに遭遇するという記事を見たので。

f:id:shirokurohitsuji:20180727133048j:plain

初回はEmptyActivityを使っていましたが、FAB (Floating Activity Button)が最初から使われているBasicActivityで楽をすることを試みます。

最初にFABが全然実装できなくて丸一日潰した記憶があります。
「ImageButton」とかで検索して、丸くする方法を調べたり、図を張り付けたりして手動でなんとなくやっていたのですが、Android系のアプリにはほとんどあるし公式の方法でバチッとはまるのがあるんだろうなあとは思っていたので諦めきれず……。
作業の途中で「マテリアルデザイン」という言葉を拾ってからは割とすぐにたどり着くことができました。

BasicActivityは前述のFABを実装していることからCoordinatorLayoutが使われているのでこれをandroid.support.constraint.ConstraintLayoutに書き換えます。

FABのデザインをまともにする

ところで初期の設定でFABを使おうとするとよくイメージする「+」のボタンさえ作ることができません。

f:id:shirokurohitsuji:20180728155307j:plain

なにこれ……。

「BasicActivity」の選択画面からは「+」のボタンが良い感じに実装されているのかと思ったのに……。

下記リンクからアイコンをダウンロードして、 「app」>「src」>「main」>「res」にそのまま貼り付けると使えるようになるみたいです。

Icons – Material Design

でもこれ何かに書いてあったのを見つけたわけではないので本来どうすれば良いのかはわからない……。
正しいやり方があれば教えてください。

私が今回やったやり方を書いておきます。

先ほどのリンクのから左上の検索窓でほしいデザインを検索します。

「add」を選択状態にして、左下の「Selected Icon」をクリック。

f:id:shirokurohitsuji:20180728163015j:plain

青いPNGボタンをクリックしてzipをダウンロードします。
この中には「res」フォルダが入っていて色々なサイズのアイコンがあるので使うものをプロジェクトファイルの「app」>「src」>「main」>「res」にコピペしてから、xmlファイルを編集します。

線が引いてあるところを変えると、

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_margin="@dimen/fab_margin"
    android:layout_marginBottom="8dp"
    android:layout_marginEnd="8dp"
    android:src="@drawable/baseline_send_white_24"
    app:fabSize="normal" />
f:id:shirokurohitsuji:20180728163554j:plain

できた!

DataBindingを使う

つぎにDataBindingを使えるようにします。
build.gradle(module.app)のandroidに下記を加えます。

dataBinding {
    enabled = true
}

 それからactivity_main.xmlの冒頭を以下に書き換えます(layoutの追加)。

<layout 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.support.constraint.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

warningを倒す「use kotlin-stdlib-jdk7 instead」

w: C:\Users\user_name\.gradle\caches\modules-2\files-2.1\org.jetbrains.kotlin\kotlin-stdlib-jre7\1.2.51\fa510f846ca4894fdf26776dd64cefb4030dcd12\kotlin-stdlib-jre7-1.2.51.jar: kotlin-stdlib-jre7 is deprecated. Please use kotlin-stdlib-jdk7 instead というwarningが出てきたので倒します。

詳細は下記リンクに載ってました。私にはまだよくわかりませんでした。
そのうちわかるようになりたいです。

kotlin-stdlib-jreがdeprecatedになっていたので深掘りしてみた – t-miliya612のブログ

errorを倒す①「Failed to find style ‘cardViewStyle’ in current theme」

xmlファイル触っているといつも出てくるこの「Failed to find style ~ in current theme」。

Be導師日記 Android Studioでの failed to find style…. current theme ってエラー。を参照して、build.gradle(module.app)のdependenciesに追加しようと、アレ?

implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'

もうすでにありました。つまり他のことが原因なのか。

Android StudioでPreview時に「failed to find style ‘textviewstyle’ in current theme」エラー – 日々精進

これもちゃんと大丈夫なんだよな~と思いつつ、というかエミュレータで立ち上がりはするのでとりあえず放置。再起動しても消えることはない……。

android – failed to find style ‘cardView Style’ in current theme – Stack Overflow

うーん、どうやらアップデートで直るみたい?

ベータ版を入れてみたのですが使いこなせなかったので公式のAndroid3.2を待ちます……。

errorを倒す②「unresolved reference : databinding」

これで実行しよう!と思った矢先に大量のunresolved reference : databindingが出てきたので困りました。

どうやらKotlinを使うときに出てきてしまうエラーのようです。

gradleファイルに

apply plugin: 'kotlin-kapt'

dependencies {
    kapt "com.android.databinding:compiler:3.1.3"
}

を書き加えてSyncすると、無事動きました。

日本語が入力できない

これです。

Android Studioのエミュレータで日本語入力 – Qiita

何をしているのかというとエミュレータの「設定」を開いて言語設定をするというだけです。

さっきからググってリンクを貼っているだけですがひとまずここまで。