XML で Button 変化

ボタンの変化をXMLで指定するには selector というのを指定してあげます
state_pressed が true なら押されている
state_focused が true ならフォーカスがあたっている
状態になりそれぞれのイメージを指定します

というわけで, XMLでボタンを変化させてみた

XMLリソース
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!-- 押されたときの Button -->
  <item android:drawable="@drawable/icon_pressed"
        android:state_pressed="true" />
  <!-- フォーカスがあたっているときの Button -->
  <item android:drawable="@drawable/icon_focused"
        android:state_focused="true" />
  <!-- 通常時の Button -->
  <item android:drawable="@drawable/icon" />
</selector>

んで、メインの方はただバックグラウンドに指定するだけ
XMLで指定してしまってもOK

サンプルプログラム
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;

public class ButtonXMLTest extends Activity {
  Button button;
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.buttonxmltest);
    
    button = (Button) findViewById(R.id.Button);
    button.setBackgroundResource(R.drawable.buttonxml);
  }    
}

プログラムを実行すると...

通常時

ボタンにフォーカスがあたったとき

ボタンが押されたとき


こんな感じ!

参考サイト
http://developer.android.com/intl/ja/resources/tutorials/views/hello-formstuff.html