일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- RecyclerView
- edwith
- 레이아웃
- 데이터베이스
- SceneDelegate
- 프로젝트
- 코틀린
- 텍스트뷰 자동 스크롤
- textview auto scroll
- Swift
- 상대 레이아웃
- 제약 레이아웃
- 아이폰
- 프로그래밍
- 서비스
- 뷰
- 자바
- 드로어블
- 안드로이드_프로그래밍
- 텍스트뷰 스크롤
- 테이블_레이아웃
- 수명주기
- 코드리뷰
- 안드로이드
- IOS
- 부스트코스
- 안드로이드 스튜디오
- 스낵바
- 액션바
- 리니어 레이아웃
- Today
- Total
목록프로그래밍 (26)
듀다의 성장개발로그
리사이클러뷰는 화면을 세로로 스크롤하는 방법입니다. 뷰페이저를 이용해서도 세로로 스크롤할 수 있는 화면을 만들 수 있지만 리사이클러뷰를 활용하면 더 쉽게 만들 수 있습니다. 또한 리사이클러뷰는 상하 스크롤도 지원합니다. 리사이클러뷰는 뷰가 캐시될 수 있는 방법으로, 리스트뷰 대신 뷰홀더를 사용합니다. 뷰홀더란 뷰를 담고 있는 것으로, 뷰홀더 안의 뷰는 각각의 아이템을 보여주기 위한 객체로 사용됩니다. 리사이클러뷰도 선택 위젯이기 때문에 어댑터가 필요합니다. 뷰를 인플레이션하면서 뷰홀더에 바로 넣어줄 수 있기 때문에 레이아웃 xml파일만 하나 정의를 하고 그것을 가지고 어댑터를 만들면서 바로 인플레이션 하는 방법으로 만들 수 있습니다. 그렇게 하기 위해서는 데이터를 담아놓을 객체와 xml파일이 필요합니다...
이번 포스팅에서는 앱에서 음악을 실행하는 기능을 만들어보겠습니다. 음악을 재생하려면 MediaPlayer클래스가 필요합니다. 그리고 재생할 파일의 주소가 필요합니다. 해당 주소로 URL을 지정하고, MediaPlayer 클래스의 prepare로 일부 정보를 확인 후 start를 호출하면 음악 파일이 재생됩니다. 인터넷과 연동된 앱의 경우 서버에 음악 파일을 올려놓고 재생하도록 하는 경우가 많은데요, 여기서는 샘플 음악 파일 서버에 접근하여 그 주소에 저장된 음악을 재생해보도록 하겠습니다. 재생, 일시정지, 재시작, 정지의 네 가지 기능을 구현하려고 합니다. 레이아웃은 위와 같이 버튼 4개로 구성해보겠습니다. 이 앱은 인터넷 권한을 사용합니다. AndroidManifest.xml에서 권한을 추가해주어야 합..
이번 포스팅에서는 데이터베이스 헬퍼의 사용과 인터넷 연결 상태를 확인하는 방법에 대해 다루겠습니다. 데이터베이스를 사용하는 앱을 유지 관리하다 보면 데이터베이스에 칼럼을 추가하거나 변경하는 등 데이터베이스를 업데이트 해야 하는 경우가 있을 것입니다, 테이블을 삭제하고 다시 만들면 쉽게 업데이트가 가능하겠지만 이미 해당 데이터베이스를 사용하는 사람이 많다면, 테이블을 삭제했을 때 그 유저들의 정보까지 삭제되겠죠. 테이블을 새로 만드는 대신 헬퍼 클래스를 사용할 수 있습니다. class DatabaseHelper extends SQLiteOpenHelper { public DatabaseHelper(@Nullable Context context, @Nullable String name, @Nullable S..
데이터베이스란 말 그대로 데이터가 저장된 베이스인데요, 좀 더 자세히 설명하면 데이터를 한 군데 모아서 저장해두고 필요하면 가져갈 수 있는 저장소입니다. 그 중에서도 오라클, MySQL 등 관계형 데이터베이스가 많이 사용됩니다. 관계형 데이터베이스는 테이블을 사용하는 데이터베이스입니다. 데이터를 담는 작은 통이라고 할 수 있는 이 테이블은 릴레이션(Relation)이라고도 불리는데요, 테이블을 사용하는 데이터베이스를 관계형(Relational)데이터베이스라고 부르는 이유도 바로 그것입니다. 관계형 데이터베이스는 데이터를 엑셀처럼 일목요연하게 볼 수 있다는 장점이 있습니다. 그렇지만 엑셀과는 다르게 테이블의 구조가 먼저 정의되어야 합니다. 각각의 세로줄을 정의할 때는 각각의 칼럼(열) 이름과 타입이 먼저 ..
volley 라이브러리를 이용하면 웹으로부터 데이터를 받아오는 기능을 좀 더 간결하게 구현할 수 있습니다. implementation 'com.android.volley:volley:1.1.0' volley를 사용하려면 build.gradle에서 위의 코드를 implement해주어야 합니다. public void sendImageRequest() { String url = "https://img6.yna.co.kr/etc/inner/KR/2019/05/01/AKR20190501059500005_01_i_P2.jpg"; ImageLoadTask task = new ImageLoadTask(url, imageView); task.execute(); } 간단하게 이미지를 불러오는 기능 먼저 시작해보겠습니다. ..
스레드는 무언가를 동시에 실행하기 위해서 생성하는 새로운 실행단위입니다. 앱의 기능을 구현하려면 어떤 기능을 동시에 실행시켜야 하는 경우가 있습니다. 예를 들면 슈팅게임을 만든다고 할 때, 화면에는 비행기가 여러 대인데 한 번에 한 대씩만 움직인다고 하면 재미가 없겠죠? 이 경우 스레드를 활용해서 동시에 움직이는 비행기를 구현할 수 있습니다. 이 포스팅에서는 안드로이드 스튜디오에서 스레드를 만들어 보고, 간단한 활용까지 해보도록 하겠습니다. Thread 만들기 두 개의 버튼과 하나의 텍스트뷰를 가진 화면을 구성하여 '스레드 시작'을 클릭하면 스레드가 시작되고, '진행값 확인'을 클릭하면 스레드를 시작시킨지 몇 초가 지났는지 '진행값'부분에서 보여주는 앱을 만들어보겠습니다. 화면 구성은 그림과 같이 해 주..
어느덧 프로젝트 C까지 리뷰를 받았습니다. 이번에는 피드백의 분량이 조금 많군요. 뒤로가기 키를 눌렀을때의 동작을 설정하는 부분에서, onKeyDown 대신 onBackPressed를 사용하는 것이 좋다는 피드백을 받았습니다. enum을 안 쓰고 있어서 잊고 있었는데 이것도 잘 활용해야겠다는 생각이 드네요. 앞으로는 요청값을 상수로 저장하면 가독성을 높일 수 있을 것 같습니다. 이 부분은 사실 배우지 않은 부분이지만 꼭 알아야 할 중요한 부분이라는 생각이 드네요. 인텐트로 가능한 부분과 불가능한 부분을 명확히 인지할 필요가 있다는 생각이 듭니다. 이 부분은 제가 질문한 부분이지만 이 피드백을 보니까 좀더 다른 방향으로 생각해보았어야 한다는 생각이 드네요. 분명히 이 문제를 인지하고 있었고, 해결 방법도 ..
안녕하세요. 오늘은 프래그먼트 만들기에 대해서 이야기해보도록 하겠습니다. 프래그먼트란 하나의 화면에 여러 부분화면이 들어가 있는 것입니다. 각각의 부분화면은 부분화면이지만 독립적인 화면입니다. 독립적인 화면이라는 점에서 액티비티와 유사하게 느껴질 있습니다. 실제로 액티비티와 공통점을 갖는, 비슷한 용도를 가진 기능입니다. 액티비티가 액티비티 매니저에 요청해서 다른 액티비티를 띄우듯, 프래그먼트도 다른 프래그먼트를 직접 띄울 수 없고, 프래그먼트 매니저에 필요한 기능을 요청해야 합니다. 또, 프래그먼트도 하나의 레이아웃과 하나의 소스 파일로 이루어져 있다는 것도 액티비티와의 공통점입니다. 액티비티를 이용해서 만들어진 화면과의 차이점도 존재합니다. 프래그먼트는 하나의 액티비티 안에서 존재하므로 인텐트를 사용..