황진호

황진호

공부한걸 요약해서 기록해놓는 블로그

[Doit! 안드로이드 앱 프로그래밍] Mission4

1 분 소요

참고서적: Doit 안드로이드 앱 프로그래밍



Mission4 SMS 입력 화면 만들고 글자의 수 표시하기


  1. MS로 문자를 전송하는 화면은 위쪽에 텍스트 입력상자, 아래쪽에 ‘전송’ 과 ‘닫기’ 버튼을 수평으로 배치하도록 구성합니다.
  2. 텍스트 입력상자 바로 아래에 입력되는 글자의 바이트 수를 ‘10/80 바이트’ 와 같은 포맷으로 표시하되 우측 정렬로 하도록 하고 색상을 눈에 잘띄는 다른 색으로 설정합니다.
  3. 텍스트 입력상자에 입력되는 글자의 크기와 줄 간격을 조정하여 한 줄에 한글 8글자가 들어가도록 만들어 봅니다.
  4. ‘전송’ 버튼을 누르면 입력된 글자를 화면에 토스트로 표시하여 내용을 확인 할 수있도록 합니다.

구성요소로는 부모컨테이너는 LinearLayout 으로, 그리고 내부에 editText 와 textview 와 버튼2개를 구성한다.

처음에 입력상자를 뭐로해야하는거지? 고민하다가 textview로 구성했는데, 실행햇을때 입력받을수 있는 상자가 뜨지않았다...

그래서 구글링한 결과 editText라는걸 찾을수 있었다. 하지만 editText는 왜 팔레트에 없는지의문.. 버전이안맞아서 그런건지;;

위치들은 weight 속성값과 gravity 속성값을 통해 정렬하고 조절할수있다. 처음에, padding값을 통해서 정렬하려고 했엇는데 , 우측정렬이라는 키워드에 배웠던걸 다시 찾아보니 gravity라는 좋은 속성이 있었다. (LinearLayout part에 있다)

이렇게 xml 파일의 뼈대를 세웠으면 그다음은 java파일의 이벤트를 설정해야한다.

핵심은 버튼의 클릭유무에따른 Onclick() 메소드를 이용하는것과, EditText의 텍스트값의 변화에따른 addTextChangedListener()를 이용하면된다.

addTextChangedListener() 라는것은 텍스트의 변화에따른 이벤트를 주는 API 이다. 이녀석은 text를 받기전, 받았을때, 받은후 로 3개에 동작을 줄수있다.

받기전과 받은후는 필요없고, 받았을때 동시에 동작할 것으로, TextView에 표시되는 바이트숫자를 변화시켜야한다.

따라서 이부분에 변화된 문자열을 받아 길이를 TextView의 setText인자에 넣어 TextView의 바이트숫자를 변화시켜주면된다.

OnClick 이벤트 메소드에는 Toast.makeText().show() 를 통해 버튼이눌렷을때 editText의 Text값을 토스트메세지로 보여주면된다.

마지막으로 닫기 버튼이 눌렷을때는, finish() 를 통해 종료시켰다.

Mission4-1

버튼누르기전

Mission4-2

버튼누른후

깃허브주소

태그:

카테고리:

업데이트:

공유하기

Twitter Facebook LinkedIn

댓글남기기

참고

[Kotlin] Annotation 생성 및 활용 방법

6 분 소요

보통 어떤 기능을 만들기 위해 클래스나 인터페이스를 생성하고, 프로퍼티와 함수를 구현하고 이용합니다. 이렇게 생성된 클래스의 프로퍼티나 함수를 이용하여 캡슐화된 특정 기능을 호출 및 참조할 수 있습니다.

[Kotlin] Coroutine - 예외처리

17 분 소요

코루틴을 생성하기 위해서는 간단하게 Coroutine Builder 함수인 launch() 와 async() 를 이용하여 새로운 코루틴을 생성할 수 있습니다. 코루틴 빌더는 CoroutineScope 의 확장함수로써 기본적으로 상위 CoroutineScope 의 CoroutineC...

[Kotlin] 동시성 문제와 해결방법

10 분 소요

소프트웨어를 개발하는 데 있어서, 성능을 높이기 위해 가장 흔하게 사용할 수 있는 방법은 병렬로 실행하는 것 입니다. 병렬 실행은 하드웨어의 특성을 이용하여 성능을 높이는 가장 좋은 방법이지만, 병렬로 여러 프로세스나 스레드에서 같은 데이터를 접근하여 읽고 쓰는 과정이 수행될 때,...

[Compose] Compose Compiler

17 분 소요

최근들어 Compose 를 UI toolkit 으로 많이 사용하고 있습니다. 저 역시 마찬가지로 기존의 xml 기반의 뷰 작업들을 모두 Compose 로 migration 한 뒤로, 새로운 기능을 개발할 때 Compose 로 개발하고 있습니다. Compose 를 사용하고는 있지만...