티스토리 뷰

Xamarin 계산기 앱 만들기자마린(Xamarin)으로 계산기 앱 만들기

 

1.  새프로젝트 생성 Visual C# -> Android -> Android앱(Xamarin)->이름 -> 확인

 

2. 비어 있는 앱 선택.

 

3. 솔루션 탐색기 -> Resources -> layout -> activity_main.axml 에서 다음과 같은 작업을 한다. 

 

4. 계산기 레이아웃 만들기

 

5. button_calculator 스타일 xml파일 만들기, 솔루션 탐색기->values 우클릭 ->추가->새항목->xml파일

 

6. 앱을 실행해서 레이아웃이 정상적으로 나오는지 확인한다. 

 

7. 코딩하기 그리고 빌드->솔루선 빌드->오류

 

8.심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태
오류 You need to add a reference to Mono.Android.Export.dll when you use ExportAttribute or ExportFieldAttribute. App7

참조 우클릭 -> 참조추가 -> Mono.Android.Export 추가 -> 확인 

그리고 빌드->솔루션 빌드 

-

9 전체 소스 코드

using Android.App;
using Android.OS;
using Android.Support.V7.App;
using Android.Runtime;
using Android.Widget;
using Android.Views;
using System;

namespace App7
{
    [Activity(Label = "@string/app_name", Theme = "@style/AppTheme", MainLauncher = true)]
    public class MainActivity : AppCompatActivity
    {
        private TextView calculatorText;
        private string[] numbers = new string[2];
        private string @operator;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.activity_main);

            calculatorText = FindViewById(Resource.Id.calculator_text_view);

        }

        [Java.Interop.Export("ButtonClick")]
        public void ButtonClick(View v)
        {
            Button button = (Button)v;
            if ("0123456789.".Contains(button.Text))
                AddDigitalOrDecimalPoint(button.Text);
            else if ("/x+-".Contains(button.Text))
                AddOperator(button.Text);
            else if ("=" == button.Text)
                Calculate();
            else
                Erase();


        }

        private void Erase()
        {
            numbers[0] = numbers[1] = null;
            @operator = null;
            UpdateCalculatorText();
        }

        private void Calculate(string newOperator = null)
        {
            double? result = null;
            double? first = numbers[0] == null ? null : (double?)double.Parse(numbers[0]);
            double? second = numbers[1] == null ? null : (double?)double.Parse(numbers[1]);

            switch(@operator)
            {
                case "/":
                    result = first / second;
                    break;
                case "x":
                    result = first * second;
                    break;
                case "+":
                    result = first + second;
                    break;
                case "-":
                    result = first - second;
                    break;


            }

            if(result != null)
            {
                numbers[0] = result.ToString();
                @operator = newOperator;
                numbers[1] = null;
                UpdateCalculatorText();
            }


        }

        private void AddOperator(string value)
        {
            if(numbers[1] != null)
            {
                Calculate(value);
                return;
            }
            @operator = value;
            UpdateCalculatorText();
        }

        private void AddDigitalOrDecimalPoint(string value)
        {
            int index = @operator == null ? 0 : 1;

            if (value == "." && numbers[index].Contains("."))
                return;
            numbers[index] += value;

            UpdateCalculatorText();

        }

        private void UpdateCalculatorText() => calculatorText.Text = $"{numbers[0]} {@operator} {numbers[1]}";
      
    }
}

 

10 Xamarin으로 만든 계산기 앱실행화면 

 

댓글
최근에 달린 댓글
글 보관함
«   2024/05   »
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 31
Total
Today
Yesterday
    뽀로로친구에디
    최근에 올라온 글