일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 안드로이드_프로그래밍
- 아이폰
- 뷰
- SceneDelegate
- 레이아웃
- 프로그래밍
- 제약 레이아웃
- 수명주기
- 안드로이드
- 스낵바
- 상대 레이아웃
- 액션바
- edwith
- 서비스
- 텍스트뷰 스크롤
- 텍스트뷰 자동 스크롤
- 데이터베이스
- IOS
- 부스트코스
- 프로젝트
- 안드로이드 스튜디오
- textview auto scroll
- 드로어블
- 코틀린
- 리니어 레이아웃
- RecyclerView
- Swift
- 자바
- 코드리뷰
- 테이블_레이아웃
- Today
- Total
목록안드로이드/부스트코스 (33)
듀다의 성장개발로그
이제 화면 레이아웃을 구성하는 것을 넘어서 서버와 통신하는 앱을 만들어 볼 차례입니다. '서버와 통신' 이라고 하면 거창하게 들릴 수 있지만 그렇게 복잡한 개념이 아닙니다. 컴퓨터가(스마트폰이) 인터넷과 연결되어 있다면 그 사이에 데이터를 보내주는 기능이 필요할 것입니다. 이 기능을 수행하는 것이 바로 서버입니다. 서버에 데이터를 요청하는 것은 '클라이언트'의 역할이며, 이렇게 클라이언트가 요청하고 서버가 응답하는 것을 2-tier C/S모델이라고 합니다. 이 포스팅에서도 클라이언트 소켓과 서버 소켓으로 2-tier C/S모델을 구현해보겠습니다. 화면 레이아웃은 "클라이언트 시작"이라는 버튼 하나만 있는 것으로 구성하고 이너 클래스로 스레드를 하나 정의하겠습니다. 네트워킹을 사용할 때는 반드시 스레드를 ..
스레드는 무언가를 동시에 실행하기 위해서 생성하는 새로운 실행단위입니다. 앱의 기능을 구현하려면 어떤 기능을 동시에 실행시켜야 하는 경우가 있습니다. 예를 들면 슈팅게임을 만든다고 할 때, 화면에는 비행기가 여러 대인데 한 번에 한 대씩만 움직인다고 하면 재미가 없겠죠? 이 경우 스레드를 활용해서 동시에 움직이는 비행기를 구현할 수 있습니다. 이 포스팅에서는 안드로이드 스튜디오에서 스레드를 만들어 보고, 간단한 활용까지 해보도록 하겠습니다. Thread 만들기 두 개의 버튼과 하나의 텍스트뷰를 가진 화면을 구성하여 '스레드 시작'을 클릭하면 스레드가 시작되고, '진행값 확인'을 클릭하면 스레드를 시작시킨지 몇 초가 지났는지 '진행값'부분에서 보여주는 앱을 만들어보겠습니다. 화면 구성은 그림과 같이 해 주..
어느덧 프로젝트 C까지 리뷰를 받았습니다. 이번에는 피드백의 분량이 조금 많군요. 뒤로가기 키를 눌렀을때의 동작을 설정하는 부분에서, onKeyDown 대신 onBackPressed를 사용하는 것이 좋다는 피드백을 받았습니다. enum을 안 쓰고 있어서 잊고 있었는데 이것도 잘 활용해야겠다는 생각이 드네요. 앞으로는 요청값을 상수로 저장하면 가독성을 높일 수 있을 것 같습니다. 이 부분은 사실 배우지 않은 부분이지만 꼭 알아야 할 중요한 부분이라는 생각이 드네요. 인텐트로 가능한 부분과 불가능한 부분을 명확히 인지할 필요가 있다는 생각이 듭니다. 이 부분은 제가 질문한 부분이지만 이 피드백을 보니까 좀더 다른 방향으로 생각해보았어야 한다는 생각이 드네요. 분명히 이 문제를 인지하고 있었고, 해결 방법도 ..
액션바는 여러 기능을 수행할 수 있는 아이콘들을 화면 상단에 담고 있는 부분입니다. 자주 쓰는 기능을 버튼으로 만들어 화면 상단에 모아놓으면 사용하기에도 편리하고 화면 구성도 효율적으로 할 수 있겠죠? 화면 상단에 버튼들을 추가하는 방법에는 여러 가지가 있습니다. 그 중 액션바를 추가하는 방법에 대해 알아보겠습니다. 아래의 그림에 새로고침, 검색, 설정 등의 아이콘이 보이실 겁니다. 이런 액션바를 추가하는 것은 레이아웃에서 이루어지는데요, 액션바를 위한 레이아웃 파일을 새로 만들어주어야 합니다. 메뉴 리소스 파일을 정의하기 위해, 메뉴 폴더를 새로 생성한 뒤 레이아웃을 만들었습니다. 메뉴 디렉토리는 res 디렉토리에서 new - directory를 클릭하면 출력되는 위의 팝업에 새 디렉토리 이름를 입력하..
안녕하세요. 오늘은 프래그먼트 만들기에 대해서 이야기해보도록 하겠습니다. 프래그먼트란 하나의 화면에 여러 부분화면이 들어가 있는 것입니다. 각각의 부분화면은 부분화면이지만 독립적인 화면입니다. 독립적인 화면이라는 점에서 액티비티와 유사하게 느껴질 있습니다. 실제로 액티비티와 공통점을 갖는, 비슷한 용도를 가진 기능입니다. 액티비티가 액티비티 매니저에 요청해서 다른 액티비티를 띄우듯, 프래그먼트도 다른 프래그먼트를 직접 띄울 수 없고, 프래그먼트 매니저에 필요한 기능을 요청해야 합니다. 또, 프래그먼트도 하나의 레이아웃과 하나의 소스 파일로 이루어져 있다는 것도 액티비티와의 공통점입니다. 액티비티를 이용해서 만들어진 화면과의 차이점도 존재합니다. 프래그먼트는 하나의 액티비티 안에서 존재하므로 인텐트를 사용..
오늘 다룰 내용은 브로드캐스트 수신자인데요, 애플리케이션 구성 요소중에 하나였던 브로드캐스트 수신자 기억하시나요? 네 맞습니다. 브로트캐스트도 애플리케이션 구성 요소 중 하나이지요. 관련 포스팅을 하나씩 채워가는 것을 보니 뿌듯하군요. 브로드캐스트 수신자란 말 그대로 브로드캐스트를 수신할 수 있는 객체입니다. 여러 사람에게 한꺼번에 데이터를 뿌려주는 것을 브로드캐스트라고 하는데요, 이것을 받을 수 있는 객체가 바로 '브로드캐스트 리시버(브로드캐스트 수신자)'입니다. 즉, 브로드캐스트 수신자란 뿌려진 데이터를 받을 수 있는 것을 말하는 것이지요. 따라서 브로드캐스트를 등록해놓아야 브로드캐스트를 받을 수 있습니다. 브로드캐스트 리시버도 화면이 없고, 시스템이 관리하는 것입니다. 브로드캐스트 객체를 이용해서 ..
지난번에 액티비티에 대해서 포스팅을 했었는데요, 액티비티에는 실행부터 종료시까지 순차적으로 실행하는 메소드가 있습니다. 이것을 바로 '수명주기 메소드'라고 부릅니다. 수명주기 메소드에는 이미 익숙한 이름인 onCreate()에서부터 onStart, onStop, onDestroy, onPause, onResume등이 존재합니다. 왜 수명주기 메소드가 필요할까요? 액티비티의 상태를 나타내기 위함입니다, 액티비티는 여러 개가 실행되어 있으면 액티비티 스택에 쌓이게 됩니다. 그 안에서 어떤 것이 실행중이거나 중지된 것인지 구분할 필요가 있겠죠? 액티비티의 대표적인 상태는 세 가지로, 중지(Stop), 일시 중지(Pause), 실행(Run)이 바로 그것입니다. 이 상태들은 언제 지정되는 것일까요? 이것은 마치 ..
인텐트는 액티비티의 인스턴스 객체로 시스템으로 전달되는 일종의 명령을 담고 있는 객체입니다. 시스템 안에서 데이터를 옮기는 데 필요한 객체이지요. 이 인텐트가 필요한 이유는 액티비티를 다루기 위해서인데요, 시스템에서 액티비티를 관리하기 때문에, 예를 들어 액티비티를 띄우거나 없애려고 한다면 시스템에 요청해야 합니다. 그런데 시스템에 무언가를 요청할 때는 반드시 시스템이 이해할 수 있는 포맷으로 전달해야 합니다. 바로 이 인텐트가 시스템이 이해할 수 있는 포맷이기 때문에 인텐트를 사용하는 것이지요. 인텐트는 액티비티끼리 뿐만 아니라 액티비티와 서비스도 데이터를 전달할 수 있게 하고, 브로드캐스트 수신자와도 통신할 수 있게 합니다. 인텐트에는 명시적 인텐트와 암시적 인텐트가 존재합니다. 명시적 인텐트는 액티..