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; } }); : }