Androidアプリ製作のいろいろ

役に立ったり面白かったり楽しかったり いろんなAndroidアプリケーションを作れるように いろいろ調べたり集めたり

2012年5月7日月曜日

記号、エスケープシークエンス、論理演算子

コーディングではとにかくたくさんの記号を使います。
適当に読んでいたので、まとめてみました。


記号繋がりで
・エスケープシークエンス・論理演算子
一緒にまとめました。


〓 〓 〓 〓 〓


◆読み方
!          エクスクラメーション

?          クエスチョン、はてな
"          ダブルクォーテーション、ダブルクォート、いんようふ
#          ナンバー、いげた、(シャープ) ※本来はシャープ記号ではない
$          ドル、ダラー、
%          パーセント
&          アンド、アンパサンド
+          プラス
-          マイナス、ハイフン
*          アステリスク、かける
/          スラッシュ、わる
\          バックスラッシュ
=          イコール
^          ハット、キャレット、アクサンシルコンフレックス
~          チルダ、なみダッシュ
'          アポストロフィ、シングルクォーテーション、
`          アクサングラーブ、バッククォート、
        アットマーク
<          しょうなり、ひだりかくかっこ
>          だいなり、みぎかくかっこ
(          ひだりかっこ
)          みぎかっこ
{          ひだりちゅうかっこ
}          みぎちゅうかっこ
[          ひだりだいかっこ
]          みぎだいかっこ
;          セミコロン
:          コロン
,          コンマ
.         ピリオド、ドット
_         アンダーバー、アンダーライン、アンダースコア、したせん
|          バー、バーティカルライン、たてぼう
\          バックスラッシュ(¥(えん))

〓 〓 〓 〓 〓
◆エスケープシークエンス
print文等で記号をそのまま記述してしまうと「コードの一部」として扱われてしまうので
エスケープシークエンスとして入力して表示させる

ex. print文で ” (ダブルクォーテーション)を表示させる場合
●そのまま print” “ “ と記述すると、「”」はコードの一部とみなされ、表示されずエラーとなる
 避けるためにエスケープシークエンスで記述する
 print” \” “ と記述すると表示される


\"          ダブルクォーテーション
\'          シングルクォーテーション
\n         改行
\t          タブ
\b         バックスペース
\r          キャリッジリターン
\f          改ページ
\\           マーク
\uxxxx   Unicode文字

〓 〓 〓 〓 〓
◆論理演算子

&&         x && y
            xとyの両方がtrueの場合にtrueを返す。

||          x || y
xとyのいずれかがtrueの場合にtrueを返す。         

& x & y
xとyの両方がブール型且つ両方ともtrueの場合にtrueを返す。
両方の変数が整数型の場合はビットごとのAND演算を行う。

| x | y
xとyの両方がブール型且ついずれかがtrueの場合にtrueを返す。
          両方の変数が整数型の場合はビットごとのOR演算を行う。
^ x ^ y
xとyの両方がブール型且つxとyが異なった値の場合にtrueを返す。
両方の変数が整数型の場合はビットごとのXOR演算を行う。
! !x
xがfalse場合にtrueを返す。

2012年4月17日火曜日

画像ボタンをタップしている間、別の画像に差し替えるには

画面上のボタンをタップして何かの処理を行うときに、
画像を使ったボタンを使用することがあると思います。
このとき、ユーザがボタンを押していることを視覚的に理解しやすいように、
タップしている間はボタンがハイライトしているように見せることが有効です。
実装では、通常の画像とタップしている画像の2つを用意し、
タップしている間は画像を差し替える処理を行います。


まずは画面レイアウト
(main.xml)
==============================================================


    
==============================================================
注)ここではImageButtonクラスではなく、Buttonクラスを使用しています。

画面レイアウトについては、特別な記述は不要です。
Buttonクラスの背景に android:background=" " で画像を定義します。
定義する画像は
通常時に表示する画像=ボタンを押していない時に表示する画像」を設定します。


次にActivityを実装します。
(ButtonTapDemoActivity)
==============================================================
public class ButtonTapDemoActivity extends Activity {

 private Button bt_start;
 private Button bt_stop;

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        bt_start   = (Button) findViewById(R.id.bt_start);
        bt_stop    = (Button) findViewById(R.id.bt_stop);

  bt_start.setOnTouchListener(new View.OnTouchListener() {
   @Override
   public boolean onTouch(View arg0, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
     bt_start.setBackgroundResource(R.drawable.bt_start_tap);
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
     bt_start.setBackgroundResource(R.drawable.bt_start_);
    }
    return false;
   }
  });

  bt_stop.setOnTouchListener(new View.OnTouchListener() {
   @Override
   public boolean onTouch(View arg0, MotionEvent event) {
    if (event.getAction() == MotionEvent.ACTION_DOWN) {
     bt_stop.setBackgroundResource(R.drawable.bt_stop_tap);
    } else if (event.getAction() == MotionEvent.ACTION_UP) {
     bt_stop.setBackgroundResource(R.drawable.bt_stop_);
    }
    return false;
   }
  });
    }
}
==============================================================

Buttonクラスのインスタンスを生成します。
画面レイアウトのidと関連付けし、タッチリスナーを登録します。
onTouchイベントで、
ACTION_DOWN時にハイライト画像をセット、
ACTION_UP時に通常時の画像に戻すよう記述します。
そうすると、ボタンをタップしている間の画像が切り替わります。

「測定開始」ボタンを押すと



このように画像が切り替わります。





参考)ボタンに使用した画像

bt_start_


bt_start_tap


bt_stop_


bt_stop_tap

2012年4月6日金曜日

Android 「Hello!World!」 ~ い

先に書いたソースコードのみで「Hello World!」と表示するアプリ

package jp.app.woodroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class HelloworldActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView tv = new TextView(this);
    tv.setText("Hello World!");

    LinearLayout ll = new LinearLayout(getApplicationContext());
    ll.addView(tv);

    setContentView(ll);

    }
}

少し中を見てみたいと思います。

1行目はパッケージの宣言
2行目から7行目までは使用しているクラスのインポート

ソースコードは8行目から始まっています。
public class HelloworldActivity extends Activity {
Androidのプログラムは基本的にはJavaのプログラムと同じクラスですが Activityクラスを継承し作ります。

また、アプリの「画面を作る」メソッドがあり、その中で画面構成を行います。
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView tv = new TextView(this);
    tv.setText("Hello World!");

    LinearLayout ll = new LinearLayout(getApplicationContext());
    ll.addView(tv);

    setContentView(ll);

    }

onCreateメソッドをオーバーライドして、アプリの画面を作ります。
このonCreateメソッドの中では 「画面に『表示場所』を作って
『表示させたいパーツ』を設定して
表示を実行」
ということをしています。

まずは画面に表示させたいパーツ(=Viewと呼びます)を作ります。
Viewにはいろいろ種類がありますが、ここでは文字を表示させるView「TextView」クラスを使っています。
    TextView tv = new TextView(this);
    tv.setText("Hello World!");
14行目:TextViewクラスのインスタンスを作って
15行目:TextViewのsetTextメソッドで表示させる文字を設定しています。


次に、表示場所を作ります。(表示場所もViewの一種です)
    LinearLayout ll = new LinearLayout(getApplicationContext());
    ll.addView(tv);
17行目:LinearLayoutクラスのインスタンスを作っています。
(14行目のTextViewも同じくView生成時の引数はContextクラスのインスタンスを当てるんですが
このプログラムの場合には「this」で対応できます。
Contextに関しては別記事で書きたいと思っています)
18行目:表示させたいViewを設定するaddViewメソッドを使って、Viewを設定します。


そして20行目
    setContentView(ll);
setContentViewを使って、「『表示場所』を実行」します。
そうすると


Hello World!となる訳です。

ここにいろんなViewを設定したり、Viewにいろいろな命令を設定したりすることで
様々な動きをするアプリを作ることができます。

2012年4月5日木曜日

Androidアプリのつくり ~ 「Hello!World!」

Androidアプリのプログラムは、Javaのものと違って少し入り組んだ作りになっています。
Javaと同じように「アプリを制御するプログラム」だけを作って動かすこともできるし
「アプリを制御するプログラム」「画面構成を作るプログラム」と分ける事もできるし
もっと細かく分けると

・アプリを制御するプログラム
・画面構成を作るプログラム
・表示させる文字を設定するプログラム
・アプリ内で使う色を設定するプログラム
・アプリ内で使う画像や音データを保存するフォルダ


・・・と、細かく分けて作り、それを合わせてAndroidアプリとして動作させることができます。
Javaのプログラムと同じようにクラスを分けて作ることもできるので
見た目はとても複雑になっていきます。

でも「どういう作りになっているか」を理解し把握できれば
そんなに難しいものではないと判るはずです。



とてもシンプルなアプリ ~ 画面に「Hello World!」と表示させるプログラム


package jp.app.woodroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.LinearLayout;
import android.widget.TextView;

public class HelloworldActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TextView tv = new TextView(this);
    tv.setText("Hello World!");

    LinearLayout ll = new LinearLayout(getApplicationContext());
    ll.addView(tv);

    setContentView(ll);

 }
}

このコードで、画面に「Hello World!」と表示されます。

また、Androidでは「画面要素だけ別で用意してプログラムすることができる」ので
画面要素を別で用意すると、ソースコードはこうなります。

画面 layout.xml


    



ソース HellofworldActivity.java
package jp.app.woodroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class HelloworldActivity extends Activity {
 /** Called when the activity is first created. */
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);

  TextView tv = (TextView) findViewById(R.id.textView1);
  tv.setText("Hello World!");

  setContentView(R.layout.main);

 }
}
「ソースで画面を一緒に作る」「ソースと画面を別で作る」
作りたいアプリによってどちらが良いかは変わってくると思います。
その辺りは、やりやすい方で。

どちらを選んでも、こう表示されます。

Androidの新プロジェクト作成

新しくAndroidアプリを作る際は、新しいプロジェクトを作成しないといけません。


新しいプロジェクトをeclipseで作るには
「ファイル」メニューの中から「新規」を選びます。
そうするとまた別のメニューが開きますので、その一番下の「その他」を選択。



「その他」を選択すると、何を新規で作るかの選択画面へと移ります。
メニューの中にある「Android」から、「Androidプロジェクト」を選びます。



そうすると
「プロジェクト名」「どのAndroidOSバージョンで作るか」「パッケージ名」の入力となります。

「プロジェクト名」
そのまま、このプロジェクトの名前となります。
デフォルトのままだと、プロジェクト名がアプリ名となっています。

「どのAndroidOSバージョンで作るか」
アプリが動作するOSの指定となります。
プログラム中には「一定のバージョン以上でないと動かないもの」もありますが
これは後からでも変更できます。
とりあえずこれでいいかな?と設定しても問題ありません。

「パッケージ名」
ソースコードが格納されるフォルダがあり、その名前となります。
お約束(?)として「ドメインを逆から書いた状態で命名」することになっているそうです。
例えば、go.ahead.android.jpというドメインの逆→ jp.android.ahead.go となります。
パッケージ名はプロジェクト毎で変更しておかないと、後から少し困ることがあります。
「全く別のアプリを作っていてプロジェクト名はもちろん違う。
 でもパッケージ名が同じだと、同じアプリとして上書きインストールされてしまう」
こういうことが起こります。
もちろんパッケージ名も後から変更する事はできますが
少しだけ手間がかかるので、それぞれ違うパッケージ名をつける方が後の面倒がありません。











全て記入し「完了」押下で、Androidプロジェクトができあがります。
AndroidのプロジェクトはJavaプロジェクトと違って、中にはいろいろ入っています。





[src]の中にパッケージ、その中にソースコードが入ります。
[res]の中にはアプリで使う画像や音声などが格納されます。
それぞれ別途説明していきたいです。





JDKのインストール

「AndroidアプリはJava言語でプログラミングできる!」ということで
Java言語での開発環境を整える必要があります。

JDK(Java Development Kit)のインストール
環境変数[path]の設定



JDKのインストール

まず、JDK(Java Development Kit)のインストールを行います。
JDKをインストールすると、JRE(Java Runtime Environment)も同時にインストールされ
パソコンがプログラムを実行できる状態にする(コンパイルする)ことができます。

◆JDKのインストール
Oracle社のウェブサイトからJDKをダウンロードします。
http://www.oracle.com/technetwork/jp/java/javase/downloads/index.html


※今回はJDK6をダウンロードし、進めていきます。




ダウンロードを押すと、次のページに移動します。
Oracleのライセンスに関する内容が表示され
「表示されたライセンスに関する内容を許可するか否か」を問われます。
ラジオボタン「Accept License ~」にチェックをし
お使いのOSに合わせたJDKをダウンロードする事になります。

ダウンロードしたJDKインストーラー(実行ファイル)を実行します。
インストーラーの指示通りに進め
「完了」ダイアログが表示された後、「完了」ボタンをクリックしてインストールは終了です。



環境変数[path]の設定

システムの環境変数にJDKを加える事で、必要な動作が簡単に行えるようになります。

環境変数の変更はシステムの詳細設定から行います。

[ コントロールパネル > システム > 詳細設定 > 環境変数 ]
[ マイコンピューター > 右クリックメニュー > プロパティ > 詳細設定 > 環境変数 ]
(※OSのバージョンによって変わります)

「環境変数」をクリックすると、環境変数の設定ダイアログが表示されます。
その中の「Path」を選び、「編集」ボタンをクリックします。

「編集」ボタンをクリックすると編集用ダイアログが立ち上がるので
変数値に「インストールしたJDKのフォルダのパス」を入力します。


先に入力されている内容とは;(半角セミコロン)で区切ってください。
また「Path」項目がなかった場合は「新規」をクリックし
「変数名 Path」を入力し、変数値は上記と同様に入力してOKボタンをクリックしてください。



テキストファイルとコマンドプロンプトでもJavaプログラミングはできますが
もっとコーディングしやすい環境があります。

「eclipse」
Javaを始め、データベースやAndroidアプリのプログラミングにも適したソフトです。
(このブログもeclipseで進めていきます。)

eclipseの導入は
別記したいと思います。

「eclipse インストール」等で検索すると山ほど出てきてしかも判りやすいのですが!



また、Windowsでの開発環境とmacでの環境は違いがあるので別記したいと思ってます。

2012年4月4日水曜日

Java Hello!World! ~ クラス、メソッド

javaを使ってコンソール(コマンドプロンプト)に文字を表示させるプログラム。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

このプログラムを実行すると、コンソールに「Hello World!」と表示されます。
一番最初に習った、一番簡単なプログラム。


HelloWorldというクラス(class)の中に
mainというメソッド(method)が入っていて
その中に「コンソールの表示しろ」という命令System.out.println()があります。



Javaのプログラムはプラモデルの設計図のような作り方になっており
「ロボットを作る」というプログラムがあったとすると
クラス~メソッド~命令文は大まかに言うと

大元の設計図 クラス{

    腕を作る方法を集めた部分 メソッド1{
    右腕を作る命令;
    左腕を作る命令;
    }

    足を作る方法を集めた部分 メソッド2{
    右足を作る命令;
    左足を作る命令;
    }

  ・・・
}

という状態になっています。


どんなに複雑なプログラムでも
どんなに面白い事をするアプリでも
基本的にはこの作りと変わりません。
「小さなブロックがいっぱいあって、それをくっつけていく」

ただ、JavaやAndroidのプログラミングは
その小さいブロックが山ほどあって
ブロックの組み立て方が山ほどあるだけです。

いっぱい組み立てて、楽しいものを作りたいですね。