1. 程式人生 > >安卓開發使用Spinner做出一個計算器。

安卓開發使用Spinner做出一個計算器。

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;
        }

    }
}