Upload
masafumi-terazono
View
6.181
Download
4
Embed Size (px)
DESCRIPTION
電卓アプリを題材にAndroidプロジェクトの作成からクラスの編集まで
Citation preview
Re:Kayo-System Co.,Ltd.
Twitter @yokmamaNow Loading. Please Wait ...
Androidで電卓アプリを作る夜子まま塾 講義3(Androidアプリ開発のための第一歩)
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
自己紹介氏名 :寺園聖文(てらぞの まさふみ)
肩書 :株式会社Re:Kayo-System 代表取締役社長
活動拠点 :神戸近郊~日本→海外行きたい
著書 :「10日でおぼえるAndroidアプリ開発入門教室」著(翔泳社)
「HTML5によるAndroidアプリ開発入門」監修(日経BP)
アプリ :「JUST PLAYER」「Skip Memo」「ふりがなオートマチック」等
好きなもの:アニメ、決して萌えじゃない、見てるけど、あくまで研究の一環
嫌いなもの:とくになし
最近のテーマ:電子工作、運動すること、英語
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
電卓アプリの作成簡単なアプリ作成の題材として、電卓をつくります。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
機能を考えるキーボードあるいはボタンから数値、演算子を入力し、結果を画面に表示することができる。数値を連続で入力することで加
算、減算ができる。
キーボード 処理 表示
0~9の数字+、ーなどの演算子
結果、あるいは入力中の文字
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
画面レイアウト(例)ディスプレイ
=
1 2 34 5 6
7 8 90
÷×+-
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
今回はこれで
ディスプレイ=
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
プロジェクトの作成File→New→Android Project
① Project Nameに”ykmjuku002”をいれてNextをクリック
ProjectNameはこれから作るアプリのプロジェクト名です。あとで変更できます。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
プロジェクトの作成前の画面より
② Android2.3.3をチェックして”Next”をクリック
③ Package Nameに”ykmjuku.android.sample.app”を入力してFinishをクリック
※各項目の説明は次ページで
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
各項目説明②で選択したBuildTargetについて
BuildTargetはAndroidアプリを作成するときに使用するAndroidSDKのバージョンです。ここで設定したSDKのバージョンが実行できる環境という意味ではありません。この設定はあとで変更することができます。
③の各項目についてApplication Name これから作成するアプリケーションの名前です
Package Name アプリケーションのパッケージです。(次のスライドで補足)
Create Activity チェックを入れておくとデフォルトでメインのActivityを作成します。
Minimum SDK 動作に必要な最低のSDKのバージョンです。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
アプリケーションのパッケージについて
Androidアプリケーションにはデフォルトのパッケージが設定されます。このパッケージはインストールされるAndroid端末において一意であるため、
同じ名前のパッケージが存在すると上書きされます。また、もし作成元が違う場合は一度アンインストールしないとインストールで
きません。
要するにパッケージが同じである限り、プロジェクトの名前やアプリケーションの名前が違っていても同じアプリケーションとみなされるわけです。
このパッケージはプロジェクト作成後にも変更が可能ですが、いくつかプログラムの修正が必要になるため、プロジェクト作成の時によく検討しておくほう
がよいでしょう。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
レイアウトファイルを開くNavigate→Open Resouce
① main.xmlを入力し一欄に表示されたmain.xmlを選択して Openをクリック
※Ctrl+Shift+Rですぐにこの検索画面を呼び出すことができます。
レイアウトデザイン画面
2012年2月22日水曜日
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日水曜日
Re:Kayo-System Co.,Ltd.
レイアウトを編集ディスプレイ= このような画面になるように編集する
① Large TextとPlain TextとButtonをドラッグ&ドロップで追加する。
※PlainTextは TextFieldsの中にあります。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
LargeTextの文字列を変更
② Large Textをダブルクリックしてください。
③ “Large Text”の部分を”0”に変更し、”Graphical Layout”をクリックして下さい。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
Buttonの名前を変更
④ Buttonをダブルクリックしてください。
③ “Button”の部分を”=”に変更し、Ctrl+Sで保存してください。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
レイアウトエディタについて
パレットボタンやテキスト等の画面アイテムがある、ここからドラッグ&ドロップで簡単に画面に追加できる。
エディタ実際に表示される画面を確認しながら、各画面アイテムの位置や表示を変更できる。右クリックメニューから各アイテムの属性も変更できる。
画面コンフィグテーマや画面表示の設定等の変更ができる。設定後は専用のレイアウトとして生成することもできる。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
レイアウトXMLエディタについて
ここをクリックすることでグラフィカルな編集画面と切替ができる。
直接レイアウトファイルを編集できる。XMLのタグや属性などが色分けされていて見や
すい。ctrl+spaceで入力アシストが使えるので、知らない属性であっても入力することができる。慣れてくるとグラフィカルな編集画面よりも編集
がしやすくなる。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
計算クラスの作成File→New→Class
Package ykmjuku.android.sample.app
Name Calculater
①上記のように入力し”finish”をクリック。この項目以外はデフォルトのままでOKです。
2012年2月22日水曜日
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日水曜日
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日水曜日
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日水曜日
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日水曜日
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日水曜日
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日水曜日
Re:Kayo-System Co.,Ltd.
その他のクラス• StringBuilder文字列を連結するのが得意なクラス
• Integerintのラッパークラス、変換処理が得意
• NumberFormatException数値変換時にエラーがあると発生する例外
これらクラスについて詳しい情報はJavaのドキュメントを参照してください。検索で”java doc api”で検索すると上位にヒットします。
2012年2月22日水曜日
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日水曜日
Re:Kayo-System Co.,Ltd.
画面クラスを開くShift+Ctrl+T
Ykmjuku002Activityを入力し一欄に表示されたクラスを選択して”OK”ボタンをクリックして下さい。
2012年2月22日水曜日
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日水曜日
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日水曜日
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日水曜日
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日水曜日
Re:Kayo-System Co.,Ltd.
ソースコード
https://github.com/yokmama/ykmjuku
ソースコードは次のサイトから取得できます。
2012年2月22日水曜日
Re:Kayo-System Co.,Ltd.
プログラムの説明は?続きは夜子まま塾オンライン(無料)にて毎週水曜日夜10:30~11:00(都合によりない場合もあります)
http://bit.ly/wTjjixGoogleID:101190223376062765723
夜子まま塾
上記アカウントをサークルに追加していると、ハングアウトのお誘いが届きます。
是非ご参加ください。
2012年2月22日水曜日