Kotlin

    [Kotlin] 위젯 - RadioGroup

    [Kotlin] 위젯 - RadioGroup

    위젯 중 RadioButton위젯은 대부분 단 하나만 사용되는 경우는 드물고 사용자에게 여러 가지 선택사항을 제시할 때 그만큼 여러 개의 RadioButton이 사용되는 경우가 많습니다. 이때 RadioGroup을 사용해 서로 연관되는 RadioButton을 묶어 놓으면 그만큼 사용하기가 편해집니다. RadioGroup을 사용하기 위해 위젯을 디자인영역에 끌어다 놓으면 위와 같은 그림을 볼 수 있습니다. 이 상태에서 RadioButton을 방금 추가한 RadioGroup위에다가 끌어다 놓은 후 RadioGroup의 ID는 rdoGroup로 변경하고 그 안에 추가한 RadioButton의 ID는 각각 rdo_car, rdo_air, rdo_ship로, text는 자동차, 비행기, 배로 설정합니다. 필요한 ..

    [Kotlin] 위젯 - ImageButton

    [Kotlin] 위젯 - ImageButton

    ImageButton이 일반 Button과 다른 점은 텍스트 대신 이미지로 버튼 표시를 대신한다는 것입니다. 그래서 버튼의 백그라운드로 이미지를 설정하면 그 위에 다시 이미지를 올려둘 수 있으며 이미지 위주다 보니 사용 가능한 속성 자체가 ImageView와 비슷한 것들이 많습니다. ImageButton을 처음 사용하면 위에서 처럼 기본이미지를 선택하거나 원하는 이미지를 사용할 수도 있습니다. 만약 사용 하고자 하는 이미지가 있다면 다음과 같은 방법으로 우선 이미지를 추가해야 합니다. 우선 이미지를 Ctrl + C로 복사하고 Android Studio의 Project탐색기에서 Android -> app -> drawable 위치에 Ctrl + V로 붙여 넣기를 하면 Choose Destination Di..

    [Kotlin] 위젯 - Plain Text

    [Kotlin] 위젯 - Plain Text

    Plain Text는 주로 어떤 내용을 입력받을 때 사용하는 위젯이며 몇 가지 속성과 이벤트를 통해 사용법을 간단히 알아보고자 합니다. 우선 속성중 hint를 사용하면 사용자에게 입력받기 전에 어떤 정보를 입력해야 할지 알려줄 수 있습니다. 다만 이 속성의 설정으로 인한 변화를 보려면 text속성을 지워야 합니다. 또한 inputType을 조정하면 상황에 따라 맞는 키보드입력환경을 제공할 수 있습니다. 여러 가지 Type을 동시에 선택할 수 있지만 실제 Type을 너무 섞어놓게 되면 제대로 된 환경을 제공할 수 없습니다. 아래는 inputType을 Date로만 설정한 예입니다. Type에 따른 용도는 Date 날짜, number 숫자, Url 인터넷주소등 Type이름을 보면 거의 유추가 가능합니다. 위 ..

    [Kotlin] 위젯 - 텍스트뷰(TextView)

    [Kotlin] 위젯 - 텍스트뷰(TextView)

    화면상에 보이는 텍스트 뷰나 버튼 같은 것들을 위젯이라고 합니다. 사실 '위젯'이라는 단어는 워낙 다양한 곳에서 활용되기 때문에 혼동하기 쉬울 수 있으므로 상황에 따라 잘 이해해야 할 필요가 있습니다. 우리가 사용할 수 있는 위젯은 Android Studio에서 팔레트(Palette)에 있으며 종류에 따라 아래의 형태로 분류되어 있습니다. Common 자주 사용되는 위젯들의 모음입니다. Text 텍스트와 관련된 위젯입니다. 해당 메뉴앞에 ab라고 되어 있는것은 텍스트를 표시하기 위한 위젯이며 ab에 밑줄이 있는 위젯은 텍스트를 입력받기 위한 위젯입니다. Buttons 버튼이나 라디오, 스위치같이 클릭이나 터치이벤트를 받은 위젯입니다. Widgets 이미지나 진행상태등 화면에 표시되는 위젯입니다. Layo..

    [Kotlin] 레이아웃(Layout) - 리니어

    [Kotlin] 레이아웃(Layout) - 리니어

    리니어 레이아웃은 위젯을 가로 혹은 세로로 배치하기 위한 레이아웃입니다. 각각의 레이아웃에서는 사용가능한 설정이 상당히 많고 모든걸 다 알 수 없기 때문에 여기서는 간단히 어떤 용도로 사용한다는 정도만 알고자 합니다. 이 레이아웃을 사용하기 위해서는 기존 레이아웃을 아래와 같이 변경하거나 기존 레이아웃에 새로운 리니어 레이아웃을 추가하면 됩니다. 리니어 레이아웃은 2가지가 있는데 Horizontal은 위젯을 가로로 Vertical은 위젯을 세로로 정렬합니다. 각 방향에 대한 전환은 컴포넌트 트리의 레이아웃에서 마우스 오른쪽 버튼을 눌러 'LinearLayout -> Convert orientation to [방향]'을 선택하면 됩니다. 위젯이 배치된 상태에서 각각의 요소가 차지하는 공간비율을 변경하려면 ..

    [Kotlin] 레이아웃(Layout) - 컨스트런트

    [Kotlin] 레이아웃(Layout) - 컨스트런트

    Android Studio에서 화면 표시를 담당하는 영역이 레이아웃이며 처음 프로젝트를 생성하면 자동으로 생성되는 파일인 activity_main.xml이 바로 레이아웃 파일에 해당합니다. 참고로 Kotlin에서는 소스파일을 제외하고 모든 파일을 리소스 파일로 취급하기 때문에 파일명이 소문자로 이루어져 있습니다. 위 상태에서 레이아웃 파일을 디자인 모드로 바꿔서 보면 다음과 같은 화면을 볼 수 있습니다. 노란색 부분이 화면에 배치할 수 있는 여러가지 위젯과 위젯에 대한 속성을 지정할 수 있는 파란색 속성 창 그리고 현재 화면을 구성하기 위한 레이아웃 방식을 나타내는 붉은색의 컴포넌트 트리 창을 볼 수 있습니다. 우리는 이 레이아웃을 통해서 여러가지 위젯을 배치해 화면을 구성할 수 있는데 어떤 방식으로 화..

    [Kotlin] 제네릭(Generics)

    [Kotlin] 제네릭(Generics)

    제네릭은 데이터 타입을 자유롭게 지정할 수 있도록 해주는 형태를 말합니다. 예를 들어 좀 억지스럽지만 정수형 데이터를 받는 아래 클래스가 있다고 가정해 보겠습니다. class myCal(param1: Int, param2: Int) { var value1 = param1 var value2 = param2 fun Plus(): Int { return value1 + value2 } fun Minus(): Int { return value1 - value2 } } 위와 같이 클래스를 생성하고 나면 다음과 같이 클래스를 호출하여 원하는 동작을 수행할 수 있습니다. var mc = myCal(10, 20) Log.d("test", "결과값: ${mc.Plus()}") 그런데 클래스를 호출할 때 정수가 아닌 소..

    [Kotlin] 추상 클래스와 인터페이스

    [Kotlin] 추상 클래스와 인터페이스

    클래스라는 것을 만들어 두면 이것을 인스턴스화 하여 객체를 생성하고 객체를 통해 클래스의 기능을 이용하게 됩니다. 객체지향 언어(코틀린은 함수형언어)에서 클래스는 객체를 구체화한 것인데 이 구체화 단계가 명확하게 떨어지지 않을 때 추상 클래스를 사용하게 됩니다. 예를 들어 고양이라는 대상이 있으면 고양이를 클래스로 만들어 구체화 할 수 있고, 고래가 있으면 고래라는 클래스를 만들어 구체화할 수 있을 것입니다. 그런데 '동물'이라는 대상이 있으면 얘는 어떻게 클래스로 만들어 구체화할까요? '동물'이라는 대상은 개인지 고양이인지, 고래인지, 두더지인지.. 암튼 특정 류의 동물에 따라 구체화할 수 있는 방법이 달라집니다. 객체 자체가 명확하지 않은 셈인데 이렇게 불분명한 상태를 나타내고자 할 때 이걸 추상 클..