Androidでボタンを押された(押下)時の画像を表示してみる

移転しました。

Androidで連射測定アプリなるものを作成している。
その際に連射する際のボタンの画像を、

ボタンを押してから離すまでの間

のみ「押された状態のボタンの画像」に変更する方法がわからなかったのでメモっておく。

キーテルの人に教わりました。

ソース

ImageButton(Buttonでもよい?)のオブジェクトをfindViewByIdで取得して、OnTouchListenerを設定してやる。
OnTouchListenerの中では、onTouchメソッドを実装して、MotionEvent.ACTION_DOWN(ボタンが押された時)に「押された時の画像」に変えて、MotionEvent.ACTION_UP(ボタンが離された時)に「通常の時の画像」に変えればOK

public class Sample extends Activity {
        :
private static Drawable pushBack; // 押された時の画像
private static Drawable normalBack; // 通常時の画像
private Resources res;
        :
@Override
public void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.main);
	
	res = getResources();
           :
           :
	ImageButton countBtn = (ImageButton) findViewById(R.id.imgbtn);
	countBtn.setOnTouchListener(new View.OnTouchListener()
	{
		public boolean onTouch(View v, MotionEvent event) {
			ImageButton countBtn = (ImageButton) findViewById(R.id.imgbtn);
			if(event.getAction() == MotionEvent.ACTION_DOWN)
			{
				if(pushBack == null) pushBack = res.getDrawable(R.drawable.counter);
				countBtn.setBackgroundDrawable(pushBack);
			}
			else if(event.getAction() == MotionEvent.ACTION_UP)
			{
				if(normalBack == null) normalBack = res.getDrawable(R.drawable.button);
				countBtn.setBackgroundDrawable(normalBack);
			}
			return false;
		}	
	});
           :
}