電卓の作成
電卓のDisplay
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="1000"
android:textSize="60dip"
android:textColor="#f39800"
android:gravity="right"
android:background="#999999"
/>
</LinearLayout>
キー
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/display"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:textSize="60dip"
android:textColor="#f39800"
android:gravity="right"
android:background="#999999"
/>
<LinearLayout
android:gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/button7"
android:text="7"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/button8"
android:text="8"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/button9"
android:text="9"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/buttonClear"
android:text="C"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
</LinearLayout>
<LinearLayout
android:gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/button4"
android:text="4"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/button5"
android:text="5"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/button6"
android:text="6"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/buttonPlus"
android:text="+"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
</LinearLayout>
<LinearLayout
android:gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/button1"
android:text="1"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/button2"
android:text="2"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/button3"
android:text="3"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/buttonMinus"
android:text="-"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
</LinearLayout>
<LinearLayout
android:gravity="center_horizontal"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/button0"
android:text="0"
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/buttonTen"
android:text="."
android:textSize="40dip"
android:layout_width="80dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
<Button
android:id="@+id/buttonEqual"
android:text="="
android:textSize="40dip"
android:layout_width="160dip"
android:layout_height="80dip"
android:background="@drawable/button_anim"
>
</Button>
</LinearLayout>
</LinearLayout>
クリアのみが有効なサンプル
MainActivity.java
package com.example.sasakiakira.uisample2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
/** Buttonの配列. */
private Button mButton[];
/** ButtonのIdの配列. */
int mId[] = {R.id.button0,R.id.button1,R.id.button2,R.id.button3,
R.id.button4,R.id.button5,R.id.button6,R.id.button7,
R.id.button8,R.id.button9,R.id.buttonPlus,R.id.buttonMinus,
R.id.buttonEqual,R.id.buttonTen, R.id.buttonClear
};
/** 配列の場所を定数化. */
private final int KEY_0 = 0;
private final int KEY_1 = 1;
private final int KEY_2 = 2;
private final int KEY_3 = 3;
private final int KEY_4 = 4;
private final int KEY_5 = 5;
private final int KEY_6 = 6;
private final int KEY_7 = 7;
private final int KEY_8 = 8;
private final int KEY_9 = 9;
private final int KEY_PLUS = 10;
private final int KEY_MINUS = 11;
private final int KEY_EQUAL = 12;
private final int KEY_TEN = 13;
private final int KEY_CLEAR = 14;
/** 電卓のディスプレイ. */
private TextView mTextView;
/** 合計値. */
private int total;
/** 1つ前の状態を保持. */
private int beforeStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// TextView
mTextView = (TextView) findViewById(R.id.display);
// Button
mButton = new Button[mId.length];
// Buttonの取り込みとイベントのはりつけ
for(int i = 0; i < mId.length; i++){
// buttonを取り込む
mButton[i] = (Button)findViewById(mId[i]);
// buttonのイベント処理
mButton[i].setOnClickListener(this);
}
}
@Override
public void onClick(View v) {
// 押されたボタンがどのボタンかを判定
for (int i = 0; i < mId.length; i++) {
if (v.equals(mButton[i])) {
// CLEAR
if (i == KEY_CLEAR) {
mTextView.setText("");
total = 0;
beforeStatus = KEY_CLEAR;
}
// 数字
else if (i < 10) {
String nowValue = mTextView.getText().toString();
nowValue = nowValue + i;
mTextView.setText(nowValue);
beforeStatus = i;
}
break;
}
}
}
}
課題1
+-.%を実装しましょう。
TextViewで取得した文字列(String)をInt型に変更する方法は下記の通りです。
String nowValue = mTextView.getText().toString();
int value = Integer.parseInt(nowValue);
これでStringをIntに変換する事ができます。
課題2
おかしな挙動や、おかしな操作をした場合の対処を入れましょう。
例)
- 1,+とボタンを押した後、=が押されたら?
- 何も入力されていないのに+や-や=が押されたら?
- 0だけ入力されている状態で他の数字キーが押されたら?
- 100桁の数字が入力されたら?
- etc...