From eb33e8eaf20a7a40fce6f828cebf0046669d93cb Mon Sep 17 00:00:00 2001 From: mrxjeus Date: Mon, 16 Jul 2018 08:45:25 +0700 Subject: [PATCH] complete --- app/build.gradle | 1 + .../mrjeus/calculator/CalculatorFragment.java | 225 ++++++++++++++++++ .../com/mrjeus/calculator/MainActivity.java | 9 +- .../drawable-v24/ic_launcher_foreground.xml | 1 + app/src/main/res/drawable/border.xml | 9 + app/src/main/res/drawable/border_btn_left.xml | 9 + .../res/drawable/ic_launcher_background.xml | 1 + app/src/main/res/drawable/values/colors.xml | 7 + app/src/main/res/drawable/values/dimens.xml | 5 + app/src/main/res/drawable/values/strings.xml | 23 ++ app/src/main/res/drawable/values/styles.xml | 11 + app/src/main/res/layout/activity_main.xml | 12 +- .../main/res/layout/fragment_calculator.xml | 188 +++++++++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 2 +- app/src/main/res/values/colors.xml | 1 + app/src/main/res/values/dimens.xml | 5 + app/src/main/res/values/strings.xml | 20 ++ app/src/main/res/values/styles.xml | 3 +- 19 files changed, 525 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/com/mrjeus/calculator/CalculatorFragment.java create mode 100644 app/src/main/res/drawable/border.xml create mode 100644 app/src/main/res/drawable/border_btn_left.xml create mode 100644 app/src/main/res/drawable/values/colors.xml create mode 100644 app/src/main/res/drawable/values/dimens.xml create mode 100644 app/src/main/res/drawable/values/strings.xml create mode 100644 app/src/main/res/drawable/values/styles.xml create mode 100644 app/src/main/res/layout/fragment_calculator.xml create mode 100644 app/src/main/res/values/dimens.xml diff --git a/app/build.gradle b/app/build.gradle index 2ae9496..fc2d500 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,6 +22,7 @@ dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' + implementation 'com.android.support:support-v4:27.1.1' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' diff --git a/app/src/main/java/com/mrjeus/calculator/CalculatorFragment.java b/app/src/main/java/com/mrjeus/calculator/CalculatorFragment.java new file mode 100644 index 0000000..282613a --- /dev/null +++ b/app/src/main/java/com/mrjeus/calculator/CalculatorFragment.java @@ -0,0 +1,225 @@ +package com.mrjeus.calculator; + +import android.content.Context; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.TextView; + +public class CalculatorFragment extends Fragment { + View view; + private TextView mTxtInput; + private TextView mTxtOutput; + + private Button mBtnNumber0; + private Button mBtnNumber1; + private Button mBtnNumber2; + private Button mBtnNumber3; + private Button mBtnNumber4; + private Button mBtnNumber5; + private Button mBtnNumber6; + private Button mBtnNumber7; + private Button mBtnNumber8; + private Button mBtnNumber9; + private Button mBtnDot; + + private Button mBtnAdd; + private Button mBtnSub; + private Button mBtnDiv; + private Button mBtnMul; + + private Button mBtnResult; + private Button mBtnPercent; + private Button mBtnAC; + private Button mBtnDEL; + private Button mBtnNagPos; + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + view = inflater.inflate(R.layout.fragment_calculator,container,false); + initWidget(); + setClick(); + return view; + } + + public void initWidget() { + mTxtInput = (TextView) view.findViewById(R.id.text_view_in_put); + mTxtOutput = (TextView) view.findViewById(R.id.text_view_out_put); + + mBtnNumber0 = (Button) view.findViewById(R.id.button_0); + mBtnNumber1 = (Button) view.findViewById(R.id.button_1); + mBtnNumber2 = (Button) view.findViewById(R.id.button_2); + mBtnNumber3 = (Button) view.findViewById(R.id.button_3); + mBtnNumber4 = (Button) view.findViewById(R.id.button_4); + mBtnNumber5 = (Button) view.findViewById(R.id.button_5); + mBtnNumber6 = (Button) view.findViewById(R.id.button_6); + mBtnNumber7 = (Button) view.findViewById(R.id.button_7); + mBtnNumber8 = (Button) view.findViewById(R.id.button_8); + mBtnNumber9 = (Button) view.findViewById(R.id.button_9); + mBtnDot = (Button) view.findViewById(R.id.button_dot); + + mBtnAdd = (Button) view.findViewById(R.id.button_add); + mBtnSub = (Button) view.findViewById(R.id.button_sub); + mBtnDiv = (Button) view.findViewById(R.id.button_div); + mBtnMul = (Button) view.findViewById(R.id.button_mul); + + mBtnResult = (Button) view.findViewById(R.id.button_result); + mBtnPercent = (Button) view.findViewById(R.id.button_percent); + mBtnNagPos = (Button) view.findViewById(R.id.button_neg_pos); + mBtnAC = (Button) view.findViewById(R.id.button_ac); + mBtnDEL = (Button) view.findViewById(R.id.button_del); + } + + public void setClick(){ + mBtnNumber0.setOnClickListener(click); + mBtnNumber1.setOnClickListener(click); + mBtnNumber2.setOnClickListener(click); + mBtnNumber3.setOnClickListener(click); + mBtnNumber4.setOnClickListener(click); + mBtnNumber5.setOnClickListener(click); + mBtnNumber6.setOnClickListener(click); + mBtnNumber7.setOnClickListener(click); + mBtnNumber8.setOnClickListener(click); + mBtnNumber9.setOnClickListener(click); + mBtnDot.setOnClickListener(click); + + mBtnAdd.setOnClickListener(click); + mBtnSub.setOnClickListener(click); + mBtnDiv.setOnClickListener(click); + mBtnMul.setOnClickListener(click); + + mBtnAC.setOnClickListener(click); + mBtnPercent.setOnClickListener(click); + mBtnNagPos.setOnClickListener(click); + mBtnDEL.setOnClickListener(click); + mBtnResult.setOnClickListener(click); + } + + View.OnClickListener click = new View.OnClickListener() { + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.button_0: + mTxtInput.append("0"); + break; + case R.id.button_1: + mTxtInput.append("1"); + break; + case R.id.button_2: + mTxtInput.append("2"); + break; + case R.id.button_3: + mTxtInput.append("3"); + break; + case R.id.button_4: + mTxtInput.append("4"); + break; + case R.id.button_5: + mTxtInput.append("5"); + break; + case R.id.button_6: + mTxtInput.append("6"); + break; + case R.id.button_7: + mTxtInput.append("7"); + break; + case R.id.button_8: + mTxtInput.append("8"); + break; + case R.id.button_9: + mTxtInput.append("9"); + break; + case R.id.button_dot: + mTxtInput.append("."); + break; + case R.id.button_add: + mTxtInput.append("+"); + break; + case R.id.button_sub: + mTxtInput.append("-"); + break; + case R.id.button_div: + mTxtInput.append("/"); + break; + case R.id.button_mul: + mTxtInput.append("*"); + break; + case R.id.button_result: + //todo some thing + mTxtOutput.setText(resultNumber(mTxtInput.getText().toString())); + break; + case R.id.button_percent: + + break; + case R.id.button_neg_pos: + + break; + case R.id.button_ac: + mTxtInput.setText(""); + break; + case R.id.button_del: + String numberAffterRemove = deleteNumber(mTxtInput.getText().toString()); + mTxtInput.setText(numberAffterRemove); + break; + } + } + }; + public String deleteNumber(String number) { + if (number.length() != 0) { + int length = number.length(); + String mTem = number.substring(0, length - 1); + return mTem; + } + return null; + } + + public String resultNumber(String input) { + String mNumber1 = ""; + String mNumber2 = ""; + double mResult = 0, mNum1, mNum2; + for (int i = 0; i < input.length(); i++) { + if (input.charAt(i) == '+') { + mNumber1 = input.substring(0, i); + mNum1 = Double.parseDouble(mNumber1); + mNumber2 = input.substring(i + 1, input.length()); + mNum2 = Double.parseDouble(mNumber2); + mResult = mNum1 + mNum2; + return (String.valueOf(mResult)); + } + if (input.charAt(i) == '-') { + mNumber1 = input.substring(0, i); + mNum1 = Double.parseDouble(mNumber1); + mNumber2 = input.substring(i + 1, input.length()); + mNum2 = Double.parseDouble(mNumber2); + mResult = mNum1 - mNum2; + return (String.valueOf(mResult)); + } + if (input.charAt(i) == '*') { + mNumber1 = input.substring(0, i); + mNum1 = Double.parseDouble(mNumber1); + mNumber2 = input.substring(i + 1, input.length()); + mNum2 = Double.parseDouble(mNumber2); + mResult = mNum1 * mNum2; + return (String.valueOf(mResult)); + } + if (input.charAt(i) == '/') { + mNumber1 = input.substring(0, i); + mNum1 = Double.parseDouble(mNumber1); + mNumber2 = input.substring(i + 1, input.length()); + mNum2 = Double.parseDouble(mNumber2); + mResult = mNum1 / mNum2; + return (String.valueOf(mResult)); + } + } + return String.valueOf(mResult); + } +} diff --git a/app/src/main/java/com/mrjeus/calculator/MainActivity.java b/app/src/main/java/com/mrjeus/calculator/MainActivity.java index 2dd98e3..8915d7f 100644 --- a/app/src/main/java/com/mrjeus/calculator/MainActivity.java +++ b/app/src/main/java/com/mrjeus/calculator/MainActivity.java @@ -1,13 +1,20 @@ package com.mrjeus.calculator; +import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { - + CalculatorFragment calculatorFragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); + + calculatorFragment = new CalculatorFragment(); + FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); + fragmentTransaction.replace(R.id.frame_cal,calculatorFragment); + fragmentTransaction.commit(); } } + diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml index c7bd21d..c90c220 100644 --- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -32,3 +32,4 @@ android:strokeColor="#00000000" android:strokeWidth="1" /> + diff --git a/app/src/main/res/drawable/border.xml b/app/src/main/res/drawable/border.xml new file mode 100644 index 0000000..f9e14b8 --- /dev/null +++ b/app/src/main/res/drawable/border.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/border_btn_left.xml b/app/src/main/res/drawable/border_btn_left.xml new file mode 100644 index 0000000..22326bc --- /dev/null +++ b/app/src/main/res/drawable/border_btn_left.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index d5fccc5..22fc77e 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -168,3 +168,4 @@ android:strokeColor="#33FFFFFF" android:strokeWidth="0.8" /> + diff --git a/app/src/main/res/drawable/values/colors.xml b/app/src/main/res/drawable/values/colors.xml new file mode 100644 index 0000000..1c10bfe --- /dev/null +++ b/app/src/main/res/drawable/values/colors.xml @@ -0,0 +1,7 @@ + + + #3F51B5 + #303F9F + #FF4081 + + diff --git a/app/src/main/res/drawable/values/dimens.xml b/app/src/main/res/drawable/values/dimens.xml new file mode 100644 index 0000000..ee28a32 --- /dev/null +++ b/app/src/main/res/drawable/values/dimens.xml @@ -0,0 +1,5 @@ + + + 25sp + 75dp + \ No newline at end of file diff --git a/app/src/main/res/drawable/values/strings.xml b/app/src/main/res/drawable/values/strings.xml new file mode 100644 index 0000000..ed3b237 --- /dev/null +++ b/app/src/main/res/drawable/values/strings.xml @@ -0,0 +1,23 @@ + + Calculator + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + . + - + + + / + * + +/- + % + AC + DEL + = + diff --git a/app/src/main/res/drawable/values/styles.xml b/app/src/main/res/drawable/values/styles.xml new file mode 100644 index 0000000..5885930 --- /dev/null +++ b/app/src/main/res/drawable/values/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 095d9d6..e67b108 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,8 +1,12 @@ - - + + + diff --git a/app/src/main/res/layout/fragment_calculator.xml b/app/src/main/res/layout/fragment_calculator.xml new file mode 100644 index 0000000..4571fda --- /dev/null +++ b/app/src/main/res/layout/fragment_calculator.xml @@ -0,0 +1,188 @@ + + + + + +