일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 한달독서
- 리얼하다
- 소프시스 밤부 좌식 엑슬 테이블
- 1일1커밋
- 소프시스
- 브런치작가되기
- 목적중심리더십
- 슬기로운 온라인 게임
- 베드트레이
- 베드테이블
- 아비투스
- 한달어스
- 한단어의힘
- 캐치마인드
- 한달브런치북만들기
- 어떻게 나답게 살 것인가
- 테트리스
- 프래그먼트
- 자취필수템
- 북한살둘레길
- 안드로이드
- 좌식테이블
- T자형인재
- 재택근무
- 끝말잇기
- 목적 중심 리더십
- 지지않는다는말
- 함수형 프로그래밍
- 면접
- 커스텀린트
- Today
- Total
목록분류 전체보기 (351)
정상에서 IT를 외치다
안녕하세요. 블랙진입니다. ViewPager2에서 사용할 수 있는 초 간단한 CustomBottomNavView 예제 코드입니다. 0. CustomView 생성 - @JvmOverloads 를 추가하면 코틀린 컴파일러가 자동으로 오버로딩한 자바 메소드를 추가 해준다.- xml 상에서 자식 뷰를 생성했을 때 자식 뷰 만큼 네비게이션이 만들어 집니다.- 자식뷰에서 설정한 style의 isSelected 여부에 따라 네비게이션의 뷰가 변경됩니다. class BottomNavView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : LinearLayout(context, attrs, ..
안녕하세요. 블랙진입니다. 이번 시간에는 안드로이드에서 많이 사용하는 머티리얼 디자인 중 하나인 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..
안녕하세요. 블랙진입니다. 3월 30일부터 8월 24일 약 5개월의 기간동안 매쉬업 7기 안드로이드 팀원으로 활동 수 있었습니다. 약 5개월의 기간동안 생각했던 것 보다 많은 걸 얻어 갈 수 있었는데요. 그렇게 매쉬업을 하면서 느끼고 배웠던 것에 대해 회고하는 시간을 가져보고자 합니다. Mash-Up이란? Mash-Up은 개발, 디자인에 관심과 열정이 있는 사람들이 모인 단체로 Design, Android, iOS, Backend, Web 총 5개의 팀으로 구성되어 있습니다. 매주 팀별 스터디 진행과 함께 짝수 주에는 전체모임의 세미나 및 네트워킹을 진행하고 있으며, 이를 통하여 개인의 전문역량과 협업능력을 증대시키고자 합니다. 궁극적으로 Mash-Up은 활동 기간동안 프로젝트 팀을 이뤄 서비스를 출시하..