画面をつくる その2
前回からちょっと時間が経ってしまいましたが、画面の方を作っていこうと思います。
Viewクラスを継承したサブクラスを作成
今回参考としている本では、「View」クラスを継承したサブクラスを使って画面を作っていくとあるので、それに習ってプログラムをしていきます。
前回、クラスまでは作成したのでその中身を作っていきたいと思います。
エラー発生
本に書いてある内容を打ち込んで、実行してみるとエラーが発生してしまいました。
activity_main.xmlでエラーが発生していて、エラー内容は以下の通りです。
Resource id cannnot be an empty string (at 'id' with vakue '@+id/')
特にこのファイルは編集していないはずなのですが、何か設定が必要なのでしょうか?empty stringとあるので何か「@+id/」の部分に何か値を入れないと行けないのではないかと推測できます。
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:id="@+id/">
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/" /></RelativeLayout>
赤字の部分でエラーが起きている。
でも、何を入れれば良いのだろう?
activity_main.xmlって何だろう?
そもそも、「activity_main.xml」が何なのかが良く理解できていないので、調べてみると、これは画面レイアウト用のファイルみたいです。
詳しい内容は後で調べるとして、「android:id="@+id/"」の部分に何をいれればいいのかをまず調べてみたところ、idなので任意につけて良いみたいですが、後でわかりやすい名前にしたほうが良さそうです。
今回は下記の赤字部分の様に設定してみました。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:id="@+id/main" >
<TextView
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text1" /></RelativeLayout>
実行してみる
エラー箇所も修正したので、早速実行してみます。
今度は無事実行できるようになりました。
といっても、ただ単に白い画面を表示させただけなのですが・・・
ここまで来るだけで3時間ほど掛かってしまいました。
今日のメモ
クラスってなに?
ざっくりいうと、オブジェクトを生成するための雛形ということみたい。
雛形があることで、同じようなプログラムを毎回一からつくる必要がなくなり手間が省けるという用に理解したのですが、あっているのかな?
androidでの開発はjavaの知識が必要なので、後でもっと詳しく調べてみることにします。参考としている本に書いていある言葉の意味が良く理解できなくて、時間ばっかり掛かってしまいます。
この本読むだけで本当に、中学生はandroidの開発できるの?
あとで調べること
クラス (もっと詳しく調べる)
オブジェクト
activity_main.xml
Android Studioのupdateで怒られた
Android Studioのアップデートがあると表示されていたので、アップデート実行するとWarningが表示されて怒られました。
メッセージは
The Android SDK folder can no longer be inside the application folder.
Please move it to a differe3nt location such as your home folder.
といったよう内容でした。
【超〜適当訳】
SDKをアプリケーションフォルダに置かないで。
どっかの別のフォルダに移動してAndroid Studioを再起動してね。
で、プロンプトに新しい場所を入力してちょうだい。
と書いているようです。
ということで、メッセージに従ってsdkフォルダを移動させることにします。
アプリケーションフォルダに 「Andoroid Studio」のアイコンがあるので、「control」ボタンを押しながらクリックすることでメニューが表示されるので、「パッケージの内容を表示」を選択すると、中身を見ることができます。
で、その中のSDKフォルダを任意の場所に移動させます。
(私は、自分のホームディレクトリに置くことにしました。)
※GUIじゃなくてコマンドプロンプトでやるならこんな感じかな。
SDKフォルダの移動が完了しましたら、「Retry」ボタンを押下しupdateを続けます。
「Android Studio」が再起動されてきますので、プロジェクトを開こうとするとSDKの場所を教えてと、以下のウィンドウが表示されるので、SDKの場所を入力してあげます。
「・・・」ボタンを押下すると場所を選ぶウィンドウが表示されます。
私の場合は自分のホームディレクトリにsdkを置いたので、こんな感じでsdkフォルダを選んであげました。
すると、SDKフォルダの場所が入力されるので「OK」ボタンを押下します。
以上で、SDKフォルダの移動と場所の指定が完了となります。
画面をつくる その1
とりあえず、作成するアプリの内容もざっくりと考えたので、これから開発の方に入っていきたいと思います。
まずは、画面の方からつくっていこうと思います。
参考とする本
とりあえず、「中学生でもわかるAndroidアプリ開発講座」という本があったので、それを見ながら進めていこうと思います。
でも、この本Amazonのレビュー評価あまり良くないんですよね・・・
目を通してみると、今回用意した本は「Eclipse」という開発開発環境をつかっているので、「Andoroid Studio」用に読み替えていく必要がありますが、Androidというか、javaも初めての人間なのに大丈夫なのだろうかという不安がよぎります。
新しいプロジェクトの作成
とはいっても、手を動かす前に考えても仕方がないので、まずは本を見ながらつくっていきたいと思います。不明な点はgoogle先生に聞きながらやれば、なんとかなるでしょう、多分。
ということで、まずは新しいプロジェクトを作っていきます。
プロジェクトの作成は、1番最初にやったので大丈夫だと思いますので、早速新しいプロジェクトを作っていきます。
【プロジェクト設定項目】
Application name: Drivegame
SDK: Phone and Tablet Minimum SDK
Activity: Blank Activity
Activity Name: MainActivity
グラフィック描画用のクラスの作成
Androidの画面で画像を表示する方法として、この本ではグラフィック描画用のクラスを使って画像を表示させているので、それに習って画像を表示させていきます。
「そもそも、クラスって何?名前は聞いたことがあるけど・・・」
といった、初歩的なところからよく分からないのですが、まずはサンプルを参考に手を動かしていこうと思います。
まずは、新しいクラスを作成する必要があるので、作成していきます。
画面左側の「Drivegame」-「app」-「src」-「main」-「java」-「com.example.amohiko.drivegame」を選択します。
※「com.example.tamohiko.drivegame」の部分は、プロジェクト作成時に表示されていた「Pakage name」みたいです。
その後、画面上部のメニューから「File」-「New」と選択します。
「New」ウィンドウが表示されるので、「Java Class」を選択します。
「Create New Class」ウィンドウが表示されるので、作成するクラスの名前を入力し、「OK」ボタンを押下します。
無事新しいクラスが出来上がりました。
※このクラスをつくる作業を調べるだけでも、時間が掛かってしまいました・・・