スマホプログラミング:2.Androidプログラミング入門
6
0
0
全文
(2) Android の SDK は,細かな単位でインストール. name が重複していると新規に登録することができ. 制御をすることが可能です.それぞれの Android. ませんので,慎重に設定しておく必要があります.. のバージョンのイメージ以外にも,Android の端末. 次 に 開 発 す る ア プ リ の 対 象 を 選 択 す る 画面と. を開発機器として認識させる USB ドライバや,古. なります.今回は何も変更せず,Phone and tab-. いバージョンの端末に新しいバージョンの機能を追. let の Minimum SDK を API 15(Android 4.0.3. 加するサポートライブラリなどもここからインス. IceCreamSandwich)とします.Android は,API. トールすることができます.. Level として整数値がそれぞれのバージョンで割. ダウンロードするコンポーネントの一覧が表示され. り振られており,その数値の大小で動作するバー. ますので,Finish を押してダウンロードを開始します.. ジョンかどうかを判定しています.今回の指定では,. しばらくすると,インストールが完了し,An-. API 15(Android 4.0.3)以上の端末で動作するこ. droid のプロジェクトを作成できる状態となりました. とを意味しています. Next を押すと,プロジェクトの雛形が自動で生. (図 -1) . いよいよ次の章から,Android のプロジェクトを. 成されます.. 作成していきます.. 次の画面で,作成するアプリの画面パターンを選 択する画面が表示されます.アプリで使用する画面. プロジェクトの新規作成. と近いものを選択すると,Java のソースコードおよ. Android のアプリは,プロジェクトの単位でアプ. び XML(Extensible Markup Language)で記述され. リを開発します.Start a new Android Studio proj-. たレイアウトファイルが自動生成されますので非常. ect より,新たなプロジェクトを作成します.. に便利な機能です.. まずは以下の値を入力してください.. 今回は Empty Activity からアプリを作成してい. 項目名 Application name Company domain. 値. Android tutorial. example.ipsj.or.jp. きます(図 -2) . 次のステップは Activity とレイアウトファイル の名称を入力する画面となります.. Application name には作成アプリの名前,Compa-. 以下の値を入力し,Finish を押すとプロジェク. ny domain には,アプリを開発する会社や組織のド. トが生成されます.. メインを指定し,逆順に並べたものをそれぞれのア プリに Package name として固有の値を持たせます.. Activity Name. Google play でアプリを公開する場合には,Package. Layout Name. ■図 -1 Android Studio スタート画面. MainActivity. activity_main. ■図 -2 Empty Activity |2| Android プログラミング入門 情報処理 Vol.59 No.2 Feb. 2018. 129.
(3) 小特集. Special Feature. 生成が終わると,Android 上で実行可能な Hello. 想の Android 端末を作成するエミュレータの機能. world が表示されるアプリとなっています.. があります.Android の端末を準備できない場合に は,エミュレータでアプリを動作させ,実機と同様. プロジェクトの構造. にアプリの検証することができます.. Android Studio は,素早く開発を行うためにあ. まずは Android Studio の上部ツールバーにあ. らかじめ多くのディレクトリとファイルを自動的に. る,AVD Manager を起動します.左下の Create. 生成します.実際のプロジェクト内のフォルダ構. Virtual Device ボタンを押すと,さまざまな機種の. 成は,細かく階層の深い構造をしていますが,An-. 画面サイズが表示されますので,任意のサイズを選. droid Studio の左側にある Project ビューでは,シ. 択してください.. ンプルでより扱いやすい構造で表示されます.. 次に,Android の OS バージョンを選択する画面. プロジェクトでは,モジュールという単位でアプ. が表示されます.今回のプロジェクトでは API 15. リやライブラリが管理されており,自動で作成した. が最小のバージョンとなっていますので,そのバー. プロジェクト内には,app というモジュールが作成. ジョン以上の OS を選択します.. されています.あらたにモジュールを追加すること. 最後に,作成したエミュレータに対して任意の名. で,複数のアプリを作成することや,複数のアプリ. 称をつけます.これで Android のエミュレータが. から参照される機能をまとめたライブラリを追加す. 作成されました.. ることも可能です. 名称 app/manifests. app/java. app/res app/res/drawable app/res/layout. app/res/mipmap. app/res/values. Gradle Scripts. 概要. アプリの内部の構造や,使用する機能など, 基本的な情報を定義するファイルです.. Java のソースコードを格納するディレクト リです.アプリの処理はツリーでは表示が ない main,ユニットテストは androidTest や test にソースコードを追加していきます.. アプリの実行 Android では Gradle と呼ばれるビルドシステム を使用して,アプリのビルドを行います. アプリの実行は,コンパイルのエラーが出ていな い状態で,画面上部のツールバーにある三角形の. アプリで使用する画像や文字を格納する ディレクトリです.リソースの種類によっ て格納するディレクトリが決まっています.. 実行ボタンを押すと,Android のエミュレータや開. 画面のレイアウトを定義する XML ファイル を格納します.. Gradle によるビルドが始まり,その後デバイスに. アプリで使用する画像を格納します.. Android4.2 から利用できる新しい画像の表 示方法です.拡大縮小のアニメーション時 にも最適なビットマップを使用してくれる 機構が備わっています. アプリで使用する文字列,サイズ,色など を XML で定義するディレクトリです.. アプリをビルドするための各種設定が定義 されています.build.gradle はプロジェク ト全体とモジュールに用意されており,モ ジュールの build.gradle にてバージョン情 報や依存するライブラリなどを定義します.. 発用のパソコンに接続された Android の一覧が表 示され,どのデバイスで実行するかを選択すると, 転送されて画面上に Hello World! が表示されます.. サンプルアプリの作成 ここからは,先ほど作成したプロジェクトに処理 を追加して,数字をカウントしていくアプリを作成 していきます. 画面上に現在のカウント値を表示し,+1 ボタン を押すとカウント値をインクリメント,リセットボ. エミュレータの作成 Android の SDK には,開発するパソコン内に仮 130. 情報処理 Vol.59 No.2 Feb. 2018 | 小特集 | スマホプログラミング. タンを押すと 0 に戻る機能を実装してみましょう (図 -3)..
(4) レイアウトファイルの作成. XML を直接入力して編集する Text での編集モー. Android では,XML を用いて View と呼ばれる. ドを任意で選ぶことができます.. 画面の部品を並べて画面のレイアウトを作成します.. 今回は,プロジェクト作成時に生成されたレイア. Java のプログラムコードでも View を作成してい. ウトファイルを編集して次のようなレイアウトファ. くことはできますが,複雑な GUI(Graphical User. イルにします.. Interface)を構成するとなるとコード量が増え,保. ■ res/layout/activity_main.xml(参照 -1). 守にも大変時間がかかりますので XML で作成する. LinearLayout は,中に含まれる View を縦また. 方法がおすすめです.. は横に一直線に並べるレイアウトです.orientation. さまざまな画面の解像度が存在する Android で. の属性を vertical にすると縦,horizontal にすると. は,座標の指定をした絶対値での View の配置や,. 横に View を並べることができます.. フォントサイズを指定することは推奨されていませ. 今回のチュートリアルでのレイアウトは,Lin-. ん.相対的な値や指定方法を用いて柔軟なレイアウ. earLayout の中に TextView と呼ばれるテキストを. トを作成する必要があります.. 表示する View と,その名の通りのボタンを表示す. まずは左側の Project ビューより,res/layout/. る Button とを縦に並べています.. main.xml を開いてみましょう.View には,ボタ. ボタンや,カウント値を表示する TextView な. ンやテキストを入力する EditText,ドロップダウ. ど,ソースコードから参照するものは,id の属性で. ンのリストを表示する Spinner,など一般的なソフ. View に ID をつけ,ソースコード上から参照するし. トウェアで使用される部品が用意されています.そ. ます.具体的な参照方法は, 次節で詳しく説明します.. れらを Palette よりドラッグ・アンド・ドロップ. それぞれの View で指定されている layout_width. して画面上に配置する Design での編集モードか,. および layout_height は,View の高さを指定する. <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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:orientation="vertical" android:gravity="center" tools:context="jp.or.ipsj.example.MainActivity"> <TextView android:id="@+id/text_count" android:layout_width="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:gravity="center" android:textAppearance="@style/TextAppearance.AppCompat.Display4" /> <Button android:id="@+id/button_increment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/plus_one" /> <Button android:id="@+id/button_reset" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/reset" />部様 </LinearLayout> ■図 -3 サンプルアプリ. ■参照 -1 res/layout/activity_main.xml |2| Android プログラミング入門 情報処理 Vol.59 No.2 Feb. 2018. 131.
(5) 小特集. Special Feature. 属性です.wrap_content を指定すると中の要素に. のシステム上より呼び出しされるようになります.. 合わせて最小のサイズ,match_parent を指定する. iOS のアプリとは異なり,複数のエンドポイントを. と画面いっぱいに引き伸ばすことができます.し. 持つアプリも作成することができます.. かし match_parent を指定してしまうと,定義し. ここからはその Activity に処理を実装し,ボタ. た View が画面いっぱいに引き伸ばされ,以後の. ンを押したときのイベントを実装していきます.. View が画面に入りきらない画面となってしまいま. ■ MainActivity.java(参照 -3). す.そういった際には,layout_weight というパラ. Activity を継承したクラスを作成し,onCreate. メータを用いて,比率でレイアウトの幅や高さを指. と呼ばれるメソッドをオーバライドすると,アプリ. 定することができます.. の起動時にこのメソッドが呼び出されます.その時. gravity の属性は,center/left/top/right/bottom な. にどのような画面を表示するかを setContentView. どの値を指定して,中に含まれる View をどの位置. メソッドを使って指定します.. に寄せるかを指定することができるものです.bot-. res ディレクトリに,レイアウトファイルや画像. tom|right のように複数の値をバーティカルバーで区. などを格納すると,Android のビルドシステムが R. 切って指定をすることもできます.今回のアプリで. クラスというものを生成し,ファイル名やレイアウ. は, centerを指定して中のViewを中央に寄せています.. トで定義した ID の名称で定数が自動的に作成され. textAppearance の属性は,あらかじめ用意された文. ますので,R. layout. activity_main のように,どの. 字のスタイルを適応することで,アプリで使用されて. レイアウトを使うかを指定することができます.. いるフォントの統一感を出すことができます.. ほ か に も Activity に は,onResume,onStart,. TextView や Button に設定されている text 属性は,そ. onStop,onDestroy など,アプリの起動時や再開時,. れぞれの View に表示する文字列を指定するための. 終了時などさまざまなタイミングで呼ばれるメソッ. ものです.直接文字列を指定することも可能ですが,. ドが準備されており,そのタイミングに処理が必要. res/values/strings.xml ファイルに文字列を定義し,そ. であれば,オーバライドして処理を実装することが. れを参照する実装方法が一般的です.外部に文字列を. できるように設計されています.. 集約して定義することにより,多くの言語に対応する. レイアウトファイルで定義した View は,find-. アプリの作成を容易に実現することができます.. ViewById メソッドで ID を指定すると,View 型. ■ res/values/strings.xml(参照 -2). のオブジェクトとしてソースコード上に読み込むこ とができます.それを Button 型や TextView 型に. ボタンのイベント処理を追加. キャストして,アプリで必要な処理を実装します.. Android では,Activity というクラスを継承す. 今回は,このボタンが押されたときに処理を実装. ることでアプリの画面を作成することができます.. しますので,setOnClickListener メソッドで OnClick-. Activity は AndroidManifest と呼ばれるファイル. Listener というインタフェースをセットします.On-. にクラス名と起動条件を定義することで,Android. ClickListener をセットしておくと,ボタンが押され. <resources> <string name="app_name">Android tutorial </string> <string name="plus_one">+ 1 </string> <string name="reset">Reset </string> </resources> ■参照 -2 res/values/strings.xml. 132. 情報処理 Vol.59 No.2 Feb. 2018 | 小特集 | スマホプログラミング.
(6) たときのイベントが onClick メソッドにコールバッ. droid です.さらなる勉強をして,Android のアプ. クされますので,このタイミングでボタンをカウン. リを公開してみませんか?. トする処理やカウントをリセットする処理を実装し ます. このように少しのソースコードを実装するだけ で, 簡 単 に ア プ リ が 開 発 で き て し ま う の が An-. (2017 年 10 月 29 日受付) 石丸宗平 [email protected] システムエンジニアとしてアプリの開発やシステムの開発に従事. また Code for などのシビックテックの活動にも積極的に参加している.. package jp.or.ipsj.example.androidtutorial; import import import import import. android.support.v7.app.AppCompatActivity; android.os.Bundle; android.view.View; android.widget.Button; android.widget.TextView;. public class MainActivity extends AppCompatActivity implements View.OnClickListener { /** カウント値を表示するView */ private TextView mCountView; /** カウント値 */ private int mCount; /** * Activityが生成されるときに呼ばれるメソッド */ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* XMLのレイアウトファイルを表示する */ setContentView(R.layout.activity_main ); /* レイアウトファイルのViewを参照する */ mCountView = (TextView) findViewById(R.id.text_count ); /* クリックされたときのコールバックを設定する */ Button incrementButton= (Button) findViewById(R.id.button_increment ); incrementButton. setOnClickListener(this); Button resetButton = (Button) findViewById(R.id.button_reset ); resetButton.setOnClickListener(this); } /** * Viewがクリックされたときに呼ばれるメソッド */ @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.button_reset : mCount = 0; break; case R.id.button_increment : mCount++; break ; } mCountView.setText(String.valueOf (mCount)); } } ■参照 -3 MainActivity.java. |2| Android プログラミング入門 情報処理 Vol.59 No.2 Feb. 2018. 133.
(7)
関連したドキュメント
本節では本研究で実際にスレッドのトレースを行うた めに用いた Linux ftrace 及び ftrace を利用する Android Systrace について説明する.. 2.1
サーバー API 複雑化 iOS&Android 間で複雑な API
これはつまり十進法ではなく、一進法を用いて自然数を表記するということである。とは いえ数が大きくなると見にくくなるので、.. 0, 1,
この chart の surface braid の closure が 2-twist spun terfoil と呼ばれている 2-knot に ambient isotopic で ある.4個の white vertex をもつ minimal chart
(1860-1939)。 「線の魔術」ともいえる繊細で華やかな作品
ここで, C ijkl は弾性定数テンソルと呼ばれるものであり,以下の対称性を持つ.... (20)
本論文での分析は、叙述関係の Subject であれば、 Predicate に対して分配される ことが可能というものである。そして o
(自分で感じられ得る[もの])という用例は注目に値する(脚注 24 ).接頭辞の sam は「正しい」と