安卓開發使用Spinner做出一個計算器。
阿新 • • 發佈:2018-12-22
Spinner其實是一個列表選擇框,不過Android的列表選擇框並不需要顯示下拉列表,而是相當於彈出一個選單供使用者選擇。
Spinner與Gallery都繼承了AbsSpinner,AbsSpinner繼承了AdapterView,因此他也表現出AdapterView的特徵:只要為AdapterView提供Adapter即可。
放上效果圖:
xml檔案程式碼如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" tools:context="com.example.administrator.userregistration.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/et_1" android:layout_width="100dp" android:layout_height="50dp" android:inputType="number" android:digits="1234567890"/> <Spinner android:id="@+id/sp_subject" android:layout_width="50dp" android:layout_height="wrap_content" /> <EditText android:id="@+id/et_2" android:layout_width="100dp" android:layout_height="50dp" android:inputType="number" android:digits="1234567890"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30dp" android:text="="/> <EditText android:id="@+id/et_3" android:layout_width="100dp" android:layout_height="50dp"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="開始計算" android:onClick="doStart"/> </LinearLayout> </LinearLayout>
Activity程式碼如下:
package com.example.administrator.userregistration; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; public class MainActivity extends Activity { private EditText et_1; private EditText et_2; private EditText et_3; private String et1; private String et2; private int et3; private int et4; private int sum; private String sum2; private Spinner spSubject; private ArrayAdapter<String> adapter; private String[] subjects; private int flag; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); spSubject = (Spinner) findViewById(R.id.sp_subject); subjects = new String[]{"+","-","*","/"}; adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item,subjects); //給下拉列表設定介面卡 spSubject.setAdapter(adapter); et_1= (EditText) findViewById(R.id.et_1); et_2= (EditText) findViewById(R.id.et_2); et_3= (EditText) findViewById(R.id.et_3); //et_1.setText("0"); //et_2.setText("0"); et_3.setEnabled(false); spSubject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "你選擇了" + subjects[position] + "法運算!", Toast.LENGTH_SHORT).show(); flag=position; } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } public void doStart(View v){ switch (flag){ case 0: et1=et_1.getText().toString(); et2=et_2.getText().toString(); if(et1.equals("")||et2.equals("")){ Toast.makeText(MainActivity.this,"請確認沒有空值",Toast.LENGTH_SHORT).show(); break; } et3=Integer.parseInt(et1); et4=Integer.parseInt(et2); sum=et3+et4; sum2=String.valueOf(sum); et_3.setText(sum2); break; case 1: et1=et_1.getText().toString(); et2=et_2.getText().toString(); if(et1.equals("")||et2.equals("")){ Toast.makeText(MainActivity.this,"請確認沒有空值",Toast.LENGTH_SHORT).show(); break; } et3=Integer.parseInt(et1); et4=Integer.parseInt(et2); sum=et3-et4; sum2=String.valueOf(sum); et_3.setText(sum2); break; case 2: et1=et_1.getText().toString(); et2=et_2.getText().toString(); if(et1.equals("")||et2.equals("")){ Toast.makeText(MainActivity.this,"請確認沒有空值",Toast.LENGTH_SHORT).show(); break; } et3=Integer.parseInt(et1); et4=Integer.parseInt(et2); sum=et3*et4; sum2=String.valueOf(sum); et_3.setText(sum2); break; case 3: et1=et_1.getText().toString(); et2=et_2.getText().toString(); if(et1.equals("")||et2.equals("")){ Toast.makeText(MainActivity.this,"請確認沒有空值",Toast.LENGTH_SHORT).show(); break; } et3=Integer.parseInt(et1); et4=Integer.parseInt(et2); if(et4==0){ Toast.makeText(MainActivity.this, "被除數無法為0", Toast.LENGTH_SHORT).show(); break; } sum=et3/et4; sum2=String.valueOf(sum); et_3.setText(sum2); break; } } }