顯示具有 layout 標籤的文章。 顯示所有文章
顯示具有 layout 標籤的文章。 顯示所有文章

2012年11月16日 星期五

監聽你的Button或界面(On Click)

當我們在程式中的變數與界面中連結後,在界面中的所有動作可以
適當的傳給程式,然後由程式去判斷要做什麼動作,但通常只會
做一次,除非我們有設定監聽器,才會針對每次的變化去做處理
最常見的是Button,它按下後我們會看見圖案的變化,但實際上,
每個物件都可以設變化
下面的例子將簡單說明監聽器的使用方法

//直接在這個活動中植入監聽器(implement OnClickListener)
public class MainActivity extends Activity implements OnClickListener {
    TextView tv1, tv2;
    Button bt1;
    View lay1;
      @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
         tv1 = (TextView) findViewById(R.id.textView1);
           bt1 = (Button) findViewById(R.id.button1);
        /*
         * this代表這個activity的內容 setOnClickListenr代表設定監聽器
         * 而連結的監聽器已用implements內建在Activity之中
         */

         //將bt1這個變數設監聽器,只要界面中與它連結的button被按下,就會反應
        bt1.setOnClickListener(MainActivity.this);
         //將tv1這個變數設監聽器,只要界面中與它連結的textview被按下,就會反應
         tv1.setOnClickListener(this);
        // 指定介面的layout與lay1連結,並設定監聽器Listener     
        lay1 = (View) findViewById(R.id.lay1);
        lay1.setOnClickListener(this);
        }

    // 每個監聽器都必須有OnClick來指定後續的動作View則代表所要監聽的視
    public void onClick(View v) {
        // if 如果符合條件,則做if裡面的動作,只做一次
        //bt1==v表示如果視窗中按下的是button
        if (bt1 == v) {
            //文字的內容顯示為"TEST BUTTON", 而文字顏色為紅色
            tv1.setText("TEST BUTTON");
            tv1.setTextColor(Color.RED);
        }
        //tv1==v表示如果視窗按下的是texeview
        if (tv1 == v) {
             //文字的顏色為綠色,並且將string中的文字讀取出來
                tv1.setText(R.string/TextViewShow);
                tv1.setTextColor(Color.GREEN);
                 }
          //lay1==v表示如果視窗按下的是layout而不是button或textview
        if (lay1 == v) {
           //文字的顏色為灰色,並且顯示的內容為"TEST VIEW"
            tv1.setText("TEST VIEW");
            tv1.setTextColor(Color.GRAY);
        }
    }

專案中的結構說明

每個專案形成後,會自動形成許多資料夾

src:主程式設計的放置處。在裡面會有package,
        程式碼都放置在此

gen:最重要的位置,但我們不用去改(也不要亂改)
        所有的設定變數,都會在R.java出現
assets:外部的資料、儲存都放置在此
libs:資料庫儲存的位置
res:大部份引用的資源都放置在這裡
drawable:圖片、背景顏色、特效都放在此處
        android會預設hdpi、ldpi、mdpi、xldpi
        這是預防有此圖片放大後會不好看,因此針對
        不同的解析度,放置同名但不同畫質的圖片
layout:設計ui界面
menu:選單的放置處
values:裡面可放置color、string、style、theme
             的設定, 現在android形成新專案後會預設
             API11(values-v11)及API14(values-v14)的theme   
AndroidManifest.xml是很重要的設定,如果這裡出錯
            R.java的變數設定會出不來,則程式無法運行
            所有的權限設定及多設定的Activiy及Service
            都要在這裡寫入