Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android ApiDemo 系列解析【View->Button】

Android ApiDemo 系列解析【View->Button】

編輯:Android開發實例

    一直想把 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
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved