Third Party Framework
Kivyon Android
PythonコードからAndroid
アプリケーションを作成す
る
Monaca
HTML5、JavaScript、CSSベ
ースでAndroidアプリケー
ションを作成する
Unity
AppInventor
Webブラウザ上で画面をデ
ザインし、ブロックをドラ
ッグ&ドロップしてパズル
のように組み合わせて作成
する
3Dコンテンツも作成できる
ゲーム開発プラットフォー
ム。Webやマルチプラット
フォームでコンテンツの書
き出しができる
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
22
23.
Third Party IDE
IntelliJIDEA
AIDE
JetBrains社が開発した、
Java言語など多言語対応の
統合開発環境
Android上でAndroidアプ
リケーションの開発を行
えるIDE
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
23
Android Market
Android Market
GooglePlay
Googleが提供するコンテンツ配信サービス
「Android Market」「Google eBookstore」「Google Music」といった、これ
まで個別に運営されてきた複数のサービスを統合
• https://play.google.com/store
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
26
27.
Third Party Market
ThirdParty Market
Amazon Appstore for Android
米Amazon.comが、Androidアプリを販売
するアプリ市場
DeployGate
開発中のアプリケーション配信サービス
。
主に開発メンバーに対してテスト版アプ
リをリモートで提供することが目的
Handster
ホワイトレーベルのプラットフォームと
ブランドのアプリケーションストアを提
供するアプリ市場
M-trix Market
Androidアプリの成人向けコンテンツ専
用ストア
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
27
プロジェクトの作成(2)
2. [New AndroidApplication]画面の設定
Apllication の設定情報を以下にし、Nextボタンをクリック
Propertiesの各項目に以下を入力する
項目
設定値
Application
Name
HelloWorld
Project Name
HelloWorld
Package Name
jp.oesf.tutori
al
Minimum Required SDK
API 10
Target SDK
API 10
Compile
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
With
Theme
67
API 10
None
68.
プロジェクトの作成(3)
3. [New AndroidApplication]画面の設定
Create Custom launcher iconのチェックを外し、Nextボタンをクリック
チェックを外す
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
68
プロジェクトの作成(5)
5. [New BlankActivity]画面の設定
Finishボタンをクリックする
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
70
71.
アプリケーションの実行
6. Android Projectが生成され、下図(上)のように表示される
7.Package ExplorerからHelloWorldプロジェクトを選択し、右クリックし
、[Run As]-[Android Application]を選択する
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
71
Viewの整列 (余白の設定)
余計な空白があって綺麗に整列されない場合
marginの確認をする
•LinearLayoutへの変更時、配置情報によってはmarginで補正されている
ことがあります。marginの値を消すことで対応出来ます
Propertiesビューを使っ
て余計なmarginを削除す
る
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
82
文字列リソースの追加(3)
5. ResourcesタブのResouces ElementsにString が追加されていることを
確認する
6. ResourcesタブのAttributes for StringのName、Valueに以下の値を入
力する
Attributes for Stringの設定値
項目名
Name
button_label
Value
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
設定値
Hello Button
94
インターネットへのアクセス許可を
設定(3)
5. Permissionsに UsesPermission が追加されていることを確認する
6. Attributes for Uses Permissionの Name のプルダウンから
android.permission.INTERNETを選択する
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
105
Hello Worldからログを出力する
(2)
3. MainActivity#onCreateにログ出力を行う5つのコードを追加する
■MainActivity.java
packagejp.oesf.tutorial;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("HelloWorld",
Log.w("HelloWorld",
Log.i("HelloWorld",
Log.d("HelloWorld",
Log.v("HelloWorld",
"Error Message");
"Warning Message");
"Infomation Message");
"Debug Message");
"Verbose Message");
}
……………………
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
114
115.
Hello Worldからログを出力する
(3)
4. PackageExplorerからHelloWorldプロジェクトを選択し、右クリック
[Run As]-[Android Application]を選択する
5. エミュレータが起動し、右画面が表示されることを確認する
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
115
方法2:Activityに
OnClickListenerを実装する
ActivityにOnClickListenerを実装する
手順
1. AnctivityにOnClickListenerを実装する
2. OnClickメソッドをオーバライドする
3.Button#setOnClickListenerで引数にthisを指定する
public class MainActivity extends Activity implements OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// OnCLickListenerの実装
Button bt = (Button) findViewById(R.id.button1);
// クリックされるとこのメソッドが呼ばれる
bt.setOnClickListener(this); ・・・
}
public void onClick(View v) {
if (v.getId() == R.id.button1) {
// Buton1が押されたときの処理
} else if (v.getId() == R.id.button2) {
// Buton2が押されたときの処理
}
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
・・・
③
・・・
②
158
①
Toast(2)
Toastの実装
以下の2つのメソッドのうちどちらかを利用する
public static ToastmakeText (Context context, CharSequence text, int
duration)
public static Toast makeText (Context context, int resId, int
duration)
• context: コンテキスト
• text:表示させるテキスト
• resId:表示させるテキストのリソースID
• duration: Toast.LENGTH_SHORT (短時間)か Toast.LENGTH_LONG(長
時間)
上記2メソッドの戻り値に対してToast#showメソッドを実行すると表示さ
サンプルコード
れる
Toast.makeText(this, “TEST", Toast.LENGTH_SHORT).show();
Toast.makeText(this, R.string.test, Toast.LENGTH_LONG).show();
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
216
217.
Toast(3)
Toastサンプル
public class ToastTestActivityextends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Toast.makeText(this, "Hello,Android!!", Toast.LENGTH_LONG).show();
}
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
217
画面遷移アプリの作成 1 (1)
実習1
実習のテーマ
メイン画面の「next」ボタンを押した時、次の画面へ遷移する処理を作成す
る
Next
クリッ
ク
画面遷移する
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
231
232.
画面遷移アプリの作成 1 (2)
プロジェクト概要
項目
設定値
Projectname
ActivitySample
Build Target
※トレーニングで指定したバージョン
Application name
ActivitySample
Package name
jp.oesf.activitysample
Create Activity
MainActivity
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
232
画面遷移アプリの作成 1 (4)
1.遷移先画面のリソースファイルを作成する
1.
2.
3.
4.
res/layoutフォルダを選択する
AndroidXMLファイル作成ボタンをクリックする
ファイル名に「activity_next.xml」を指定する
Finishボタンをクリック
Layout、Menu、Valuesなどリ
ソースの種類を選択できる
「activity_next.xml」と入力
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
234
235.
画面遷移アプリの作成 1 (5)
2.遷移先画面のデザインを作成する
遷移先画面に配置するビューのプロパティに以下の値を設定する
階層構造
<LinearLayout>
<TextView />
</LinearLayout>
activity_next.xml
View
Property
LinearLayout
android:layout_width=“match_parent
”
android:layout_height=“match_paren
t”
android:orientation="vertical"
TextView
android:id=“@+id/text_message”
android:layout_width=“wrap_content
”
android:layout_height=“wrap_conten
t”
android:text=“@string/next_activit
y”
value
string.xml
name
next
Next
next_activity
NextActivity
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
235
236.
画面遷移アプリの作成 1 (6)
3.遷移先画面のアクティビティクラスを作成する
Eclipseのメニュー[File]から[new]-[Class]を選択する
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
236
画面遷移アプリの作成 1 (8)
3.遷移先画面のアクティビティクラスを作成する(続き)
1. 追加したアクティビティクラスにActivity#onCreateメソッドを実装する
2. Activity#onCreateメソッドで、親クラスのonCreateメソッドを実行する
3. 親クラスのonCreateメソッド実行後、Activity#setContentViewメソッドを
実行
• ビューを表示する。
• Activity#setContentViewメソッドの引数は追加したレイアウトxmlをR
クラスから取得し、設定する
public class NextActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
}
}
・・・ ①
・・・ ②
・・・ ③
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
238
239.
画面遷移アプリの作成 1 (9)
4.MainActivityの画面デザインを変更する
初期状態で作成されているRelativeLayoutをLinearLayoutに変更する
• OutlineViewからRelativeLayoutを右クリック
• Change Layoutを選択
• LinearLayoutを選択
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
239
240.
画面遷移アプリの作成 1 (10)
4.MainActivityの画面デザインを変更する(続き)
Buttonを配置する
画面に配置するビューのプロパティに以下の値を設定する
階層構造
<LinearLayout>
<Button />
</LinearLayout>
activity_main.xml
View
Property
LinearLayout
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
Button
android:id="@+id/next_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/next"
android:onClick="onClickNextButton"
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
240
241.
画面遷移アプリの作成 1 (11)
5.MainActivityに画面遷移処理の追加する
1. インテントオブジェクトを作成する
2. Activity#startActivityメソッドを実行する
3. onCreateOptionsMenuメソッドを削除する
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClickNextButton(View v){
・・・ ①
・・・ ②
Intent intent = new Intent(this, NextActivity.class);
startActivity(intent);
}
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
241
242.
画面遷移アプリの作成 1 (12)
6.AndroidManifestファイルにNextActivityを追加する
1. applicationタグ内にactivityタグを追加
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="NextActivity"></activity>
</application>
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
242
画面遷移アプリの作成 2 (2)
手順
1.リソースファイルを変更する
2. NextActivityにActivity終了処理の追加
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
252
253.
画面遷移アプリの作成 2 (3)
1.リソースファイルを変更する
activity_next.xmlに以下の値を追加する
階層構造
<LinearLayout>
<TextView />
<Button />
</LinearLayout>
View
Property
Button
android:layout_width=“match_parent”
android:layout_height=“wrap_content
”
android:text=“@string/finish”
android:onClick=“onClickFinishButton
”
strings.xmlに以下の値を追加する
name
finish
value
Finish
用途
「Finish」ボタンに表示する文字
列
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
253
254.
画面遷移アプリの作成 2 (4)
2.NextActivityにActivity終了処理の追加
onClickFinishButtonメソッドを追加する
Activity#finishメソッドを呼び出し、終了処理を追加する
public void onClickFinishButton(View v){
finish();
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
254
画面遷移アプリの作成 3 (2)
手順
1.activity_main.xmlの画面デザインを変更する
2. MainActivityにIntentにデータを格納する処理の追加
3. NextActivityにIntentからデータを取得する処理の追加
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
263
264.
画面遷移アプリの作成 3 (4)
1.activity_main.xmlの画面デザインを変更する
EditTextを追加する
activity_main.xml
View
Property
EditText
android:id="@+id/edit_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
階層構造
<LinearLayout>
<EditText />
<Button />
</LinearLayout>
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
264
265.
画面遷移アプリの作成 3 (5)
2.MainActivityにIntentにデータを格納する処理の追加
Main画面からNext画面へデータを渡す
MainActivity
public void onClickNextButton(View v){
EditText editMessage = (EditText)findViewById(R.id.edit_message);
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("message", editMessage.getText().toString());
startActivity(intent);
}
3. NextActivityにIntentからデータを取得する処理の追加
Intentからデータ取得
NextActivity#onCreate
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
Intent intent = getIntent();
String message = intent.getStringExtra("message");
TextView textView = (TextView)findViewById(R.id.text_message);
textView.setText(message);
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
265
画面遷移アプリの作成 4 (2)
手順
1.MainActivityの修正
startActivityForResultを使った画面の起動処理
requestCodeの指定
実行結果を受け取る処理の追加
2. NextActivityの修正
実行結果を返す処理の追加
• setResultメソッドを使ってResultCodeを設定する
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
277
278.
画面遷移アプリの作成 4 (3)
1.MainActivityの修正
startActivityForResultを使った画面の起動処理
requestCodeの指定
実行結果を受け取る処理の追加
public void onClickNextButton(View v) {
EditText editMessage = (EditText) findViewById(R.id.edit_message);
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("message", editMessage.getText().toString());
startActivityForResult(intent, 123);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("MainActivity", "requestCode = " + requestCode);
Log.d("MainActivity", "resultCode = " + resultCode);
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
278
279.
画面遷移アプリの作成 4 (4)
2.NextActivityの修正
実行結果を返す処理の追加
• setResultメソッドを使ってResultCodeを設定する
public void onClickFinishButton(View v){
setResult(RESULT_OK);
finish();
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
279
画面遷移アプリの作成 4 (解答
1)
解答
MainActivtiy.java
packagejp.oesf.activitysample;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void onClickNextButton(View v) {
EditText editMessage = (EditText) findViewById(R.id.edit_message);
Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("message", editMessage.getText().toString());
startActivityForResult(intent, 123);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d("MainActivity", "requestCode = " + requestCode);
Log.d("MainActivity", "resultCode = " + resultCode);
}
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
281
282.
画面遷移アプリの作成 4 (解答
2)
解答
NextActivtiy.java
packagejp.oesf.activitysample;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class NextActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
Intent intent = getIntent();
String message = intent.getStringExtra("message");
TextView textView = (TextView)findViewById(R.id.text_message);
textView.setText(message);
}
public void onClickFinishButton(View v){
setResult(RESULT_OK);
finish();
}
}
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
282
283.
まとめ課題
実習 (制限時間 前回までの実習による修正:20分スクラッチ:60
分)
以下のようなアプリケーションを作成する
MainActivity
NextActivity
RequestCode:12
3
ResultCode:RESULT_OK
NextActivity2
ダイアログ表示
From
Result
Request
RequestCode:456
ResultCode
RESULT_OK
RESULT_CANCEL
or
RESULT_OK
RESULT_CANCEL
This material is licensed under the Creative
Commons License BY-NC-SA 4.0.
or
Result Cancel
283