夜子まま塾講義3(androidで電卓アプリを作る)

33
Re:Kayo-System Co.,Ltd. Twitter @yokmama Now Loading. Please Wait ... Androidで電卓アプリを作る 夜子まま塾 講義3(Androidアプリ開発のための第一歩) 2012222日水曜日

Upload: masafumi-terazono

Post on 15-Jan-2015

6.181 views

Category:

Technology


4 download

DESCRIPTION

電卓アプリを題材にAndroidプロジェクトの作成からクラスの編集まで

TRANSCRIPT

Page 1: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

Twitter @yokmamaNow Loading. Please Wait ...

Androidで電卓アプリを作る夜子まま塾 講義3(Androidアプリ開発のための第一歩)

2012年2月22日水曜日

Page 2: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

自己紹介氏名   :寺園聖文(てらぞの まさふみ)

肩書   :株式会社Re:Kayo-System 代表取締役社長

活動拠点 :神戸近郊~日本→海外行きたい

著書   :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)

      「HTML5によるAndroidアプリ開発入門」監修(日経BP)

アプリ  :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等

好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環

嫌いなもの:とくになし

最近のテーマ:電子工作、運動すること、英語

2012年2月22日水曜日

Page 3: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

電卓アプリの作成簡単なアプリ作成の題材として、電卓をつくります。

2012年2月22日水曜日

Page 4: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

機能を考えるキーボードあるいはボタンから数値、演算子を入力し、結果を画面に表示することができる。数値を連続で入力することで加

算、減算ができる。

キーボード 処理 表示

0~9の数字+、ーなどの演算子

結果、あるいは入力中の文字

2012年2月22日水曜日

Page 5: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

画面レイアウト(例)ディスプレイ

=

1 2 34 5 6

7 8 90

÷×+-

2012年2月22日水曜日

Page 6: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

今回はこれで

ディスプレイ=

2012年2月22日水曜日

Page 7: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

プロジェクトの作成File→New→Android Project

① Project Nameに”ykmjuku002”をいれてNextをクリック

ProjectNameはこれから作るアプリのプロジェクト名です。あとで変更できます。

2012年2月22日水曜日

Page 8: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

プロジェクトの作成前の画面より

② Android2.3.3をチェックして”Next”をクリック

③ Package Nameに”ykmjuku.android.sample.app”を入力してFinishをクリック

※各項目の説明は次ページで

2012年2月22日水曜日

Page 9: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

各項目説明②で選択したBuildTargetについて

BuildTargetはAndroidアプリを作成するときに使用するAndroidSDKのバージョンです。ここで設定したSDKのバージョンが実行できる環境という意味ではありません。この設定はあとで変更することができます。

③の各項目についてApplication Name これから作成するアプリケーションの名前です

Package Name アプリケーションのパッケージです。(次のスライドで補足)

Create Activity チェックを入れておくとデフォルトでメインのActivityを作成します。

Minimum SDK 動作に必要な最低のSDKのバージョンです。

2012年2月22日水曜日

Page 10: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

アプリケーションのパッケージについて

Androidアプリケーションにはデフォルトのパッケージが設定されます。このパッケージはインストールされるAndroid端末において一意であるため、

同じ名前のパッケージが存在すると上書きされます。また、もし作成元が違う場合は一度アンインストールしないとインストールで

きません。

要するにパッケージが同じである限り、プロジェクトの名前やアプリケーションの名前が違っていても同じアプリケーションとみなされるわけです。

このパッケージはプロジェクト作成後にも変更が可能ですが、いくつかプログラムの修正が必要になるため、プロジェクト作成の時によく検討しておくほう

がよいでしょう。

2012年2月22日水曜日

Page 11: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

レイアウトファイルを開くNavigate→Open Resouce

① main.xmlを入力し一欄に表示されたmain.xmlを選択して Openをクリック

※Ctrl+Shift+Rですぐにこの検索画面を呼び出すことができます。

レイアウトデザイン画面

2012年2月22日水曜日

Page 12: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

レイアウトファイルについて

レイアウトは画面のデザイン情報を持っているファイルです。

パッケージエクスプローラーのresフォルダの下にあるlayoutという名前のフォルダに格納します。

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>

2012年2月22日水曜日

Page 13: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

レイアウトを編集ディスプレイ= このような画面になるように編集する

① Large TextとPlain TextとButtonをドラッグ&ドロップで追加する。

※PlainTextは TextFieldsの中にあります。

2012年2月22日水曜日

Page 14: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

LargeTextの文字列を変更

② Large Textをダブルクリックしてください。

③ “Large Text”の部分を”0”に変更し、”Graphical Layout”をクリックして下さい。

2012年2月22日水曜日

Page 15: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

Buttonの名前を変更

④ Buttonをダブルクリックしてください。

③ “Button”の部分を”=”に変更し、Ctrl+Sで保存してください。

2012年2月22日水曜日

Page 16: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

レイアウトエディタについて

パレットボタンやテキスト等の画面アイテムがある、ここからドラッグ&ドロップで簡単に画面に追加できる。

エディタ実際に表示される画面を確認しながら、各画面アイテムの位置や表示を変更できる。右クリックメニューから各アイテムの属性も変更できる。

画面コンフィグテーマや画面表示の設定等の変更ができる。設定後は専用のレイアウトとして生成することもできる。

2012年2月22日水曜日

Page 17: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

レイアウトXMLエディタについて

ここをクリックすることでグラフィカルな編集画面と切替ができる。

直接レイアウトファイルを編集できる。XMLのタグや属性などが色分けされていて見や

すい。ctrl+spaceで入力アシストが使えるので、知らない属性であっても入力することができる。慣れてくるとグラフィカルな編集画面よりも編集

がしやすくなる。

2012年2月22日水曜日

Page 18: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

計算クラスの作成File→New→Class

Package ykmjuku.android.sample.app

Name Calculater

①上記のように入力し”finish”をクリック。この項目以外はデフォルトのままでOKです。

2012年2月22日水曜日

Page 19: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

計算クラス編集package ykmjuku.android.sample.app;

public class Calculater { StringBuilder mInputNumber = new StringBuilder(); String mOperator; int mResult = 0;

private boolean isNumber(String key) { try { Integer.parseInt(key); return true; } catch (NumberFormatException e) { } return false; }

続きあり

一時入力中の文字列

入力された演算子現在の結果

引数に与えられた文字が数値であればTrue,そうでなければ

Falseを返す関数です。判定に文字列から数値に変換する関数を使っており、エラーがでたら数値で

はないと判断しています。

2012年2月22日水曜日

Page 20: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

計算クラス編集 private boolean isSupportedOperator(String key) { if (key.equals("+")) { return true; } else if (key.equals("-")) { return true; } else if (key.equals("*")) { return true; } else if (key.equals("/")) { return true; } return false; }

続きあり

引数に与えられた文字が計算に対応している演算子であればTrue,そうでなければFalseを返す関数です。本プログラムでは”+”と”ー”と”*”と”/”だ

けサポートしています。

2012年2月22日水曜日

Page 21: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

計算クラス編集 private void doCalculation(String ope) { if (ope.equals("+")) { mResult = mResult + Integer.parseInt(mInputNumber.toString()); } else if (ope.equals("-")) { mResult = mResult - Integer.parseInt(mInputNumber.toString()); } else if (ope.equals("*")) { mResult = mResult * Integer.parseInt(mInputNumber.toString()); } else if (ope.equals("/")) { mResult = mResult / Integer.parseInt(mInputNumber.toString()); } mInputNumber = new StringBuilder(); }

続きあり

引数に与えられた演算子によって実際に計算を行います。

サポートした演算子の種類にあわせて実装する必要があります。

計算が終わったら入力中の文字列はリセットしています。

2012年2月22日水曜日

Page 22: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

計算クラス編集public String putInput(String key) { if (isNumber(key)) { mInputNumber.append(key); return mInputNumber.toString(); } else if (isSupportedOperator(key)) { if (mOperator != null) { doCalculation(mOperator); mOperator = null; } else if (mInputNumber.length() > 0) { mResult = Integer.parseInt(mInputNumber.toString()); mInputNumber = new StringBuilder(); } mOperator = key; return mOperator; } else if (key.equals("=")) { if (mOperator != null) { doCalculation(mOperator); mOperator = null; } return Integer.toString(mResult); } else { // 入力エラー(数値とサポートされていないオペレータをいれた操作は間違った操作) return null; } }}

ここまで

入力された文字列の処理です。数値の場合は入力中の文字列にセッ

トします。

サポートしている演算子ならその時点で計算をし結果を設定します。

=が入力されたら計算を行います。

例外の入力はnullを返却しています。

2012年2月22日水曜日

Page 23: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

javaの基本型についてJavaではクラスとは別に基本的な型

を使うことができます。変換元の基本型 大きさ(bit) 範囲 初期値

boolean 1 true/false FALSE

char 16 0~FFFF 0

byte 8 -128~127 0

short 16 -32768~32767 0

int 32-2147483648~2147483647

Integer.MIN_VALUE~Integer.MAX_VALUE0

long 64-9223372036854775808~9223372036854775807

Long.MIN_VALUE~Long.MAX_VALUE0

float 32単精度(有効桁数が最低でも6桁)

Float.MIN_VALUE~Float.MAX_VALUE0.0

double 64倍精度(有効桁数が最低でも15桁)

Double.MIN_VALUE~Double.MAX_VALUE0.0

2012年2月22日水曜日

Page 24: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

StringクラスについてJavaで文字列を扱う場合はStringクラスを使います。

Stringは特別なクラスで、直接文字列から生成することができます。

String str = “abc”;String str = new String(“abc”);

同じ

Stringクラスは文字列の結合や、分割、抽出といった基本的な操作をサポートしています。

int pos = str.indexOf(“b”);

String sub = str.substring(1, 2);

“b”という文字列の位置を返却先頭から数えて1~2の位置の

文字列を抜き出す

str == “abc” この比較はNG

str.equals(“abc”) この比較はOK

注)比較には注意してください。Stringは内部で文字列を保持しているため==比較のような値比較では、実際に保持している文字列の比較が行われません。

2012年2月22日水曜日

Page 25: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

その他のクラス• StringBuilder文字列を連結するのが得意なクラス

• Integerintのラッパークラス、変換処理が得意

• NumberFormatException数値変換時にエラーがあると発生する例外

これらクラスについて詳しい情報はJavaのドキュメントを参照してください。検索で”java doc api”で検索すると上位にヒットします。

2012年2月22日水曜日

Page 26: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

try-catchについてtry { Integer.parseInt(key); return true;} catch (NumberFormatException e) {}return false;

try{ //処理} catch (<エラークラス> <変数名>){ //エラー処理} finally{ //プログラムの終了処理}

構文 例

try-catchはプログラムでエラーが発生した時のエラー処理や、プログラムの終了処理を実装するための仕組みです。

catch節にはプログラムで発生しうる例外を列挙することができます。finally節にはプログラムが終了したときの処理を実装できます。ここにはcatch節に入ったあとも来るためreturn処理を実装する場合には十分

注意をしてください。

2012年2月22日水曜日

Page 27: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

画面クラスを開くShift+Ctrl+T

Ykmjuku002Activityを入力し一欄に表示されたクラスを選択して”OK”ボタンをクリックして下さい。

2012年2月22日水曜日

Page 28: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

画面クラスを編集package ykmjuku.android.sample.app;

import android.app.Activity;import android.os.Bundle;import android.text.Editable;import android.text.TextWatcher;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.EditText;import android.widget.TextView;

public class Ykmjuku002Activity extends Activity implements TextWatcher, OnClickListener { EditText mEditText1; TextView mTextView1; Button mButton1; Calculater mCalculater = new Calculater();

参照するクラスを追加

Ykmjuku002Activityに拡張クラスを追加

レイアウトに配置している画面アイテム

計算クラスのインスタンス続きあり

2012年2月22日水曜日

Page 29: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

画面クラスを編集

/** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mTextView1 = (TextView)findViewById(R.id.textView1); mEditText1 = (EditText)findViewById(R.id.editText1); mButton1 = (Button)findViewById(R.id.button1); mEditText1.addTextChangedListener(this); mButton1.setOnClickListener(this); }

続きあり

画面の初期化処理です。レイアウトファイルから自動生成された画面アイテムのインスタンス取得や、各イベント処理への処理の追加を行っています。

この画面クラスのレイアウトは main.xmlです

findViewByIdで画面アイテムのインスタンスを取

得できます。

各インスタンスにイベント処理の設定をしています。

2012年2月22日水曜日

Page 30: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

画面クラスを編集  public void afterTextChanged(Editable s) { String input = s.toString(); Log.d("Ykmjuku002Activity", "input="+input); if(input.length()>0){ String dispText = mCalculater.putInput(input); if(dispText!=null){ mTextView1.setText(dispText); } s.clear(); } }

public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub }

public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub }

続きあり

これらはEditTextに何か入力されると呼ばれるメソッドです。

addTextChangedListenerを設定するとかならず実装しなければなりません。

ログを出力しています。プログラムには直接的な影響ありません。

計算クラスに入力された文字列を渡し結果を表示用の画面アイテム

(mTextView1)に設定しています。

2012年2月22日水曜日

Page 31: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

画面クラスを編集

  public void onClick(View v) { String dispText = mCalculater.putInput("="); if(dispText!=null){ mTextView1.setText(dispText); } mEditText1.setText(null); }}

このメソッドはButtonがクリックされると呼ばれます。 setOnClickListenerを設定するとかならず実装しなけれ

ばなりません。

ここまで

このボタンは ”=”ボタンなので計算プログラムに”=”を渡して結果を表示しています。表示した後に、入力中の文字列はクリアして

います。

2012年2月22日水曜日

Page 32: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

ソースコード

https://github.com/yokmama/ykmjuku

ソースコードは次のサイトから取得できます。

2012年2月22日水曜日

Page 33: 夜子まま塾講義3(androidで電卓アプリを作る)

Re:Kayo-System Co.,Ltd.

プログラムの説明は?続きは夜子まま塾オンライン(無料)にて毎週水曜日夜10:30~11:00(都合によりない場合もあります)

http://bit.ly/wTjjixGoogleID:101190223376062765723

夜子まま塾

上記アカウントをサークルに追加していると、ハングアウトのお誘いが届きます。

是非ご参加ください。

2012年2月22日水曜日