Androidでのゲーム開発入門めも

3日程かけて調べたもの

#主な構成要素
##android.app.Activity
アプリの一つの画面の管理を司る。アプリは複数のActivityから構成されている。
画面を遷移していくとスタックにActivityが積まれていく。バックキーを押すと一つポップされて前の画面(Activity)に戻る。

iOSがアプリ単位で構成されているのに対してAndroidは画面(Activity)単位で構成されていて、そのお陰で複数のアプリを自由に行き来することが出来るみたい。

##android.graphics.Canvas
名前の通りキャンバスのようなクラス。Canvas::draw* といったメソッドを使うことでキャンバス上に線などを描くことが出来る。

##android.graphics.Paint
描画するときの線の色・太さ等を司る。筆のようなもの。

##android.graphics.drawable.Drawable
同じインタフェースで描画を行うためのインタフェース。実際の実装はDrawableを継承した上で行う。Canvasに用意されているメソッドはこれよりも低レベルと考えたほうが良いのかも。
[Y.A.M の 雑記帳: Android　Drawable Mutations](http://y-anz-m.blogspot.jp/2010/10/androiddrawable-mutations.html)


##android.view.View
Canvas上にどのように描くかを司るクラスのインタフェース。
画面を描画はActivity::setContentViewにViewを登録することで行う。

###android.widget.*
Button等よくある部品。

###android.view.ViewGroup
複数のViewをまとめあげるためのView。
実際にはandroid.widget.LinearLayout等、ViewGroupを継承したクラスを用いる。

#リソース
[Android リソースとは | Tech Booster](http://techbooster.org/android/resource/105/)

##resディレクトリ以下の構成
[リソースタイプとファイルの設置 - Android入門](http://www.javadrive.jp/android/xml_layout/index1.html)

##リソースIDの参照
プログラム上では：　R.リソース種類.リソース名
xml上では　　　：　@リソース種類/リソース名

[リソースの参照 - リソース管理 - Android入門](http://www.javadrive.jp/android/xml_layout/index4.html)

##リソースの参照
Resouces res = getResources();
res.get

#複数の解像度の対応
+ [解像度・ピクセル密度の異なる複数の端末に対応する方法 «  Tech Booster](http://techbooster.jpn.org/andriod/resource/1212/)
+ [Yukiの枝折: Android:画面密度によるリソースのスケーリング](http://yuki312.blogspot.jp/2012/02/blog-post.html)


#AndroidManifest.xml
[Androidアプリ開発！！: AndroidManifest.xml-01（Manifest.xml書き方）](http://androidgamepark.blogspot.jp/2013/11/androidmanifestxmlmanifestxml.html)

#フルスクリーン

```
View decor = this.getWindow().getDecorView();
decor.setSystemUiVisibility(
    View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
    | View.SYSTEM_UI_FLAG_FULLSCREEN
    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
);
```

[[Android 4.4] フルスクリーンで動くアプリを作る | Lab](http://blog.techfirm.co.jp/2013/12/04/android-4-4-%e3%83%95%e3%83%ab%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%81%a7%e5%8b%95%e3%81%8f%e3%82%a2%e3%83%97%e3%83%aa%e3%82%92%e4%bd%9c%e3%82%8b/)


#APIレベルの取得
Build.VERSION.SDK_INT

##APIレベルとバージョンの対応表
| androidバージョン |       コードネーム | APIレベル |   Build.VERSION_CODES. |
|----------------:|-----------------:|---------:|-----------------------:|
|             1.0 |                  |        1 |                   BASE |
|             1.1 |                  |        2 |               BASE_1_1 | 
|             1.5 |          Cupcake |        3 |                CUPCAKE |
|             1.6 |            Donut |        4 |                  DONUT |
|             2.0 |           Eclair |        5 |                 ECLAIR |
|           2.0.1 |                  |        6 |             ECLAIR_0_1 |
|             2.1 |                  |        7 |             ECLAIR_MR1 |
|             2.2 |            Froyo |        8 |                  FROYO |
|     2.3 – 2.3.2 |      Gingerbread |        9 |            GINGERBREAD |
|   2.3.3 – 2.3.7 |                  |       10 |        GINGERBREAD_MR1 |
|             3.0 |        Honeycomb |       11 |              HONEYCOMB |
|             3.1 |                  |       12 |          HONEYCOMB_MR1 |
|             3.2 |                  |       13 |          HONEYCOMB_MR2 |
|     4.0 – 4.0.2 | IceCreamSandwich |       14 |     ICE_CREAM_SANDWICH |
|   4.0.3 – 4.0.4 |                  |       15 | ICE_CREAM_SANDWICH_MR1 |
|             4.1 |        JellyBean |       16 |             JELLY_BEAN |
|             4.2 |                  |       17 |         JELLY_BEAN_MR1 |