目次
I.はじめに
学習目標: コースで学習した関連知識に基づいて、簡単な計算機を完成させ、特定の機能を実現します。
ツール環境:Android Studio、Java言語
実装機能:
1. 数字、加算、減算、乗算、除算、削除、クリアなどの基本的なボタンを備えたシンプルなページ レイアウトを完成させます。
2. バックグラウンドで関連機能の基本的な実装を完了する
2. デザインアイデア
レイアウト:
1. 新しい Android Studio プロジェクトを作成し、電卓の UI インターフェイスを表示するアクティビティを作成します
2. ユーザーが入力した式や計算結果、ユーザー操作用の複数の Button コントロールを表示する TextView をレイアウト ファイルに追加します。
1. レイアウト GridLayout を使用してレイアウトを完成させます。
1. 全体のレイアウトに GridLayout を配置します。ここで、
(1) 最初の GridLayout は、電卓の結果ボックスと入力処理ボックスとして 2 つの編集ボックスを配置します。
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<EditText
android:id="@+id/ed_input"
android:layout_width="match_parent"
android:layout_height="100dp"
android:hint="输入框"
/>
<EditText
android:id="@+id/ed_output"
android:layout_width="match_parent"
android:layout_height="100dp"
android:hint="输出口"
/>
</GridLayout>
(2) 2 番目の GridLayout はアクション ボタンを配置します
<GridLayout
android:layout_width="match_parent"
android:layout_height="304dp"
android:columnCount="4"
android:rowCount="4">
<Button
android:id="@+id/buttonc"
android:layout_width="180dp"
android:layout_height="60dp"
android:layout_columnSpan="2"
android:backgroundTint="#a6a6a6"
android:text="c" />
<Button
android:id="@+id/buttondel"
android:layout_width="90dp"
android:layout_height="60dp"
android:layout_columnSpan="1"
android:backgroundTint="#a6a6a6"
android:text="DEL" />
<Button
android:id="@+id/buttonchu"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#ff9500"
android:text="/" />
<Button
android:id="@+id/button7"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="7" />
<Button
android:id="@+id/button8"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="8" />
<Button
android:id="@+id/button9"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="9" />
<Button
android:id="@+id/buttoncheng"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#ff9500"
android:text="*" />
<Button
android:id="@+id/button4"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="4" />
<Button
android:id="@+id/button5"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="5" />
<Button
android:id="@+id/button6"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="6" />
<Button
android:id="@+id/buttonjian"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#ff9500"
android:text="-" />
<Button
android:id="@+id/button1"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="1" />
<Button
android:id="@+id/button2"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="2" />
<Button
android:id="@+id/button3"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="3" />
<Button
android:id="@+id/buttonjia"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#ff9500"
android:text="+" />
<Button
android:id="@+id/buttonyuliu"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="预留" />
<Button
android:id="@+id/button0"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="0" />
<Button
android:id="@+id/buttondian"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#333333"
android:text="." />
<Button
android:id="@+id/buttondeng"
android:layout_width="90dp"
android:layout_height="60dp"
android:backgroundTint="#ff9500"
android:text="=" />
</GridLayout>
レイアウト スタイルは大まかに図に示すとおりです。
2. 部分的なコードの説明:
1. 対応するボタンに ID を追加します
2. レイアウトを完璧にして美しくする
バックステージ:
関連する機能はレイアウト バインディング ID によって実装されます。アクティビティで、各 Button コントロールのクリック イベント リスナーを追加し、対応するロジック コードをその中に記述します。
package com.example.wyn_0411;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private Button mbutton1,mbutton2,mbutton3,mbutton4,mbutton5,mbutton6,mbutton7,mbutton8,mbutton9,mbutton0,
mbuttonc,mbuttondel,mbuttonyuliu,mbuttonjia,mbuttonjian,
mbuttoncheng,mbuttonchu,mbuttondian,mbuttondeng;
private EditText edinput,edoutput;
private boolean deng_flag=false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//数字0-9
mbutton1=findViewById(R.id.button1);
mbutton2=findViewById(R.id.button2);
mbutton3=findViewById(R.id.button3);
mbutton4=findViewById(R.id.button4);
mbutton5=findViewById(R.id.button5);
mbutton6=findViewById(R.id.button6);
mbutton7=findViewById(R.id.button7);
mbutton8=findViewById(R.id.button8);
mbutton9=findViewById(R.id.button9);
mbutton0=findViewById(R.id.button0);
//c、del、预留
mbuttonc=findViewById(R.id.buttonc);
mbuttondel=findViewById(R.id.buttondel);
mbuttonyuliu=findViewById(R.id.buttonyuliu);
//加减乘除、点、等号
mbuttonjia=findViewById(R.id.buttonjia);
mbuttonjian=findViewById(R.id.buttonjian);
mbuttoncheng=findViewById(R.id.buttoncheng);
mbuttonchu=findViewById(R.id.buttonchu);
mbuttondeng=findViewById(R.id.buttondeng);
mbuttondian=findViewById(R.id.buttondian);
//输入输出
edinput=findViewById(R.id.ed_input);
edoutput=findViewById(R.id.ed_output);
//设置按钮监听
//0-9
mbutton0.setOnClickListener(this);
mbutton1.setOnClickListener(this);
mbutton2.setOnClickListener(this);
mbutton3.setOnClickListener(this);
mbutton4.setOnClickListener(this);
mbutton5.setOnClickListener(this);
mbutton6.setOnClickListener(this);
mbutton7.setOnClickListener(this);
mbutton8.setOnClickListener(this);
mbutton9.setOnClickListener(this);
//c、del、预留
mbuttonc.setOnClickListener(this);
mbuttondel.setOnClickListener(this);
mbuttonyuliu.setOnClickListener(this);
//加减乘除、点、等号
mbuttonjia.setOnClickListener(this);
mbuttonjian.setOnClickListener(this);
mbuttoncheng.setOnClickListener(this);
mbuttonchu.setOnClickListener(this);
mbuttondeng.setOnClickListener(this);
mbuttondian.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
String input = edinput.getText().toString();
String output = edoutput.getText().toString();
switch (view.getId()){
//0-9
case R.id.button0:
case R.id.button1:
case R.id.button2:
case R.id.button3:
case R.id.button4:
case R.id.button5:
case R.id.button6:
case R.id.button7:
case R.id.button8:
case R.id.button9:
case R.id.buttondian:
if(deng_flag){
deng_flag=false;
edinput.setText(null);
edinput.setText(((Button) view).getText());
}else {
edinput.setText(input+((Button) view).getText());
}
edinput.setText(input+((Button) view).getText());
break;
//c
case R.id.buttonc:
edinput.setText(null);
edoutput.setText(null);
break;
//del
case R.id.buttondel:
if (deng_flag){
deng_flag=false;
edinput.setText("");
}else if(input !=null&&!input.equals("")){
edinput.setText(input.substring(0,input.length()-1));
}
break;
//预留
case R.id.buttonyuliu:
break;
//加减乘除
case R.id.buttonjia:
case R.id.buttonjian:
case R.id.buttoncheng:
case R.id.buttonchu:
edinput.setText(input+" "+((Button) view).getText()+" ");
break;
//等号
case R.id.buttondeng:
// edinput.setText(input+((Button) view).getText());
// break;
getResult();
}
}
private void getResult() {
try{
String input = edinput.getText().toString();
int iResult=0;
double dResult=0;
String cw="错误";
String s1,s2,op;//数字,数字,操作符 s1"4" op"*" s2"5"
s1=input.substring(0,input.indexOf(" "));
op=input.substring(input.indexOf(" ")+1,input.indexOf(" ")+2);
s2=input.substring(input.indexOf(" ")+3);
double d1,d2;
d1=Double.parseDouble(s1);
d2=Double.parseDouble(s2);
if(op.equals("+")){//加
dResult=d1+d2;
// edoutput.setText(dResult+"");
}else if(op.equals("-")){//减
dResult=d1-d2;
} else if (op.equals("*")){//乘
dResult=d1*d2;
} else if (op.equals("/")) {//除
if(d2==0){
edoutput.setText(cw+"");
} else if (d1==0) {
dResult=0;
} else {
dResult=d1/d2;
}
}
if(!input.equals(".")&&!input.equals("/")){
iResult=(int)dResult;
edoutput.setText(iResult+"");
}
edoutput.setText(dResult+"");
}catch (Exception e){
System.out.println(e);
}
}
}
ユーザー入力の数値や演算子の処理、式の計算の実行など、電卓のロジック コードを実装します。
3. デモンストレーション:
入力ボックスに計算過程を入力すると、結果ボックスに計算結果を表示できます。
写真が示すように:
4. まとめ
Android Studio と Java 言語を使用して簡単な電卓を実装する過程で、Java 言語と Android Studio という 2 つの強力なツールの利点と使用方法を発見し、ソフトウェア開発の楽しさと難しさを深く認識しました。
まず、Java 言語は、開発者がオブジェクト指向の思考と高品質のコードの作成に特に重点を置いて、効率的で安定したアプリケーションを迅速に開発するのに役立ちます。このアプリケーションでは、Java 言語を使用してロジック コードを記述し、オブジェクト指向プログラミングを採用してさまざまな計算関数を関数にカプセル化し、クラスのインスタンス化と組み合わせて電卓の基本的な機能を実現し、コードの品質を大幅に向上させました。そしてプログラムの再利用性。コードを書く過程では、コードのロジックや完成度などを真剣に考え、一歩ずつ問題を解決していかなければなりません。このプロセスにより、論理的思考力と問題解決スキルを鍛えることができます。
次に、Android Studio は高度な開発ツールとして、コード プロンプトや自動補完、デバッグ、豊富な開発ライブラリやプラグインなど、プログラマーの開発効率を効果的に向上させることができます。同時に、Android Studio は、レイアウト エディター、デバッガー、APK の生成、アプリケーションの公開など、いくつかの強力なツールも提供します。これらのツールは、開発者が高品質のアプリケーションを迅速かつ効率的に開発するのに役立ちます。また、UIのデザインやインタラクションの実装では、ユーザーの習慣やニーズに基づいて便利で実用的なインターフェースをデザインする必要があり、UIデザインの能力を発揮しました。コードのデバッグと最適化中に、考えられるさまざまな問題を注意深く見つけて解決し、コードをより安定して効率的にするために卓越性を追求する必要があります。これにより、私の忍耐力と細部に注意を払う能力が鍛えられました
一般に、Android Studio と Java 言語を使用して簡単な計算機を実装するプロセスからは、Java 言語とアプリケーションの開発プロセス、設計思想、実装スキルを深く理解できるだけでなく、ソフトウェア開発の楽しさと難しさを実感しました。継続的な努力と学習を通じて、より優れた実用的で効率的なアプリケーションを作成できるようになると信じています。