スキップしてメイン コンテンツに移動

Android ボタン作成の実装解説動画4パターン

Android 2.3.1で「ボタンが2つあるアプリ」を例に、4つの実装パターンを動画にしてみました。Eclipseの使い方も順番に説明しているので、最初からみた方が理解しやすいかもしれません。今回は、XMLを利用する方法のみ解説しています。javaだけで書くこともできます。


ボタンが2つあるアプリを作る準備の巻 [Android プログラミング](5:29)

  1. Android APIの設定
  2. Android プロジェクトを作る
  3. Eclipseのワークベンチ
  4. Javaパースペクティブ Java DDMS デバッグ

パースペクティブボタンの上で[右クリック]-「別名保管」を選ぶと好きなレイアウトを保存しておける説明も追加した方が親切ですね。





ボタンが2つあるアプリその1 [Android プログラミング](16:18)

  1. final
  2. 匿名インナークラスのカッコの対応
  3. 匿名なので、名前を考える必要なし
匿名インナークラスを利用すると、ボタンごとにonClick()を書くので条件分岐する必要がないです。ただ、今回は関係ないのですが、後々階層が深くなるためActivityを取得するとき、単純にthisとかではダメになります。Button01Activity.this ( 親クラス.this )などと親子関係を考慮する場面にでくわします。


package net.kaneta.button01;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

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

        Button button1 = (Button) findViewById(R.id.button1);
        Button button2 = (Button) findViewById(R.id.button2);
        final TextView textview = (TextView) findViewById(R.id.textView1);

        button1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                textview.setText("何か書く");
            }
        });

        button2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                textview.setText("");
            }
        });

    }
}
   



ボタンが2つあるアプリその2 [Android プログラミング](17:21)

  1. implements OnClickListener
  2. フィールド private TextView textview
  3. getId()
  4. Eclipse 画面分割
onClick() で条件分岐させる必要があります。

package net.kaneta.button02;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Button02Activity extends Activity implements OnClickListener{
    private TextView textview;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button b1 = (Button) findViewById(R.id.button1);
        Button b2 = (Button)findViewById(R.id.button2);
        textview = (TextView) findViewById(R.id.textView1);
        
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);    
    }

    public void onClick(View v) {
        switch (v.getId()){
        case R.id.button1:
            textview.setText("何か書く");
            break;
        case R.id.button2:
            textview.setText("");
            break;
        }
        
    }
}





ボタンが2つあるアプリその3 [Android プログラミング](17:06)

  1. 定数 private static final
  2. switch文の分岐とint
  3. setTag() と getTag()
タグで条件分岐するので工夫の余地があります。switch文で定数がラベルの役目を果たし読みやすいです。XMLでタグを指定することもできます。

package net.kaneta.button03;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Button03Activity extends Activity implements OnClickListener{
    private static final int SET = 0;
    private static final int CLEAR = 1;
    private TextView textview;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button b1 = (Button) findViewById(R.id.button1);
        Button b2 = (Button) findViewById(R.id.button2);
        textview = (TextView) findViewById(R.id.textView1);
        
        b1.setOnClickListener(this);
        b2.setOnClickListener(this);
        
        b1.setTag(SET);
        b2.setTag(CLEAR);        
    }

    @Override
    public void onClick(View v) {
        switch((Integer)v.getTag()){
//      switch(Integer.parseInt(v.getTag().toString())){
        case SET:
            textview.setText("正解!");
            break;
        case CLEAR:
            textview.setText("残念、、、");
            break;
        }
        
    }
}




ボタンが2つあるアプリその4 [Android プログラミング](11:17)

  1. xml に書いた Android:onClick() で呼ぶメソッドを指定
  2. わかりやすいメソッド名の必要性
XMLで完結する感じです。ラクですね。

package net.kaneta.button04;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class Button04Activity extends Activity {
    private TextView textview;

 /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        textview = (TextView) findViewById(R.id.textView1);
    }
    
    public void onClickSet(View v){
        textview.setText("何か書く");
    }
    
    public void onClickClear(View v){
        textview.setText("");
    }
}




利用したソフトの紹介など

私は、2011年7月くらいにAndroidのプログラムを始めました。9月に写真集アプリをマーケットに登録し、12月現在第2段を作成中です。その間に、多くの書籍や動画のお世話になりました。

特に、動画はわかりやすく勉強になりました。書籍ですと公正された正しい手順が示されますが、動画ですと解説者のミスも含めて勉強になります。(ここ重要です)

私は以前修正の容易さから、ViewletBuilderを使って動画教材を作っていました。ViewletBuilderは、見た目は完璧なものができるのですが、いざ習得してもらおうと思うとなかなか難しかったです。納品しても実際はあまり再生・利用されないことが良くありました。(きれいな動画マニュアルを作るにはおすすめです)

そのままパソコン画面を録画するCamtasia StudioやBB FlashBackなどは失敗の修正が大変というか取り直しになりますが、良くも悪くも参考になると感じでいます。記憶に残り易い感じです。

それにしても気軽にスクリーンキャスト動画をYouTubeなどへ登録できるようになりましたね。環境はそろって、あとはコンテンツだけ、、、ちなみに、今回の動画は長すぎます。内容を絞って7分くらいにしたいところです。

なお、この投稿の内容は後日、よちよちAndroidラーニングサイトhttp://yochiand.corcocu.net/ にまとめる予定です。

最後に、いつも利用させていただいているスクリーンキャスト撮影の決定版ソフトを紹介しておきましょう。以前にも書きましたが、ディスプレイドライバとして動画をキャプチャするらしく軽い動作が素晴らしいです。

BB FlashBack
http://www.bbflashback.jp/
BB FlashBack 3日本語版がでました!


このブログの人気の投稿

X250を英語キーボードに変更したいものの分解が面倒そう

ハードウェア保守マニュアル ThinkPad X250 (PDF)
によるとキーボード交換に際しては、ほとんどの部品を取り外す必要がありそうで、面倒そうです。

日本語キーボードも英語キーボードも使える状態でいたいのですが、’と”と;と:と(と)あたりの打ち間違いが多く、キーボードを見ながらタイプするといういけない状態になりがちです。
日本語変換は半角/全角キーがあたりまえのように動いてUbuntuでも使いやすいのですが、プログラム中は英語キーボードの方が使いやすいです。




ガステーブルとレンジフードと浴室換気乾燥機のリフォームをしました

東京ガスのガス点検で、ガステーブルをそろそろ更新したほうが良いということになり、いろいろと良さそうなガステーブルを物色しておりました。数年前にも探した覚えがありますが、過剰な安全装置のため現状機種の方が使いやすそうということで、買い替えを見送ったのでした。



今回は、「ブフォッ」と一拍遅れて点火するようになり、少し怖いということで更新することになりました。2015年のガステーブルの候補としては、リンナイかノーリツになると思います。上記写真は1995年のステンレストップでなかなか磨きがいがありますが、2015年のモデルではガラストップを選ぶことになります。

おすすめはリンナイのリッセかノーリツのレボア
高価格帯の商品として、リンナイではデリシア、ノーリツではプログレになります。ただ、火力が大きくなったり、省エネになるわけではありません。鍋がないのに点火しているとピーと鳴るとか、操作をしゃべるとか、グリルに設定できる料理パターンが増えるなど付加機能が充実します。

中価格帯の商品として、リンナイではリッセ、ノーリツではレボアになります。おそらく一番売れ筋の商品価格帯です。レンジフードと連動するので、換気を忘れがちな家族にも安心です。火力の調整方法が従来のガスコンロと同じで、左右に回すタイプである点も慣れているので良いです。

低価格帯の商品ですと、ノーリツのファミが候補でした。レンジフード連動と火力調整の方法を気にしなければ一番お買い得な商品だと思います。これらのガステーブルは火力が大大小となってします。しかも、1995年の大は火を小さくすると消えてしまいましたが、2015年の大はトロ火でも消えません。

もっと低価格なガスコンロでは、コンロが大中小となっていたり、トロ火で消えてしまったり、タイマーがなかったりと(今までなかったので良いような気もしますが)工事費は変わらないので割高に感じてしまいます。





レンジフードの20年での進化はガステーブルの比ではない

ガスコンロを取り替えるという話だったのですが、「どうせならレンジフードも」ということになり、調べまくりました。結果、富士工業というメーカーに決めました。リンナイなどのOEM元のようです。パナソニックや東芝にも似たような機種があります。

2015年のレンジフードはシロッコファンが標準です。1995年のファンはプロペラファンでした。…

Ubuntu 16.04 LTS でDVD再生

DVDを再生する場合、Ubuntu 16.04 LTSでは下記のようになるようです。

Linuxだからできないなんて言わないよ DVD再生準備 : Ubuntu16.04(MEMO)

sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg
ちなみに、再生したいDVDは『thirtysomething』 です。昔、TBSの深夜にやっていたのですが途中で終わってしまって気になっているのでした。

追記
MacBookAir(2013mid)で観ていた時は字幕がなかったのですが、どこからともなく字幕が表示されました。Amazon.comの配信では字幕付きでDVDでは字幕なしでガッカリしていたのですが、良かったです。ちなみに、メニュー選択ができなかったので、標準のビデオアプリでなく、VLCで観ています。