Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- ContextLoaderListener란
- 계산기
- H2 DB
- Servlet Container란
- Spring Handler
- 인텔리제이
- ElasticSearch EdgeNGram
- Servlet Life Cycle
- Spring Container란
- layout
- Servlet과 Thread
- 자바
- ApplicationContext란
- ElasticSearch NGram
- Dispathcher Servlet이란
- ElasticSearch 동의어 사전
- ElasticSearch 토큰필터
- 동의어 파일
- 안드로이드
- 안드로이드스튜디오
- elasticSearch
- Spring Servlet이란
- H2
- ElasticSearch 동의어 파일
- Bean Factory란
- Java
- ElasticSearch Shingle
- spring 장점
- Servlet 멀티 스레딩
- 토큰필터
Archives
- Today
- Total
결국 무엇이든 해내는 사람
(Android) 계산기 만들기 - 최종 소스 본문
반응형
<?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:weightSum="100"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:orientation="vertical"
android:padding="5sp">
<TextView
android:id="@+id/result_text"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="right|center_vertical"
android:padding="5sp"
android:text="0"
android:textSize="40sp"
android:textColor="#6B918E8E"></TextView>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="#000000">
</TextView>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="80"
android:orientation="vertical"
android:padding="10dp"
android:weightSum="100">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/all_clear_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="buttonClick"
android:text="AC"
android:textSize="30dp"></Button>
<Button
android:id="@+id/clear_entry_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="buttonClick"
android:text="CE"
android:textSize="30dp">
</Button>
<Button
android:id="@+id/back_space_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="buttonClick"
android:text="BS"
android:textSize="30dp"></Button>
<Button
android:id="@+id/division_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:backgroundTint="#8FFFFFFF"
android:onClick="operatorClick"
android:text="/"
android:textSize="30dp"></Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/num_7"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="7"
android:textSize="30dp"></Button>
<Button
android:id="@+id/num_8"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="8"
android:textSize="30dp">
</Button>
<Button
android:id="@+id/num_9"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="9"
android:textSize="30dp"></Button>
<Button
android:id="@+id/mul_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:backgroundTint="#8FFFFFFF"
android:onClick="operatorClick"
android:text="*"
android:textSize="30dp"></Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/num_4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="4"
android:textSize="30dp"></Button>
<Button
android:id="@+id/num_5"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="5"
android:textSize="30dp">
</Button>
<Button
android:id="@+id/num_6"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="6"
android:textSize="30dp"></Button>
<Button
android:id="@+id/minus_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:backgroundTint="#8FFFFFFF"
android:onClick="operatorClick"
android:text="-"
android:textSize="30dp"></Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/num_1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="1"
android:textSize="30dp"></Button>
<Button
android:id="@+id/num_2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="2"
android:textSize="30dp">
</Button>
<Button
android:id="@+id/num_3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="numButtonClick"
android:text="3"
android:textSize="30dp"></Button>
<Button
android:id="@+id/plus_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:backgroundTint="#8FFFFFFF"
android:onClick="operatorClick"
android:text="+"
android:textSize="30dp"></Button>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="20"
android:orientation="horizontal"
android:weightSum="100">
<Button
android:id="@+id/num_0"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="50"
android:onClick="numButtonClick"
android:text="0"
android:textSize="30dp"></Button>
<Button
android:id="@+id/dot_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="buttonClick"
android:text="."
android:textSize="30dp">
</Button>
<Button
android:id="@+id/result_button"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="25"
android:onClick="operatorClick"
android:text="="
android:textSize="30dp"></Button>
</LinearLayout>
</LinearLayout>
</LinearLayout>
package com.example.youtube_cal;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
boolean isFirstInput = true; // 입력값이 처음입력값인지 체크
int resultNumber = 0; //결과값
char operator = '+';//입력된 연산자를 저장하는 변수
final String CLEAR_INPUT_TEXT = "0"; //상수는 대문자로
//주황색은 기본 변수 , 기본 변수는 기본의 값이 정해져있다 . 범위라던가 초기값,용량등등. 그래서 메모리에 바로 저장을한다.(할당)
TextView resultText; //얘는 resultText에서 값을 가지고와서 쓸 변수임, 얘는 바로 초기화 불가능 , setContentView 실행후에 가능
//TextView는 레퍼런스변수 (참조변수), 참조변수는 값이 얼마가 될지모른다. 그래서 메모리공간에 바로 저장 할 수가없음 . 그래서 주소값을 넣어준다
// ctrl + alt + L 은 줄 자동정렬 단축키
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//R 은 Resource , id 는 아이디를 말함
resultText = findViewById(R.id.result_text); //이제야 초기화 ㅇㅇ
}
public void buttonClick(View view) {//클릭리스너를 쓰지않고 메소드를 만들어서 사용
switch (view.getId()) {
case R.id.all_clear_button:
resultNumber = 0;//0으로 초기화
operator = '+';
setClearText("0");
break;
case R.id.clear_entry_button:
setClearText(CLEAR_INPUT_TEXT);
break;
case R.id.back_space_button:
if (resultText.getText().length() > 1) { //길이에 맞게 삭제
String getResultText = resultText.getText().toString();
String subString = getResultText.substring(0, getResultText.length() - 1);
resultText.setText(subString);
} else {
setClearText(CLEAR_INPUT_TEXT);
}
break;
case R.id.dot_button:
break;
}
}
public void numButtonClick(View view) {
Button getButton = findViewById(view.getId()); //버튼 메소드가 실행이 될때마다 , view가 들어와서
if (isFirstInput) {//처음에 들어온 값이냐를 묻는 것
resultText.setTextColor(0xFF000000); //누른숫자는 검은색
resultText.setText(getButton.getText().toString());
isFirstInput = false;//false로 바꾸어주기
} else {
if (resultText.getText().toString().equals("0")) {
Toast.makeText(getApplicationContext(), "0으로 시작하는 숫자는 없습니다.", Toast.LENGTH_SHORT).show();
setClearText(CLEAR_INPUT_TEXT);
return; //리턴을만나면 메소드를 빠져나감
}
resultText.append(getButton.getText().toString()); //뒤에 1추가
}
}
public void setClearText(String clearText) {
isFirstInput = true;
resultText.setTextColor(0x6B918E8E);
resultText.setText(clearText);
}
public void operatorClick(View view) {
Button getButton = findViewById(view.getId());
if (view.getId() == R.id.result_button) {
if (isFirstInput ) {
//=을 두번누르면
resultNumber = 0;//0으로 초기화
operator = '+';
setClearText(CLEAR_INPUT_TEXT);
//TODO: 실수계산기 구현시 수정
} else { //정상적인 =
resultNumber = intCal(resultNumber, Integer.parseInt(resultText.getText().toString()), operator);
resultText.setText(String.valueOf(resultNumber));
isFirstInput = true;
}
} else {
if (isFirstInput) {
operator = getButton.getText().toString().charAt(0);
//오퍼레이터만 저장해줌 (기호 두번눌럿을때)
} else {
int lastNum = Integer.parseInt(resultText.getText().toString());
resultNumber = intCal(resultNumber, lastNum, operator);
operator = getButton.getText().toString().charAt(0);
resultText.setText(String.valueOf(resultNumber));
isFirstInput = true;
}
}
}
public int intCal(int result, int lastNum, char op) {
if (operator == '+') {
result += lastNum;
} else if (operator == '-') {
result -= lastNum;
} else if (operator == '/') {
result /= lastNum;
} else if (operator == '*') {
result *= lastNum;
}
return result;
}
}
반응형
'두서없는 공부 노트 > Android' 카테고리의 다른 글
setContentView (0) | 2020.09.10 |
---|---|
onCreate, onResume , onPause , onDestroy (0) | 2020.09.10 |
(Android) 계산기 만들기 - 8 (0) | 2020.08.25 |
(Android) 계산기 만들기 - 7 (0) | 2020.08.25 |
(Android) 계산기 만들기 - 6 (0) | 2020.08.25 |
Comments