////
TOP目次
2012年06月07日

アクティビティのイベント


ウィジェットだけでなくアクティビティにもイベントがあります
今回はonTouchEventonKeyDown
使ってみたいと思います
アプリケーションを起動してから画面をタッチするとウィジェットに関係なく
(タッチしたポイントに関係なく)onTouchEventが発生します
キーを押すことによりonKeyDownが発生します

イベントの発生に合わせてテキストビューの文字を変更するプログラムです
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    TextView tv;
 
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        tv.setText("ActivityのTouchイベントが発生");
        return super.onTouchEvent(event);
    }
 
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        tv.setText("Activityのキーイベントが発生");
        return super.onKeyDown(keyCode, event);
    }
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        tv = new TextView(this);
        tv.setText("イベント発生前");
        setContentView(tv);
    }
}

これを実行するとまずはイベント発生前の文字が表示されます
device124.png

次に画面のどこでもいいのでタッチすると
表示がタッチイベントが発生に変わります
device125.png

何かキーを押すことによってキーイベントの発生の文字に変化します
device126.png
スポンサードリンク

posted by kenken at 17:24 | Comment(0) | TrackBack(0) | イベント イベント処理 | このブログの読者になる | 更新情報をチェックする
2012年05月31日

様々なクリックイベント処理


前回はイベント処理について書きました
ウィジェットのイベント処理
また前回と同様のイベント処理を様々な記述方法によって実行してみたいと思います

無名クラスを使う
前回のイベント処理の簡略化のためjavaの無名クラスを使って実装する方法があります
Javaではクラスに名前を付けずに利用することができます
その方法で宣言された内部クラスは名前を持たないので無名クラスです
匿名クラス無名内部クラスなんて言い方もします
プログラムの簡略化はできますが・・・明示的なextendsやimplementsを持つこともできません
これを継承するクラスを作成できません
こういったいくつかの制限がありますがソースを簡略化し見やすくするメリットもあります
簡単な動作なら無名クラスを使うのも選択肢の一つです
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

 


public class MainActivity extends Activity {
	
	
	//RadioGroup group;

	@Override
	public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
		
		//テキストビュー作成
        TextView tv = new TextView(this);
        tv.setText("イベント発生前");
        setContentView(tv);
        //無名クラスを利用
       tv.setOnClickListener(new View.OnClickListener() {
               public void onClick(View v) {
                   ((TextView)v).setText("クリックイベントが発生しました。");
               }
           });
       }
}
実行結果は前回と同様でクリックするとテキストビューの文字が変更する仕様です


アクティビティにimplements
アクティビティクラスにイベントリスナ-をインプリメントすることで
自分自身のクラスにOnClickListenerインタフェースを実装することもできます
この時setOnClickListenerの引数にはOnClickListenerインターフェースを実装したクラスのオブジェクトを指定しますが
自分自身のクラスで実装していますので“this”を指定します
MainActivity.java
package blog.test;

 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
 
public class MainActivity extends Activity implements View.OnClickListener {
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
         
        TextView tv = new TextView(this);
        tv.setText("イベント発生前");
        setContentView(tv);
         
        tv.setOnClickListener(this);
    }
     
    public void onClick(View v) {
        ((TextView)v).setText("クリックイベントが発生しました");
    }
}
最初に Activity implements View.OnClickListenerでActivityに実装しています
実行結果は前回同様なので省きます
スポンサードリンク

posted by kenken at 11:19 | Comment(0) | TrackBack(0) | イベント イベント処理 | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。