본문 바로가기
안드로이드

[안드로이드] 온도변환기 앱

by 호아나트 2019. 10. 12.
반응형

<xml>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
   	//뷰의 여백을 16dp로 설정
    android:layout_marginStart="16dp"
    android:layout_marginLeft="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginBottom="16dp"
    //위젯의 위치에 대한 기준은 부모 뷰로 정함
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">
    <EditText
        android:id="@+id/editText1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"	//위치를 위쪽의 왼쪽에 맞춤
        android:layout_alignParentTop="true"/>
    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"  //위치를 왼쪽에 맞춤
        android:layout_below="@+id/editText1"
        >
        <RadioButton
            android:id="@+id/celsius"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true" //체크가 되어있는 상태로 보이게함
            android:text="섭씨" />
        <RadioButton
            android:id="@+id/fahrenheit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="화씨" />
    </RadioGroup>
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/radioGroup1"
        android:layout_below="@+id/radioGroup1"
        android:text="변환"
        android:onClick="onClicked"	//이벤트 추가
        />
</RelativeLayout>

<MainActivity.java>

package com.example.a5_homework4;
import androidx.appcompat.app.AppCompatActivity;
import android.net.wifi.p2p.WifiP2pManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity{
private EditText text;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text=(EditText)findViewById(R.id.editText1);
    }
    public void onClicked(View view){	//클릭 이벤트 발생시
        switch(view.getId())
        {
            case R.id.button1:
                RadioButton celsiusButton=(RadioButton) findViewById(R.id.celsius);
                RadioButton fahrenheitButton = (RadioButton)findViewById(R.id.fahrenheit);
                //텍스트에 글자가 없으면 Toast 출력
                if(text.getText().length()==0){
                    Toast.makeText(this,"정확한 값을 입력하시오",Toast.LENGTH_LONG).show();
                    return;
                }
                float inputValue = Float.parseFloat(text.getText().toString());
                //섭씨버튼 체크시 
                if (celsiusButton.isChecked()){
                    text.setText(String.valueOf(convertCelsiusToFahrenheit(inputValue)));
                    //텍스트는 화씨의 온도로 변환
                    celsiusButton.setChecked(false);	//섭씨버튼의 체크해제 및 화씨버튼 체크 설정
                    fahrenheitButton.setChecked(true);
                }
                else {
                    text.setText(String .valueOf((convertFahrenheitToCelsius(inputValue))));
                    //화씨온도를 섭씨온도로 전환
                    fahrenheitButton.setChecked(false); //화씨버튼 체크해제 및 섭씨버튼 체크
                    celsiusButton.setChecked(true);
                }
                break;
        }
    }
    //화씨온도 및 섭씨온도의 변환 식 메소드
    float convertFahrenheitToCelsius(float fahrenheit){
        return((fahrenheit-32)*5/9);
    }
    float convertCelsiusToFahrenheit(float celsius){
        return((celsius*9)/5)+32;
    }
}

<출력화면>

 

반응형

댓글