2010年1月7日木曜日

Android Button の色や画像を変える

Button の背景を別の色や画像に変えるには、
2つ方法があります。

最も単純な方法は Button タグのパラメータで

android:background="@drawable/button_image"



android:background="#ff0000ff"

のように画像や background を指定する方法です。

しかし、この場合だとボタンにフォーカスがあった
場合やボタンが押された場合でも変化がありません。

そこで、ボタンにフォーカスがあった場合や、
ボタンが押された場合の色や画像を指定する方法があります。

わかりやすくするために、色の場合と画像の場合で
分けて書きます。

・色の場合

まず、次のような xml ファイルを drawable/ に作ります。

color_stateful.xml

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<color android:color="#ff5555ff" />
</item>
<item android:state_pressed="false">
<color android:color="#ff9999ff" />
</item>
</selector>


もしくは


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:color="@color/testcolor1" />
<item
android:state_pressed="true"
android:state_enabled="false"
android:color="@color/testcolor2" />
<item
android:state_enabled="false"
android:color="@color/testcolor3" />
<item
android:state_active="true"
android:color="@color/testcolor4" />
<item android:color="@color/testcolor5"/>
</selector>


・画像の場合

image_stateful.xml

<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:drawable="@drawable/image1"/>
<item
android:state_pressed="true"
android:state_enabled="false"
android:drawable="@drawable/image2" />
<item
android:state_enabled="false"
android:drawable="@drawable/image3" />
<item
android:state_active="true"
android:drawable="@drawable/image4" />
<item android:color="@color/testcolor5" />
</selector>



あとは、 Button のパラメータで

android:background="@drawable/color_stateful"

android:background="@drawable/image_stateful"

と指定すればOK。


 

Android Intent.ACTION_SEND

ある文章を Twitter client や Mailer などで送りたいとき、

Intent.ACTION_SEND で Intent を投げればOKです。

具体的なコードはこんな感じ。


Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT, "これはテストです。");
try{
startActivityForResult(intent, 0);
}
catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "client not found", Toast.LENGTH_LONG).show();
}

2010年1月5日火曜日

Android textにリンクをはる

TextView の android:text に http://www.google.com のような
アドレス形式が含まれる文字列を指定する場合、

android:autoLink="web"

を指定すれば、アドレス部分が青文字+下線付きになり、
その部分をタップすると、ブラウザに飛ぶようにすることができます。

こんな感じ




他にも

"email", "phone", "map", "all"

が指定できます。