일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리니어 레이아웃
- edwith
- 아이폰
- 코틀린
- SceneDelegate
- 프로젝트
- 레이아웃
- 액션바
- 부스트코스
- IOS
- textview auto scroll
- 안드로이드 스튜디오
- 데이터베이스
- 스낵바
- 안드로이드
- 텍스트뷰 스크롤
- 제약 레이아웃
- 드로어블
- 텍스트뷰 자동 스크롤
- 뷰
- 수명주기
- 프로그래밍
- Swift
- 테이블_레이아웃
- 자바
- 안드로이드_프로그래밍
- 상대 레이아웃
- RecyclerView
- 서비스
- 코드리뷰
- Today
- Total
목록안드로이드 (31)
듀다의 성장개발로그
안드로이드 앱을 사용하다 보면 다른 화면으로 넘어가거나, 표시되지 않던 부분들이 표시되는 기능들을 많이 볼 수 있습니다. 앱이 두 개 이상의 화면을 사용하기 때문에 그러한 기능을 만들 수 있는 것이지요. 이제 한 가지 화면을 구성하는 것을 넘어 두 개 이상의 화면을 다루는 것도 시도해 볼 차례입니다. 하나의 화면은 '액티비티'라고 부릅니다. 안드로이드 스튜디오의 빈 프로젝트에서도 기본적으로 포함된 레이아웃과 소스 파일 이름에 'activity'가 포함되듯 안드로이드의 화면은 액티비티라고 부릅니다. 한 액티비티는 하나의 xml과 하나의 java 소스 파일이 한 쌍으로 구성됩니다. 액티비티를 만드는 과정은 강의에서 다섯 가지 단계로 소개했는데요, 우선 새로운 액티비티 만들고 -> 새로운 액티비티의 XML 레..
벌써 두번째 코드리뷰를 받았습니다. 이번에는 상당히 빨리 리뷰 결과를 받았습니다. 상세결과는 위와 같이 나왔습니다. 간결하다는 평이 있군요. 간결하게 하려고 고민을 좀 했는데 프로그램 상에서 티가 났나 봅니다. 작은 부분에 대해서도 칭찬의 코멘트를 남겨 준 것이 감동적이었습니다. 또, 강의만으로는 알 수 없는 이런 부분들을 놓치지 않고 피드백해주신게 정말 고마웠습니다. 누군가 옆에서 알려주면 금방 알 수 있는 부분이라 코드리뷰가 꼭 필요했다고 생각합니다. 레이아웃에 대해서도, 혼자 연습했으면 그냥 넘어갔을지도 모르는 부분들에 대해서 피드백을 받았습니다. 혼자서만 연습했으면 모르고 넘어갔을 것이 분명한 부분들이라 정말 고맙게 느껴지네요. 한 줄 한 줄 얼마나 꼼꼼히 검토하셨는지 알 수 있는 부분이었습니다...
안녕하세요 오늘은 부분 화면으로 사용하기 좋은 리스트뷰에 대해서 이야기하겠습니다. 리스트뷰는 안의 아이템들을 일렬로 나열하고, 하나를 선택할 수 있는 위젯입니다. 리스트뷰처럼 여러 아이템을 다루며 그 중 하나를 선택하는 위젯을 '선택 위젯'이라고 하는데요, 이 선택 위젯은 다른 위젯과 다르게, '어댑터'라는 것이 존재하며, 뷰가 아닌 어댑터가 데이터를 관리합니다. 또한, 어댑터가 각각의 아이템으로 보여줄 뷰까지 생성시킵니다. 어댑터가 데이터도 관리하고 뷰도 관리하는 것이지요. 스피너는 프로그램에서 많이 보셨을 바로 그것입니다. 위 그림처럼 선택할 수 있는 목록을 보여주고 선택한 것을 표시하는 것인데요, 이것을 안드로이드에서는 '스피너'라는 이름으로 표현합니다. 스피너도 목록 중에서 하나를 선택하는 것이니..
오늘은 좀더 이론적인 내용을 다뤄보도록 하겠습니다. 인플레이션이라는 개념입니다. 하나의 액티비티는 레이아웃 파일(xml)과 소스 코드 파일(java)로 구성되는데요, 두 개의 파일이 쌍으로 이루어집니다. 그런데 이 파일들의 내용을 자세히 보면, 화면 레이아웃 상에 어떤 위젯이 존재한다고 하더라도 xml파일에 그 위젯의 정보만 있을 뿐, 생성해주는 코드는 존재하지 않는 경우가 있습니다. 화면에 표시된다는 건 객체화되어 메모리 어딘가에 올라가있다는 것인데 그러면 이 위젯은 누가, 언제 생성하여 메모리에 할당시킬까요? 레이아웃에 추가된 버튼을 객체화하여 메모리 공간을 할당하는 것은 시스템의 역할입니다. 이 과정을 바로 인플레이션이라고 하는데요, MainActivity.java 파일에 기본으로 존재하는 이 se..
앱을 구성하다 보면 메시지가 잠시 떴다 사라지게 하는 기능이 필요할 때가 있을 것입니다. 여러분이 사용하시는 앱에서도 이 기능을 많이 보셨을겁니다. 물론 안드로이드 스튜디오로 이런 기능을 만들 수 있습니다. 음식과 연관짓는 것을 좋아하는 안드로이드답게 이 기능을 '토스트'라고 부릅니다. 토스트를 추가하는 것은 매우 간단합니다. 메소드 Toast.makeText를 호출합니다. 그리고 그 안에 적절한 인자를 넣고 .show()를 붙여주기만 하면 끝. 지정된 시점에서 메시지가 출력됩니다. 인자로는 Context, 내용, 토스트 길이가 들어갑니다. 그럼 조금씩 바꿔볼까요? 출력 위치를 바꿀 때는 setGravity를 활용할 수 있습니다. 그런데 setGravity를 사용하기도 전에 메시지가 출력되어서는 안되겠죠..
오늘 포스팅의 주제는 이벤트입니다. 화면 클릭, 버튼 터치 등, 앱에서 발생하는 특정한 행동을 이벤트라고 하는데요, 버튼을 클릭하는 것을 이벤트로 전달하면 이벤트를 감지하는 ‘이벤트 리스너’가 그것을 감지합니다. 예를 들면 터치 이벤트는 터치 리스너를 통해서, 키 이벤트는 키 리스너를 통해서 감지하죠. 이벤트 리스너가 어떤 메소드를 호출하게 만든다면 특정 이벤트가 발생했을 때 특정한 동작이 실행되게 만들 수 있습니다. 그러려면 다음 세가지가 필요합니다. 1. 이벤트 리스너가 있어야 하고, 2. 이벤트 리스너가 어떤 동작을 감지할지(어디서 발생하는 동작을 감지할지) 정해져 있어야 하며, 3. 이벤트가 발생하면 메소드가 호출되게 해야 합니다. ‘리스너가 있다.’라는 것은 (이 앱에서) 특정 이벤트에 대해 등..
오늘부터 2주차 포스팅을 시작합니다. 더 발전하는 모습 보여드리고 싶네요^^ 이번 포스팅의 주제는 테이블 레이아웃인데요, 엑셀에서 '테이블'이라는 단어를 보신 적이 있으실 겁니다. 우리말로 '표'라는 뜻이지요. 마찬가지로 테이블 레이아웃은 Table, 말 그대로 뷰가 표에 들어간 것처럼 배치시키는 레이아웃입니다. 표는 행(Row)과 열(Column)이 필요합니다. 이 테이블 레이아웃도 마찬가지입니다. 태그를 통해서 행을 추가할 수 있고, 그 안에 들어간 뷰들이 해당 행에서 1칸씩 차지합니다. 처음부터 열의 개수를 지정해주지는 않습니다만 stretchColumns라는 코드가 있습니다. 이 코드는 stretchColumns 안에 들어간 열에 대해서, 남는 공간을 할당해주는 코드입니다. 아래 그림을 보시겠습니..
부스트코스는 온라인 강좌 뿐만 아니라 프로젝트까지 함께 진행하는 과정입니다. 독특한 점은 매번 '코드 리뷰'를 받을 수 있다는 점이지요. 보통 온라인 강좌는 연습을 하려고 해도 교재에 나오는 예제를 혼자 해결하는 정도에 그치거나, 질의응답 시스템이 있다고 해도 활성화되어있지 않아 접근성이 떨어지는 것이 사실입니다. 그런데 부스트코스는 제출하기만 하면 매주 피드백을 받을 수 있어요. 과정 중 진행하는 프로젝트에 대해서, 현업 2-3년차 이상의 경력을 가진 전문가에게 코드 단위로 피드백을 받을 수 있습니다. 학교에서도 교수님을 직접 찾아가지 않는 이상은 이 정도로 피드백을 받기 어려운데 말이죠. 저도 첫번째 프로젝트에 대해서 피드백을 받았습니다. 총 평은 위와 같이 남겨주셨네요. 아직 많이 부족한 저지만 칭..