2012年4月18日 星期三

android範列程式-密碼認證清除按鈕

學習重點:
(1)利用button清除字串的方式
(2)
Toast toast=Toast.makeText(ATMToast1Activity.this, "提示文字內容", Toast.LENGTH_LONG);
效果等同
Toast toast=Toast.makeText(getApplicationContext(), "提示文字內容", Toast.LENGTH_LONG);
利用getApplicationContext()
可以自動抓取該java程式名稱,而不用自動寫入該程式名稱


程式範列如下:
package ATMToast1.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class ATMToast1Activity extends Activity {
    //建立全域變數
 private EditText edtATM;
    private Button btnN1, btnN2, btnN3, btnBack;
    private Button btnN4, btnN5, btnN6, btnOK;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //取得介面元件
        edtATM=(EditText)findViewById(R.id.edtATM);
        btnN1=(Button)findViewById(R.id.btnN1);
        btnN2=(Button)findViewById(R.id.btnN2);
        btnN3=(Button)findViewById(R.id.btnN3);
        btnN4=(Button)findViewById(R.id.btnN4);
        btnN5=(Button)findViewById(R.id.btnN5);
        btnN6=(Button)findViewById(R.id.btnN6);
        btnBack=(Button)findViewById(R.id.btnBack);
        btnOK=(Button)findViewById(R.id.btnOK);
        //設定共用事件
        btnN1.setOnClickListener(listener);
        btnN2.setOnClickListener(listener);
        btnN3.setOnClickListener(listener);
        btnN4.setOnClickListener(listener);
        btnN5.setOnClickListener(listener);
        btnN6.setOnClickListener(listener);
        btnBack.setOnClickListener(listener);
        btnOK.setOnClickListener(listener);
    }

    private Button.OnClickListener listener=new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
          switch(v.getId())
          {
            case R.id.btnN1:  //按 1 鈕
             displayATM("1");
             break;
            case R.id.btnN2:  //按 2 鈕
             displayATM("2");
               break;
            case R.id.btnN3:  //按 3 鈕
             displayATM("3");
                break;
            case R.id.btnN4:  //按 4 鈕
             displayATM("4");
             break;
            case R.id.btnN5:  //按 5 鈕
             displayATM("5");
               break;
            case R.id.btnN6:  //按 6 鈕
             displayATM("6");
               break;
            case R.id.btnBack:  //按 清除 鈕
             String str=edtATM.getText().toString();
             if(str.length()>0) {
              str=str.substring(0, str.length()-1);
              edtATM.setText(str);
             }
             break;
            case R.id.btnOK:  //按 確定 鈕
             str=edtATM.getText().toString();
             if(str.equals("123456")) {
              Toast toast=Toast.makeText(ATMToast1Activity.this, "密碼正確,歡迎使用提款功能!", Toast.LENGTH_LONG);
              toast.show();
             } else {
              Toast toast=Toast.makeText(getApplicationContext(), "密碼錯誤,請重新輸入。", Toast.LENGTH_LONG);
              toast.show();
              edtATM.setText("");
             }
               break;
           }
        }
  };
  
  private void displayATM(String s) {
   String str=edtATM.getText().toString();
   edtATM.setText(str + s);
  }
}

android範列程式-數字按鈕事件

學習重點:
(1)利用TableLayout進行版面配置,優點是簡潔有序。
(2)android:layout_span進行main.xml排版跨欄方式。



TableLayout版面配置


畫面呈現結果




package ATMInput.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class ATMInputActivity extends Activity {
    //建立全域變數
 private EditText edtATM;
    private Button btnN1, btnN2, btnN3;
    private Button btnN4, btnN5, btnN6;
    private Button btnN7, btnN8, btnN9;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        //取得介面元件
        edtATM=(EditText)findViewById(R.id.edtATM);
        btnN1=(Button)findViewById(R.id.btnN1);
        btnN2=(Button)findViewById(R.id.btnN2);
        btnN3=(Button)findViewById(R.id.btnN3);
        btnN4=(Button)findViewById(R.id.btnN4);
        btnN5=(Button)findViewById(R.id.btnN5);
        btnN6=(Button)findViewById(R.id.btnN6);
        btnN7=(Button)findViewById(R.id.btnN7);
        btnN8=(Button)findViewById(R.id.btnN8);
        btnN9=(Button)findViewById(R.id.btnN9);
        //設定共用事件
        btnN1.setOnClickListener(listener);
        btnN2.setOnClickListener(listener);
        btnN3.setOnClickListener(listener);
        btnN4.setOnClickListener(listener);
        btnN5.setOnClickListener(listener);
        btnN6.setOnClickListener(listener);
        btnN7.setOnClickListener(listener);
        btnN8.setOnClickListener(listener);
        btnN9.setOnClickListener(listener);
    }

    private Button.OnClickListener listener=new Button.OnClickListener() {
        @Override
        public void onClick(View v) {
          switch(v.getId())
          {
            case R.id.btnN1:  //按 1 鈕
             displayATM("1");
             break;
            case R.id.btnN2:  //按 2 鈕
             displayATM("2");
               break;
            case R.id.btnN3:  //按 3 鈕
             displayATM("3");
                break;
            case R.id.btnN4:  //按 4 鈕
             displayATM("4");
             break;
            case R.id.btnN5:  //按 5 鈕
             displayATM("5");
               break;
            case R.id.btnN6:  //按 6 鈕
             displayATM("6");
               break;
            case R.id.btnN7:  //按 7 鈕
             displayATM("7");
               break;
            case R.id.btnN8:  //按 8 鈕
             displayATM("8");
               break;
            case R.id.btnN9:  //按 9 鈕
             displayATM("9");
               break;
           }
        }
  };
  
  private void displayATM(String s) {
   String str=edtATM.getText().toString();
   edtATM.setText(str + s);
  }
}


額外補充版面排置方式(1)





額外補充版面排置方式(2)

android範列程式-共用相同的「監聽事件」的使用

學習重點:
(1)設定 button 元件 Click 事件共用相同的「監聽事件」
(2)在相同的共用監聽事件下,利用switch...case break;進行判斷


package MultiButton.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MultiButtonActivity extends Activity {
 // 宣告全域變數
 private TextView txtShow;
 private Button btnZero,btnOne,btnTwo;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
        
        // 取得資源類別檔中的介面元件
        txtShow=(TextView)findViewById(R.id.txtShow);
        btnZero=(Button)findViewById(R.id.btnZero);
        btnOne=(Button)findViewById(R.id.btnOne);
        btnTwo=(Button)findViewById(R.id.btnTwo);        
        
        // 設定 button 元件 Click 事件共用   myListner
        btnZero.setOnClickListener(myListner);       
        btnOne.setOnClickListener(myListner);
        btnTwo.setOnClickListener(myListner);
    }
    
    // 定義  onClick() 方法
    private Button.OnClickListener myListner=new Button.OnClickListener(){     
  @Override
  public void onClick(View v) {
   String s=txtShow.getText().toString();
      switch (v.getId())
      {      
       case R.id.btnZero:  
       { 
           txtShow.setText(s + "0");
        break;
       }
       case R.id.btnOne: 
       {
        txtShow.setText(s + "1");
        break;
       }
       case R.id.btnTwo: 
       {
        txtShow.setText(s + "2");
        break;
       }
      }
  }
    };
}

android範列程式-英哩與時速計算

學習重點:
(1)btnTranListener的利用,多重監聽事件使用
(2)資料型態改變int和Integer轉換


執行畫面


程式簡述
1.表示btnTranListener()寫法相同,直接代入
2.private Button.OnClickListener XXXX = new Button.OnClickListener(), 快速記憶方式
3.利用.parseInt將資料型態轉換成整數



原始碼如下:
package MileToKm.com;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

public class MileToKmActivity extends Activity {
 // 宣告全域變數
 private EditText edtMile;
 private TextView txtKm;
 private Button btnTran;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        // 取得資源類別 R 中的介面元件 id
        edtMile=(EditText)findViewById(R.id.edtMile);
        txtKm=(TextView)findViewById(R.id.txtKm);
        btnTran=(Button)findViewById(R.id.btnTran);
        
        // 設定  button 元件  Click 事件的 listener 為  btnTranListener
        btnTran.setOnClickListener(btnTranListener);
        
    }
    
    // 定義  onClick() 方法
    private Button.OnClickListener btnTranListener=new Button.OnClickListener(){
     public void onClick(View v){
      int miles=Integer.parseInt(edtMile.getText().toString());
      double km=1.61*(double)miles;
      txtKm.setText("時速= " + km + " 公里");
     }
    };
}