Xamarin: Hello Android(내 생애 첫 안드로이드 프로그래밍)

Hello, Android: Quickstart 를 보며 진행함. 미리 자마린 설치는 당연하겠죠?

clip_image001

New Project… > Visual C# > Android > Blank App(Android)

clip_image002

Solution Explorer > Resources > layout > Main.axml 을 연다

clip_image003

안드로이드 앱 만들기 준비 끝~

clip_image004

Text(Large) 를 넣고, 비밀번호를 입력해달라는 문구를 추가.

clip_image005

Text Fields > Plain Text 를 넣고, 암호문을 대충 넣는다.

clip_image006

id 속성에는 @+id/PhoneNumberText 를 입력.

clip_image007

Button을 넣고, Translate라는 텍스트를 넣는다.

clip_image008

id는 @+id/TranslateButton로 지정.

clip_image009

이번에는 TextView 컨트롤 추가.

clip_image010

적절한 위치에 배치하고, id는 @+id/TranslatedPhoneWord 로, text는 비워 놓는다.

clip_image011

Solution Explorer > Add > New Item… 프로젝트에서 새 항목 추가

clip_image012

Code File 추가. 이름은 PhoneTranslator.cs로 한다

using System.Text;
using System;
namespace Core
{
    public static class PhoneTranslator
    {
        public static string ToNumber(string raw)
        {
            if (string.IsNullOrWhiteSpace(raw))
                return "";
            else raw = raw.ToUpperInvariant();

            var newNumber = new StringBuilder();
            foreach (var c in raw)
            {
                if(" -0123456789".Contains(c))
                {
                    newNumber.Append(c);
                }
                else
                {
                    var result = TranslateToNumber(c);
                    if (result != null)
                        newNumber.Append(result);
                }
                // otherwise we've skipped a non-numeric char
            }
            return newNumber.ToString();
        }
        static bool Contains(this string keyString, char c)
        {
            return keyString.IndexOf(c) >= 0;
        }
        static int? TranslateToNumber(char c)
        {
            if ("ABC".Contains(c)) return 2;
            else if ("DEF".Contains(c)) return 3;
            else if ("GHI".Contains(c)) return 4;
            else if ("JKL".Contains(c)) return 5;
            else if ("MNO".Contains(c)) return 6;
            else if ("PQRS".Contains(c)) return 7;
            else if ("TUV".Contains(c)) return 8;
            else if ("WXYZ".Contains(c)) return 9;
            return null;
        }
    }
}

PhoneTranslator.cs의 파일 내용을 넣어주자.

clip_image013

이번에는 MainActivity.cs를 편집해서 기존 코드 밑에 내용을 넣는다.

            // Get our UI controls from the loaded layout
            EditText phoneNumberText = FindViewById<EditText>(Resource.Id.PhoneNumberText);
            TextView translatedPhoneWord = FindViewById<TextView>(Resource.Id.TranslatedPhoneWord);
            Button translateButton = FindViewById<Button>(Resource.Id.TranslateButton);

            // Add code to translate number
            translateButton.Click += (sender, e) =>
            {
                // Translate user’s alphanumeric phone number to numeric
                string translatedNumber = Core.PhoneTranslator.ToNumber(phoneNumberText.Text);
                if (string.IsNullOrWhiteSpace(translatedNumber))
                {
                    translatedPhoneWord.Text = string.Empty;
                }
                else
                {
                    translatedPhoneWord.Text = translatedNumber;
                }
            };

clip_image014

실행. (ARM 버전으로 수행하니 엄청 느렸다. 반드시 Android_Accelerated_Nougat으로 실행할 것!

clip_image015

오!! 첫 안드로이드 프로그램 실행 성공.

———— 실행이 안된다면? 느리다면? ———-

clip_image016

Android > Android SDK Manager

clip_image017

install packages… 필요한 Android SDK를 내려받아 설치하세요.

clip_image018

Intel® Hardware Accelerated Execution Manager 6.2.1 (HAXM) 을 설치. (설치 링크는 여기)

설치하고 나서 Android_Accelerated_Nougat(Android 7.1 – API 25)를 실행하니 겁나 빨라짐.

이것도 살펴보세요!

WSL 개발 환경 설정

WSL로 개발 환경 설정하는 법 https://learn.microsoft.com/ko-kr/windows/wsl/setup/environment 1. 아래 명령으로 WSL을 설치하고, 리눅스 사용자 이름과 암호 …

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다