Button控件的基本用法和TextView、EditText相似,最常用的是按鈕單擊事件。
案例一:按鈕的焦點變化
1. 主要代碼
......
private int value = 1; // 用于改變按鈕的大小
......
commonButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Button button = (Button) v;
if (value == 1
&& button.getWidth() == getWindowManager().getDefaultDisplay().getWidth()) {
value = -1;
} else if (value == -1 && button.getWidth() < 100) {
value = 1;
}
button.setWidth(button.getWidth() + (int) (button.getWidth() * 0.1) * value);
button.setHeight(button.getHeight() + (int) (button.getWidth() * 0.1) * value);
}
});
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
}
});
/*
* 表示當(dāng)前觸摸屏觸摸的時候會回調(diào)該方法 MotionEvent表示移動的動作,有觸摸筆,手勢,滾動球等
* getAction():表示計算按下點與滑動后的點的之間的距離
*/
imageButton.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
v.setBackgroundResource(R.drawable.button1);
} else if (event.getAction() == MotionEvent.ACTION_DOWN) {
v.setBackgroundResource(R.drawable.button2);
}
return false;
}
});
// 表示當(dāng)前這個控件的焦點發(fā)生變化的時候就觸發(fā)它。
imageButton.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
imageButton.setBackgroundResource(R.drawable.button2);
} else {
imageButton.setBackgroundResource(R.drawable.button1);
}
// TODO Auto-generated method stub
}
});
imageButton.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
/*
* KeyEvent表示按下的動作,getAction()表示獲取用戶的動作方法 查看android api 文檔
* ACTION_UP 于 ACTION_DOWN 表示上下鍵
*/
// TODO Auto-generated method stub
if (KeyEvent.ACTION_DOWN == event.getAction()) {
v.setBackgroundResource(R.drawable.button3);
} else if (KeyEvent.ACTION_UP == event.getAction()) {
v.setBackgroundResource(R.drawable.button2);
}
return false;
}
});
2. Demo執(zhí)行結(jié)果
案例二:圖文混排的按鈕
1. 主要代碼
SpannableString spannableStringLeft = new SpannableString("Left");
Bitmap bitmapLeft = BitmapFactory.decodeResource(getResources(), R.drawable.image_left);
ImageSpan imageSpanLeft = new ImageSpan(bitmapLeft, DynamicDrawableSpan.ALIGN_BOTTOM);
//指定當(dāng)前這個位圖位于按鈕的低端
//0-4 表示把圖片放在從0到4這些字符上面。
spannableStringLeft.setSpan(imageSpanLeft, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
SpannableString spannableStringRight = new SpannableString("Right");
Bitmap bitmapRight = BitmapFactory.decodeResource(getResources(), R.drawable.image_right);
ImageSpan imageSpanRight = new ImageSpan(bitmapRight);
spannableStringRight.setSpan(imageSpanRight, 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
button.append(spannableStringLeft);
button.append("我的按鈕");
button.append(spannableStringRight);
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="120dp"
android:orientation="horizontal" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableTop="@drawable/star"
android:text="按鈕一" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="30dp"
android:drawableTop="@drawable/star"
android:text="按鈕二" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/star"
android:text="按鈕三" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawablePadding="30dp"
android:drawableRight="@drawable/star"
android:text="按鈕四" />
</LinearLayout>
<Button
android:id="@+id/button"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="10dp"/>
2. Demo效果
|