검색결과 리스트
글
android 계산기 한번 만들어 보자꾸나
난 개발자다.
근데.,,월요일 화요일 회사 세바뀌를 돌았다.
고정자산이다, OA자산 실사 준비다
이것저것 때문에... 소스분석하고 개선할 시간이 진짜 없었다.
개발자는 개발만 할 수 있으면 좋겠다. 흐흐흐...
오늘 화요일 현장을 돌아다니면서.. 요놈의 android가 계속 생각난다.
진짜 내가 맘에 들어하는 놈인거 가따.
일단 안드로이드 분석은 이쯤 하면 됐다 싶고....
계산기란 놈을 함 만들어보고 싶었다.
일단 기본android 프로젝트를 생성했다 .Calc라는 놈으로
프로젝트 생성을 마치고...젤 먼저 생각해야 될 것이..
UI이다.
일단 계산하는 값 2개를 받고
연산자 선택하고
결과 같 표시를 해야 될 듯 싶어
다음과 같이 만들었다.
res/layout/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 id="@+id/result"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/result" />
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<EditText id="@+id/leftBox" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
<TextView id="@+id/operator"
android:layout_height="fill_parent"
android:layout_width="wrap_content"
android:text="@string/operator"/>
<EditText id="@+id/rightBox" android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1" />
</LinearLayout>
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button id="@+id/operatorPlus"
android:text="@string/operatorPlus"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button id="@+id/operatorMinus"
android:text="@string/operatorMinus"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button id="@+id/operatorMulti"
android:text="@string/operatorMulti"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button id="@+id/operatorDivide"
android:text="@string/operatorDivide"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<Button id="@+id/calculate"
android:text="@string/calculate"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
----------------------------------------------------------------------------------------------
두번째로는 text값을 저장하고 있는 string.xml생성
/res/values/string.xml
----------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">calculator</string>
<string name="result">Calculation Result</string>
<string name="calculate">calculate</string>
<string name="operator">oper</string>
<string name="operatorPlus">+</string>
<string name="operatorMinus">-</string>
<string name="operatorMulti">*</string>
<string name="operatorDivide">/</string>
</resources>
---------------------------------------------------------------------------------------------
세번째로 각 버튼마다 이벤트를 넣었다.
src/com.tistory.jolaking/CalcActivity.java
----------------------------------------------------------------------------------------------
package com.tistory.jolaking;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class CalcActivity extends Activity {
private TextView tv;
private Button operatorPlus;
private Button operatorMinus;
private Button operatorMulti;
private Button operatorDivide;
private TextView operView;
String oper;
String [] operations = {"+", "-", "*", "/"};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
Button calculate = (Button) findViewById(R.id.calculate);
tv = (TextView) findViewById(R.id.result);
operatorPlus = (Button) findViewById(R.id.operatorPlus);
operatorMinus= (Button) findViewById(R.id.operatorMinus);
operatorMulti= (Button) findViewById(R.id.operatorMulti);
operatorDivide= (Button) findViewById(R.id.operatorDivide);
operView = (TextView) findViewById(R.id.operator);
operatorPlus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
oper = "+";
operView.setText("+");
}
});
operatorMinus.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
oper = "-";
operView.setText("-");
}
});
operatorMulti.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
oper = "*";
operView.setText("*");
}
});
operatorDivide.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
oper = "/";
operView.setText("/");
}
});
calculate.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try{
EditText leftBox = (EditText) findViewById(R.id.leftBox);
EditText rightBox = (EditText) findViewById(R.id.rightBox);
String leftValue = leftBox.getText().toString();
String rightValue = rightBox.getText().toString();
String operator = oper;
double result = calculate(leftValue, rightValue, operator);
tv.setText(String.valueOf(result));
}catch(Exception e){
tv.setText("Incorrect String");
}
}
});
}
public double calculate(String leftValue, String rightValue, String operator) throws Exception{
double result = 0;
int operIndex = 99;
// operation 검사
for(int i = 0 ; i < operations.length ; i++){
if(operations[i].equals(operator)){
operIndex = i;
break;
}
}
if(operIndex == 99)
throw new Exception();
double leftV = Double.parseDouble(leftValue);
double rightV = Double.parseDouble(rightValue);
if(operator.equals("+")){
result = leftV + rightV;
}else if(operator.equals("-")){
result = leftV - rightV;
}else if(operator.equals("*")){
result = leftV * rightV;
}else if(operator.equals("/")){
result = leftV / rightV;
}
return result;
}
}
---------------------------------------------------------------------------------------------------
이게 끝...
생각보다 간단히 만들었다...간만에 오류 없이 컴파일까지 되더라..
역시 JAVA는 깊게 들어갈 수록 어렵지만...초반엔 적응하기 싶더라...
일단 여기까지 하면 R.java는 자동으로 생성이 될 것이고 ...실행을 해봤더니..ㅡ.ㅡ
계산기 실행화면.. 단순하다 ㅡ.ㅡ
에게 줄맞춤도 그렇고.. 디자인은 진짜 허접하다 흐흐흐
이래도 사칙연산을 실행해보면 아래와 같이 잘 되는군..후훗
에혀.. 다시봐도 맘에 안드는게.. 역시 UI는 이뻐야 된다는 거..
layout 관련 API좀 더 자세히 봐야겠다..
담에는 내 핸폰에 있는 PGM UI 똑같이 만드는거 연습좀 하자..
그럼 끝.