白黒羊飼いの庭

unityで作るゲームの製作メモでしたが、最近は機械学習とかデザインとか何でもやってます

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

移転しました。

今後はこちらから更新します。

www.shirokurohitsuji.studio

 

 

 

基本的にはUnityで遊ぶかLinuxC++で計算するだけの人なので今回Androidアプリを学んでもしばらく離れると思いますがそのうちまた遊びたいのでググり記録を残しておきます。

 

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

 

使うソフト

 

 

プロジェクト作成

f:id:shirokurohitsuji:20180727132628j:plain

こんな感じで。
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」にそのまま貼り付けると使えるようになるみたいです。

material.io

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

 

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

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

f:id:shirokurohitsuji:20180728162427j:plain

「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が出てきたので倒します。

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

t-miliya612.hatenablog.com

 

 

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'

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

anton0825.hatenablog.com

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

stackoverflow.com

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

ベータ版を入れてみたのですが使いこなせなかったので公式の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すると、無事動きました。

 

日本語が入力できない

これです。

qiita.com

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

さっきからググってリンクを貼っているだけですが自分のためなので仕方がないのです。

 

ひとまずここまで。