一直想把 Android 的 APIDEMO 裡面的DEMO 寫出來,一來可以方便自己查看,二來方便大家能夠早一點切入,從基礎的控件到界面布局乃至到OPEN GL 等深入知識。不過惰性使然,一直遲遲未動手,今天外面下著大雨,沒心思出去,聽說外面還有人拍到深圳的“雙龍戲水”呵呵,跑題了。
好了,從頭開始吧,看了一下 APIDEMO 覺得先從Button 講起然後逐步深入,對於新手或者初學的童鞋幫助會大一點,那麼我們開始吧,講解大綱。
ApiDemos 中運行的效果
- 1、本篇講述點在 ApiDemos 位置。
- 2、為Button 添加系統樣式。
- 3、額外擴展。
1、本篇講述點在 ApiDemos 位置
- src文件
com.example.android.apis.view 下的 Buttons1.java文件 源碼為:
ApiDemos src 代碼
package com.example.android.apis.view;
import com.example.android.apis.R;
import android.app.Activity;
import android.os.Bundle;
public class Buttons1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.buttons_1);
}
}
- res 文件
layout 下的 buttons_1.xml 文件, 源碼為:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<!-- Regular sized buttons -->
<Button android:id="@+id/button_normal"
android:text="@string/buttons_1_normal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<!-- Small buttons -->
<Button android:id="@+id/button_small"
style="?android:attr/buttonStyleSmall"
android:text="@string/buttons_1_small"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ToggleButton android:id="@+id/button_toggle"
android:text="@string/buttons_1_toggle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>
2、為Button 添加系統樣式
從 ApiDemos 中看到第二個Button 為一個 style 的樣式屬性,此屬性為通過調用系統的內置樣式文件設置 Button 的大小。
格式為:“?[package:][type:]name” ,Constant Value 為 16842825 (0x01010049) 。docs 文件解釋為:
上面的XML中,定義了三個 Button 。依次往下看,第一個為普通 Button ,第二個是一個加了 Style 的 Button ,第三個為 ToggleButton 看名字可以看出來,是一個做開關作用的按鈕,作用為在兩種狀態中來回切換。
3、額外擴展
由於 ApiDemos 中對 Button 的介紹較少,在這裡我將加一些內容進來,以便開始學的朋友能夠較早的使用 Button 做一些你想做的事情,當然我所說的就是交互。內容如下:
- 1、如何在 布局中找到 View 即你要的按鈕
- 2、為 Button 添加事件監聽
- 3、為 Button 添加按上按下切換圖片效果
- 4、為 ToggleButton 添加狀態改變事件監聽
- 1、如何在 布局中找到 View 即你要的按鈕
代碼如下:
void findView() {
normal = (Button) findViewById(R.id.button_normal);
small = (Button) findViewById(R.id.button_small);
btn = (ToggleButton) findViewById(R.id.button_toggle);
}
Tip: 所查找的 VIEW 必須 是當前setConteView 方法的布局文件下的VIEW ,如果查找的另外一個XML布局的VIEW 將會報空指針。這點對於新手來說要記住,如果你要在當前布局中查找另外XML的VIEW 將會在後續的文章一一揭曉。
- 2、為 Button 添加事件監聽
代碼如下:
void setOnclick(Button btn) {
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.button_normal:
setTitle("點擊了普通按鈕");
break;
case R.id.button_small:
setTitle("點擊小按鈕");
break;
default:
break;
}
}
});
}
Tip:在這裡用了一個方法,通過點擊的view 來判斷我點擊是哪個按鈕,當然你也可以直接獲取button 然後通過button的onclick監聽直接new 一個監聽也可以,寫法有很多種。
-
為 Button 添加按上按下切換圖片效果
代碼如下:
void setOnTouch(final Button btn) {
btn.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
btn.setBackgroundResource(R.drawable.add);
break;
case MotionEvent.ACTION_DOWN:
btn.setBackgroundResource(R.drawable.add_user);
break;
default:
break;
}
return false;
}
});
}
Tip:記住在 Android 中你如果想要為 諸如 LinearLayout 等布局文件設置onTouch事件貌似不會激發MotionEvent.ACTION_UP 事件,在Button 和ImageButton是可以實現的,此功能可以為按鈕做按上換圖片換下換圖片的交互效果。
-
為 ToggleButton 添加狀態改變事件監聽
代碼如下:
btn.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if (isChecked) {
setTitle("選中");
} else {
setTitle("反選");
}
}
});
Ok,第一篇到此為止,本篇為開頭篇希望多多提意見。
運行效果:
源碼下載:/Files/TerryBlog/Button.rar
轉自:http://www.cnblogs.com/TerryBlog/archive/2010/07/28/1787312.html