일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 소프시스 밤부 좌식 엑슬 테이블
- 테트리스
- 한달브런치북만들기
- 아비투스
- 함수형 프로그래밍
- 소프시스
- 끝말잇기
- 목적 중심 리더십
- 브런치작가되기
- 프래그먼트
- 한단어의힘
- 목적중심리더십
- 한달독서
- 베드트레이
- 1일1커밋
- 캐치마인드
- 북한살둘레길
- 어떻게 나답게 살 것인가
- 지지않는다는말
- T자형인재
- 면접
- 좌식테이블
- 베드테이블
- 안드로이드
- 한달어스
- 재택근무
- 자취필수템
- 리얼하다
- 커스텀린트
- 슬기로운 온라인 게임
- Today
- Total
목록안드로이드 (164)
정상에서 IT를 외치다
안녕하세요. 블랙진입니다. 이번 시간에는 안드로이드에서 많이 사용하는 머티리얼 디자인 중 하나인 bottom sheets 에 대해서 알아보겠습니다. 구성 bottom sheets는 다음과 같은 3가지로 구성되어 있습니다. 1. Standard bottom sheets 화면 하단에 보여주는 bottom sheets 입니다. 2. Modal bottom sheets 다이얼로그 형태의 bottom sheets로 아래와 같이 화면 하단에 다이얼로그 형태로 보여줍니다. 3. Expanding bottom sheets Standard bottom sheets 에서 더 나아가 일부 뷰를 미리 보여주며 스크롤을 통해 뷰를 확장할 수 있습니다. 구현 먼저 material 라이브러리를 build.gradle에 추가해 줍니..
안녕하세요. 블랙진입니다. Scoped Storage 대응에 앞서 기존 안드로이드 저장소가 어떻게 구성되어 있는지 살펴보겠습니다. 권한 가져오기저장소의 종류이미지 가져오기안드로이드 Q 대응 내부저장소 App을 설치하게 되면 앱 자신만 사용할 수 있는 공간인 내부저장소가 생깁니다. 이 저장소에는 cache, files 등의 폴더가 자동으로 생성되며 read/write 에 대해 어떠한 권한도 필요하지 않습니다. 그리고 앱이 삭제 되면 함께 제거됩니다. android:allowBackup="true" 참고) 만일 AndroidManifest에 allowBackup이 true로 설정되어 있다면(default) 앱 정보를 구글 클라우드에 저장하게 됩니다. 이렇게 되면 앱을 재설치 했을 때 클라우드에서 데이터를 복..
안녕하세요. 블랙진입니다. 지난 포스팅 안드로이드Q 주요 이슈 사항 간략 정리에 이은 포스팅입니다. 안드로이드 Q 버전부터 많은 부분을 개발자가 대응해야합니다. 필자는 대응 사항 중 저장소 정책에 관한 내용을 카메라 예제와 함께 아래 순서로 살펴보겠습니다. 권한 가져오기저장소의 종류이미지 가져오기안드로이드 Q 대응 접근 권한 가져오기 카메라에 접근하기 위해서는 권한이 필요합니다. 런타임에서 사용자에게 권한을 요청 받아야 하므로 Activity에 추가적으로 코드를 만들어 주어야 됩니다. 만일 권한을 받지 않고 카메라에 접근한다면 permission denied 에러와 함께 앱이 종료됩니다. 1. AndroidManifest 상단에 권한을 추가해 줍니다. = Build.VERSION_CODES.M) { if..
안녕하세요. 블랙진입니다. 이번 안드로이드Q 버전으로 업데이트 되면서 몇가지 이슈 사항이 생겼죠? 안드로이드 문서를 함께 보면서 어떤 이슈가 생겼는지 간단히 짚고 넘어가겠습니다. 안드로이드 Q 주요 이슈 (Top privacy changes) 1. Scoped storage ( 범위가 지정된 저장소) 외부 저장소에 관한 정책이 변경되었습니다. 링크 2. More user control over location permissions ( 더욱 강력해진 위치권한 제어 ) 앱이 포그라운드에서 동작 하는 경우에만 위치 정보를 확인할 수 있는 새로운 권한이 추가됩니다. 링크 3. Background activity starts (백그라운드에서 엑티비티 시작) 백그라운드에서 동작하는 앱은 새로운 엑티비티를 시작할 수..
안녕하세요. 블랙진입니다. 지난 포스팅에서 정의한 카페 정보를 가져오는 예제를 활용하여 SubComponent, Scope 사용법에 대해 살펴보겠습니다. SubComponent 특징 1. 그래프를 분할하여 캡슐화 합니다.2. 상위 컴포넌트를 상속하므로 하위 컴포넌트는 상위 컴포넌트의 객체에 의존할 수 있습니다.3. 하위 컴포넌트는 상위 컴포넌트와 생명주기를 다르게 가져갈 수 있습니다.4. 하위 컴포넌트는 또 다른 하위 컴포넌트를 가질 수 있습니다. (SubComponent 설명은 찰스의 블로그 내용을 그대로 가져왔습니다.) 객체 그래프 앞선 예제에서는 CoffeeMaker를 계속 새로 생성하였습니다. 여기서 CoffeeMaker와 Heater는 한 쌍으로 존재합니다. 이번 예제에서 이 둘을 같은 Comp..
안녕하세요. 블랙진입니다. 지난 포스팅에서는 커피 메이커를 만들기 위해서 펌프와 히터를 사용했습니다. 이번 예제에서는 몇가지 사항을 수정해 보겠습니다. 1. 커피메이커는 히터만 있으면 동작합니다.2. 커피를 갈때는 커피콩을 넣어주어야합니다.3. 카페 정보를 보여주는 객체가 추가됩니다. 위 정보를 가지고 하나하나 객체를 만들어 보겠습니다. 카페를 구성하는 4가지 요소 CafeInfo 카페 정보를 가지고 있는 객체입니다. public class CafeInfo { private String name; public CafeInfo(String name) { this.name = name; } public void welcome() { System.out.println("Welcome " + (name == n..
안녕하세요. 블랙진입니다. 이전부터 대거에 대한 몇가지 포스팅을 했었는데요. 이번에는 지난 포스팅들을 종합하여 step by step 형식으로 기능들을 추가해 대거에 대해 좀더 깊게 알아보고자 합니다. 이전 포스팅을 보고싶으신 분은 아래 링크를 확인해 주세요. 1. DI기본 개념과 Dagger2 사용 예제2. Dagger2 사용 예제 - 13. Dagger2 사용 예제 - 24. ContributesInjector 사용해보기 의존성 주입 의존성 주입이란 특정 객체의 인스턴스가 필요한 경우 이를 직접 생성하지 않고 외부에서 생성된 객체를 전달하는 기법입니다. 의존성 주입을 사용하면 다음과 같은 이점을 누릴 수 있습니다. 1. 객체간의 의존성이 없어져 코드 수정이 쉽다. 객체를 생성하는 모듈이 따로 존재하기..
안녕하세요. 블랙진입니다. Android 9(Pie, API 레벨 28) 이후 나온 스마트폰에서 높이 값을 가져오는 코드에 대한 필자가 겪은 이슈 내용을 포스팅 하고자 합니다. 먼저 그동안 디바이스의 높이를 가져올 때 어떤 코드를 사용해 가져오셨나요? 아마 제 포스팅에 있는 방법과 같이 아래 코드를 사용해 높이 값을 가져왔을 겁니다. Device Width, Height DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int deviceWidth = displayMetrics.widthPixels; int deviceHeight = dis..
안녕하세요. 블랙진입니다. 안드로이드 아키텍처에 관한 순차적인 포스팅을 진행하고자 합니다. 이전에 깃허브 API를 사용한 아키텍처를 포스팅 했었지만 클린아키텍처를 공부하면서 Naver API를 사용한 신규 프로젝트를 만들어 보았습니다. 기존 프로젝트가 어떻게 변화되어 가는지 과정을 함께 보면서 아키텍처를 적용하면 어떤 점이 좋아지는 지를 알아보겠습니다. CleanArchitecture 출처 : Clean Coder Blog 유사한 관심들을 레이어로 나눠 위 그림같이 배치한게 Uncle Bob이 언급한 클린아키텍처입니다. 물론 위 글은 2012년도 글이며 현대 트렌드에 맞게 변화가 있었지만 그 생각의 본질은 동일합니다. 바로 각 레이어는 안으로만 의존성을 향하고 있다. 즉 단방향 디펜던시를 가지는 구조로 ..
안녕하세요. 블랙진입니다.오늘은 안드로이드 위젯 중 기본이 되는 스피너 사용법에 대해 살펴보겠습니다. 1. 스피너란? 여러개의 값 중 1개를 선택하기 위해 사용하는 안드로이드 에서 제공해주는 기본 위젯 입니다. 2. 구현해보자 1) xml 그리기 가로 300dp 크기의 Spinner을 생성해 주었습니다. 2) 배열을 선언하자 배열을 선언하여 가져오는 두가지 방법이 있습니다. 2-1) 코드로 아이템0 ~ 아이템4 까지 5개의 배열을 선언해줍니다.val items = arrayOf("아이템0","아이템1","아이템2","아이템3","아이템4") 2-2) xml 을 이용한 방식 다음 방법은 res 폴더에서 배열을 생성하는 방법입니다. 저는 array.xml 이라는 폴더를 생성해 주었습니다 array.xml 안..