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轉成中文後似乎轉不回英文的,所以就沒放進去。
這個程式是課堂上的作業,想說把他打在這,我還是個菜鳥,對於程式沒有很熟,還請大家多多指教囉 : )
沒有留言:
張貼留言