2012年4月14日 星期六

[ANDROID]溫度轉換程式

大致上完成75%了

tempconvert.xml

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical">
<EditText android:id="@+id/tempedit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="none|number"
android:singleLine="true"
android:hint="@string/enter_temp">
  <requestFocus />
  </EditText>
<RadioGroup android:id="@+id/rdg_Main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left">
<RadioButton android:id="@+id/rad_cel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="left" android:text="@string/cel_to_fah" />
<RadioButton android:id="@+id/rad_fah"
android:layout_width="315dp"
android:layout_height="wrap_content" android:layout_gravity="left"
android:text="@string/fah_to_cel" />
  </RadioGroup>
<RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="wrap_content"
android:layout_height="wrap_content">
   <Button android:id="@+id/convert_btn"
android:layout_width="100dp" android:layout_height="60dp"
android:layout_alignParentTop="true" android:layout_marginRight="38dp"
android:text="@string/convert_btn" />
   <Button android:id="@+id/clear_btn"
android:layout_width="100dp" android:layout_height="60dp"
android:layout_alignParentTop="true" android:layout_marginLeft="16dp"
android:layout_toRightOf="@+id/convert_btn" android:text="@string/clear_btn" />
  </RelativeLayout>
-  <RelativeLayout android:id="@+id/relativeLayout2" android:layout_width="match_parent"
android:layout_height="match_parent" <Button android:id="@+id/ch_lan"
android:layout_width="70dp" android:layout_height="wrap_content"
android:layout_alignParentBottom="true" android:layout_alignParentRight="true"
android:layout_marginBottom="34dp" android:layout_marginRight="20dp"
android:text="@string/ch_lan_btn" /> <TextView android:id="@+id/result_text"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:textAppearance="?android:attr/textAppearanceMedium" />
 </RelativeLayout>
 </LinearLayout>


strings.xml



<?xml version="1.0" encoding="utf-8" ?>
<resources>
  <string name="app_name">Lab 2 TEMP convert</string>
  <string name="fah_to_cel">Fahrenheit → Celsius</string>
  <string name="cel_to_fah">Celsius → Fahrenheit</string>
  <string name="convert_btn">Convert</string>
  <string name="clear_btn">Clear</string>
  <string name="enter_temp">Please enter the temperature</string>
  <string name="about_program">About</string>
  <string name="close_program">Close</string>
  <string name="dia_about_title">Version</string>
  <string name="dia_about_message">Android 2.3.3</string>
  <string name="dia_sure_btn">Sure</string>
  <string name="dia_cancel_btn">Cancel</string>
  <string name="dia_close_title">Close this program</string>
  <string name="dia_close_message">Really want to Close?</string>
  <string name="ch_lan_btn">change</string>
  </resources>



Lab2Activity.java


import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
import android.widget.TextView;
import android.widget.Toast;

public class Lab2Activity extends Activity {
private static final int close = 0; //定義MENU選項
private static final int about = 1; //定義MENU選項
private RadioGroup rdg_Main; //宣告RadioGroup選項
private RadioButton rad_cel; //宣告RadioButton選項
private RadioButton rad_fah; //宣告RadioButton選項
protected int cel_res = 0;
protected int fah_res = 0;
   

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tempconvert);
     
final DecimalFormat nf = new DecimalFormat("0.00"); //設定結果顯示格式
final EditText tempcon_edittext = (EditText)findViewById(R.id.tempedit); //宣告填入文字欄位
final TextView res_text=(TextView)findViewById(R.id.result_text); //取得TextView控制權
final Button clear_btn = (Button)findViewById(R.id.clear_btn); //取得Button控制權
final Button convert_btn = (Button)findViewById(R.id.convert_btn); //取得Button控制權
rdg_Main = (RadioGroup)findViewById(R.id.rdg_Main); //取得RadioGroup控制權
rad_cel=(RadioButton)findViewById(R.id.rad_cel); //取得RadioButton控制權
rad_fah=(RadioButton)findViewById(R.id.rad_fah); //取得RadioButton控制權
  
rdg_Main.setOnCheckedChangeListener(new OnCheckedChangeListener() { //單選鈕監聽public void onCheckedChanged(RadioGroup group, final int checkedId) {
if(tempcon_edittext.getText()!=null){ //判斷輸入欄位不是空值                                
convert_btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
        try{
        if(checkedId==rad_cel.getId()) / //判斷單選紐有選取
        {     
final double fah_res=((Double.parseDouble(tempcon_edittext.getText().toString())*9)/5)+32;
res_text.setText("Temperature = "+nf.format(fah_res)); //顯示的格式                                 }
else if(checkedId==rad_fah.getId())
{                             
final double cel_res=((Double.parseDouble(tempcon_edittext.getText().toString())-32)*5)/9;
res_text.setText("Temperature = "+nf.format(cel_res)); //顯示的格式                                          }
           }catch (Exception exception) {
        // TODO: handle exception                                              Toast.makeText(Lab2Activity.this,R.string.enter_temp, Toast.LENGTH_LONG).show();
                                               }    
                                                     }
                                               });                               
                                        }
                                 }
                }); //單選鈕監聽結束
                                              
clear_btn.setOnClickListener(new View.OnClickListener() { //清除按鍵的功能       
public void onClick(View v) {
                        // TODO Auto-generated method stub
tempcon_edittext.setText("");
res_text.setText("");
                                        }
                        });//清除按鍵的功能結束 



 /*↓ MENU↓*/
@Override //覆寫掉已定義在Activity 類別中的這個函式        
public boolean onCreateOptionsMenu(Menu menu) {  //選單列主體           
// TODO Auto-generated method stub
menu.add(0, close, 0,R.string.close_program).setIcon(R.drawable.shut); //選單選項menu.add(0, about, 1,R.string.about_program).setIcon(R.drawable.gnome_dialog_question); //選單選項
return super.onCreateOptionsMenu(menu); //呼叫onCreateOptionsMenu函式執行預設的動作       
}
@Override
public boolean onOptionsItemSelected(MenuItem item) { //處理所有選項的主體            
// TODO Auto-generated method stub
        switch (item.getItemId()) {
        case close: //關閉本程式對話框 start          
 AlertDialog.Builder closeDialog =new AlertDialog.Builder(this); //建立AlertDialog.Builder類型的builder實體
closeDialog.setTitle(R.string.dia_close_title)
         .setCancelable(false)
         .setMessage(R.string.dia_close_message)
                 .setIcon(R.drawable.shut)
         .setPositiveButton(R.string.dia_sure_btn, new OnClickListener() { //對話框按鈕相關設定                                            
                public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                finish();
                                                }
                                        })
         .setNegativeButton(R.string.dia_cancel_btn, new OnClickListener() { //對話框按鈕相關設定                                       
                public void onClick(DialogInterface dialog, int which) {
                                                }
                                        }) /關閉本程式對話框 end
                    .show();
           
                        break;
                case about:
                     AlertDialog.Builder aboutDialog = new AlertDialog.Builder(this); //建立AlertDialog.Builder類型的builder實體
aboutDialog.setTitle(R.string.dia_about_title)
                 .setCancelable(false)
                 .setMessage(R.string.dia_about_message)
                 .setIcon(R.drawable.about)
                 .setPositiveButton(R.string.dia_sure_btn, new OnClickListener() {//對話框按鈕相關設定                                     
                                                public void onClick(DialogInterface dialog, int which) {
                                                        // TODO Auto-generated method stub
                                                       
                                                }
                                        }) //關閉本程式對話框 end
                                        .show();
                       
                        break;
                default:
                        break;
                }

                return super.onOptionsItemSelected(item);
        }
}


  


執行的畫面如下:





輸入溫度,並選擇要轉換的選項





選好後按下Convert按鈕
 


換另一個選項,在按下Convert按鈕



按下Clear按鈕




若沒輸入溫度就按下Convert按鈕的話,下面會出現一個Toast訊息


右下角還有一個按鈕,但我後來沒放進程式裡,那顆按鈕是可以轉換成中文或英文介面的按鈕,只是最上面app name轉成中文後似乎轉不回英文的,所以就沒放進去。




這個程式是課堂上的作業,想說把他打在這,我還是個菜鳥,對於程式沒有很熟,還請大家多多指教囉 : )



沒有留言:

張貼留言