일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- android ar 개발
- 객체
- rxjava hot observable
- 안드로이드 레트로핏 사용법
- 클래스
- 안드로이드 유닛 테스트 예시
- android retrofit login
- 안드로이드 os 구조
- 2022 플러터 안드로이드 스튜디오
- 스택 자바 코드
- 멤버변수
- rxjava disposable
- 큐 자바 코드
- 스택 큐 차이
- 안드로이드 라이선스
- 안드로이드 라이선스 종류
- Rxjava Observable
- 자바 다형성
- jvm 작동 원리
- ANR이란
- 안드로이드 유닛 테스트
- 안드로이드 유닛테스트란
- 서비스 vs 쓰레드
- rxjava cold observable
- 서비스 쓰레드 차이
- 플러터 설치 2022
- ar vr 차이
- jvm이란
- 2022 플러터 설치
- 안드로이드 레트로핏 crud
- Today
- Total
목록Android (341)
나만을 위한 블로그
갤럭시 폴드 기기는 접거나 펼친 채로 사용할 수 있다. 이 말은 폴더블 기기가 펼쳐졌는지 아닌지를 구분해야 하는 경우도 생길 수 있단 뜻이다. 이 포스팅의 예시 코드는 아래 코드랩을 바탕으로 구현했다. https://developer.android.com/codelabs/android-window-manager-dual-screen-foldables?hl=ko#0 Jetpack WindowManager로 폴더블 및 듀얼 화면 기기 지원 | Android Developers Jetpack WindowManager 라이브러리를 사용하여 폴더블 기기 및 듀얼 화면 기기와 같은 새로운 폼 팩터에 맞게 앱을 조정하는 방법을 알아보세요. developer.android.com 위 코드랩에서 폴더블 기기를 펼쳤는지 ..
이전 포스팅에서 캐시에 대해 확인했다. https://onlyfor-me-blog.tistory.com/825 캐시란? 웹뷰를 사용하다 보면 캐시라는 말을 자주 듣는다. 프론트엔드 개발자가 존재한다면 캐시라는 키워드를 더 자주 들을 수 있다. 그런데 도대체 캐시란 게 뭘까? 캐시라는 개념은 안드로이드에서 onlyfor-me-blog.tistory.com 이제 안드로이드 웹뷰에서 캐시 전략을 어떻게 설정하는지 확인한다. 먼저 간단한 기본 코드를 준비한다. class WebViewCacheActivity : BaseActivity(R.layout.activity_web_view_cache) { override fun onCreate(savedInstanceState: Bundle?) { super.onCre..
예전에 자바로 안드로이드 리사이클러뷰의 UI test를 작성하는 예시를 포스팅한 적이 있다. https://onlyfor-me-blog.tistory.com/446 [Android] espresso를 사용한 UI 테스트(+리사이클러뷰) 이전 글들에선 순수 자바 로직만 테스트했다면 이젠 UI도 테스트해야 한다. UI를 테스트할 때는 주로 에스프레소라는 라이브러리를 사용하는데, 부분적으로 hamcrest라는 단위 테스트 라이브러리 onlyfor-me-blog.tistory.com 이번엔 코틀린으로 리사이클러뷰 UI test를 작성하는 예시를 정리한다. 먼저 아래 라이브러리를 추가해야 한다. 리사이클러뷰 UI test에 필요한 클래스가 이 라이브러리를 추가해야 사용할 수 있기 때문이다. androidTestI..
바텀 시트에서 사진, 영상을 선택하는 기능을 구현해야 한다면 파일 선택 라이브러리로 TedBottomPicker를 사용할 수 있다. 그러나 UI test를 작성해야 한다면 어떻게 테스트 케이스를 작성해야 할지 애매하다. 그러나 TedBottomPicker도 결국 리사이클러뷰를 사용하기 때문에 에스프레소를 통해 리사이클러뷰의 id에 접근할 수 있고, 이 뜻은 클릭과 스크롤 테스트도 가능하다는 뜻이다. 이 포스팅에서 어떻게 작성하는지 확인해 본다. 먼저 아래의 라이브러리를 앱 수준 gradle에 추가해야 한다. androidTestImplementation "androidx.test.espresso:espresso-contrib:3.2.0" 최신 버전은 아니기 때문에 작동하는 걸 확인했다면 적당히 버전을 변..
https://onlyfor-me-blog.tistory.com/490 [Android] CameraX 코드랩 뜯어보기 - 1 - 카메라는 내게 많이 생소한 영역이기도 하고 예전에 CameraX인지 뭔지가 새로 나왔다고 들었어서 최근에 코드랩을 따라 쳐보고 공부하긴 했었는데, 블로그에 남겨두면 나중에 찾아보기 더 좋을 onlyfor-me-blog.tistory.com https://onlyfor-me-blog.tistory.com/714 [Android] CameraX 코드랩 뜯어보기 - 2 - https://onlyfor-me-blog.tistory.com/490 [Android] CameraX 코드랩 뜯어보기 - 1 - 카메라는 내게 많이 생소한 영역이기도 하고 예전에 CameraX인지 뭔지가 새로 ..
BottomNavigationView를 적용했는데, 탭을 선택하면 위의 사진과 같은 선택 효과가 나타났다. 거슬려서 없애려고 이것저것 시도하다가 방법을 찾아서 포스팅한다. styles.xml 파일에 아래 내용만 추가하면 된다. 없다면 values 폴더에 styles.xml을 만들고 추가하면 된다. 그리고 BottomNavigationView에 적용한다. 이렇게 하고 앱을 실행하면 처음에 비해 훨씬 연하게 보인다. 완전히 없애는 것은 불가능하고 그나마 이렇게 덜 신경쓰이도록 만들 수는 있다.
아래 포스팅에서 이어지는 포스팅이다. https://onlyfor-me-blog.tistory.com/794 [Android] 샌드버드 SDK v4를 사용한 1:1 채팅 기능 구현하기 ※ 이 포스팅의 코드는 예제 수준이기 때문에 실제로 사용하려면 반드시 리팩토링해서 사용하자 앱에서 채팅을 구현하려면 웹소켓, 파이어베이스 등 여러 방법이 있다. 하지만 SaaS를 사용해 채 onlyfor-me-blog.tistory.com 1:1 채팅을 보낼 수 있게 됐으니 이제 상대가 나한테 채팅을 보내면 그 채팅을 푸시 알림으로 받아볼 수도 있어야 한다. 카카오톡 같은 채팅 서비스에는 대부분 기본적으로 있는 기능이다. 샌드버드 또한 이 기능을 지원하지만, 오픈 채널로 생성한 채팅방에서 보낸 알림은 받아볼 수 없고 그룹 ..
이제 얼마 뒤면 안드로이드 14가 출시된다. 현재 안드로이드 개발자들은 베타 버전을 체험해볼 수 있으며 안드로이드 14를 targetSdkVersion으로 하는 앱을 스토어에 게시할 수도 있다. 곧 새로 출시될 안드로이드 14에서는 어떤 변경사항이 있는지 간단하게 확인해 본다. 자체 백그라운드 프로세스만 종료 가능 안드로이드 14부터는 앱에서 killBackgroundProcesses()를 호출하면 해당 앱의 프로세스만 종료할 수 있게 된다. 이전까지는 다른 앱들도 덩달아 종료됐던 것 같다. 이 함수는 시스템이 해당 패키지와 관련된 모든 백그라운드 프로세스를 즉시 종료하게 하는 함수로 메모리 회수를 위해 다른 프로세스들을 종료하는 것과 비슷하다. 해당 함수를 사용하는 개발자라면 안드로이드 14부터는 로직..
웹뷰를 사용하다 보면 인텐트 스킴(scheme)을 써서 다른 앱을 실행해야 하는 경우가 있다. 그러다 매니페스트 또는 앱에 정의되지 않은 스킴이나 잘못된 스킴을 호출하면 웹뷰가 해당 스킴을 인식하지 못해 아래 화면이 표시된다. 이 에러가 발생할 경우 shouldOverrideUrlLoading()으로 받는 URL을 로그로 확인해 보면 "intent://"로 시작한다. 왜 이런 에러가 발생하는 건가? 그 이유는 안드로이드 4.4부터 웹뷰가 Chromium 기반으로 바뀌었는데, 이 과정에서 IntentURI를 지원하지 않게 되었다. 때문에 안드로이드 개발자가 URL을 처리하는 로직을 직접 구현해야 한다. 대신 아래 로직만 추가하면 웹뷰에서 결제 시 V3 백신 앱을 실행하거나 V3 앱이 설치돼 있지 않으면 스..
라이브러리를 사용할 수 없는 때가 오면 순수 로직으로 커버쳐야 할 때가 언젠가 발생할 수 있다. 라이브러리에 의존하기 쉬운 것 중 하나가 권한인데, 이 포스팅에선 라이브러리 없이 권한을 요청하고 그에 따라 텍스트뷰, 이미지뷰의 글자, 이미지를 각각 바꾸는 예제를 포스팅한다. 데이터 바인딩과 hilt, StateFlow를 사용해서 예제를 구성해 봤다. 예제에 너무 과한 스펙을 입히는 것 같긴 한데, 내 블로그에 쓰는 포스팅이니 내 맘대로 할란다. 나만을 위한 블로그니까 먼저 drawable 패키지에 allowed, not_allowed라는 이름의 아무 이미지나 추가한다. 대충 권한이 허용됐구나, 안 됐구나를 알 수 있는 간단한 드로어블이면 상관없다. 그리고 뷰모델을 간단하게 구성한다. import andr..