일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코틀린
- 유튜브
- MVVM
- error
- 스튜디오
- Android
- 에러
- Kotlin
- ADB
- coroutine
- 의존성주입
- viewpager
- GIT
- 깃헙
- 코루틴
- Github
- Gradle
- WebView
- studio
- 안드로이드스튜디오
- build
- 안스
- 안드로이드 스튜디오
- 레트로핏
- image
- dart
- 웹뷰
- 안드로이드
- Retrofit
- RecyclerView
- Today
- Total
목록안드로이드 (148)
코딩하는 일용직 노동자
#1 API 호출 및 파싱. 우선 api 호출 후 결과를 저장할 모델 클래스를 만듭니다. 포스트맨 에서 얻어낸 결과 json 을 이용해 안드로이드 스튜디오에서 DTO generator 플러그인을 이용해 편하게 만들었습니다. hits 를 MutableList 형태로 받도록 수정해줬습니다. #2 API 호출 콜백. MVVM구조에서 ViewModel은 자신을 사용하는 View를 몰라야 합니다. 안드로이드 개발문서에서도 ViewModel에 View references에 대한 참조가 없어야 한다고 강조합니다. 때문에 ViewModel에서 View로 이벤트나 결과를 전달해야 할 경우에는 View가 ViewModel을 observe하다가 상태가 변하면 그에 맞는 처리를 하게 했습니다. api 호출 후 결과를 리턴시키..
#1 홈화면 만들기 Pixabay 에서는 검색어를 통해 이미지와 동영상을 검색할 수 있습니다. api도 이미지검색api 와 동영상검색api 가 제공됩니다. 우선 레이아웃을 만드는 것부터 시작하겠습니다. res/layout 폴더에 fragment_home.xml 파일을 생성해줍니다. 홈화면 상단에는 검색어를 입력할 EditText 와 검색버튼, 그 아래 영역엔 RecyclerView 를 배치시켰습니다. 레이아웃파일에는 데이터바인딩을 이용할 수 있도록 셋팅해줬습니다. #2 데이타바인딩을 이용해 이벤트 처리. 되도록 클릭이벤트는 fragment_home.xml 파일과 HomeViewModel 파일에서 바로 처리되도록 했습니다. 데이터바인딩을 쓸때 "@{ }" 와 "@={ }" 이 있는데 "@={ }" 를 쓰면..
#1 인트로 화면과 메인화면 만들기 우선 앱이 실행되면 인트로화면을 몇초 보여준후 홈화면으로 이동하는 형태로 만들었습니다. IntroActivity 와 MainActivity 로 만들고 홈화면은 Fragment 를 포함하도록 만들었습니다. 그리고 서브화면들을 만들고 각 화면마다 별도의 ViewModel 을 만들었습니다. (일단 쓸지 안쓸지는 모르겠지만 다 만들어줬습니다.) #2 Base 클래스, MyApplication 만들기. 각 액티비티와 뷰모델이 상속받아 쓰도록 BaseActivity, BaseViewModel 클래스를 만들었습니다. Retrofit2 와 Koin 을 셋팅하기 위해서 MyApplication 클래스를 만들고 ViewModel 셋팅도 해줍니다. SharedPreference 를 편하게..
#0 최근 안드로이드 개발 트렌드 안드로이드 앱을 처음 배우고 개발할땐 디자인 패턴을 이용하지 않고 Activity 소스에 각종 이벤트와 로직 처리를 몽땅 집어넣고 작업했습니다. 그 후에 MVC, MVP 패턴으로 작업을 하는 개발자분들을 많이 볼 수 있었고, 뒤늦게 필자도 MVP 패턴을 사용 해보니 소스도 깔끔하고 유지보수 할때도 더 편리한 면이 있었습니다. 2017년 여름 구글I/O에서 구글은 AAC (Android Architecture Component)를 발표했습니다. ViewModel, LiveData, LifecycleObserver, DataBinding 등을 써서 MVVM 패턴으로 앱의 성능과 유지보수를 높일 수 있도록 했습니다. 최근에는 언어도 Java에서 Kotlin으로 많이 옮겨서 작..
# Android 10 에서 카메라 셔터음 제거하기. Android 10 부터는 기존 카메라 셔터음 제거 어플이 작동되지 않는 경우가 있다고 합니다. adb 명령어로 카메라 셔터음을 제거할 수 있습니다. 컴퓨터에 핸드폰을 연결시키고 터미널에서 windows .\adb shell settings put system csc_pref_camera_forced_shuttersound_key 0 mac adb shell settings put system csc_pref_camera_forced_shuttersound_key 0 이렇게 입력하고 아무런 메세지가 나오지 않으면 성공한 것입니다. 핸드폰이 무음이나 진동모드일때에는 카메라 셔터음이 나오지 않게 됩니다.
텍스트뷰를 html span 처럼 꾸미고 클릭 이벤트 까지 적용할 수 있습니다. # 소스 val span_click = object : ClickableSpan() { override fun onClick(textView: View) { startActivity(Intent(this@PurchaseActivity, MyPageTermsActivity::class.java).apply { putExtra("goDetail", 2) }) } } val ss = SpannableString("구매신청 시, XXX 서비스 계약약관과\n 결제에 동의하는 것으로 간주됩니다.") ss.setSpan(span_click, 8, 20, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) ss.setSpan(Un..
은행앱은 최근사용앱 화면을 보면 하얀색으로 표시됩니다. (멀티태스킹 버튼을 누르면 나오는 화면) onCreate 메소드에 아래 내용을 추가하면 됩니다. window.addFlags(WindowManager.LayoutParams.FLAG_SECURE) 만약 최근사용앱에 앱을 등록조차 안되게 하고 싶다면 manifest 파일에 activity 안에 아래 내용을 추가시켜주면 됩니다. 모든 액티비티에 다 추가해줘야 할듯합니다. android:excludeFromRecents="true" 이렇게 하면 최근앱리스트에 등록조차 되지 않습니다. 위 사진은 멀티태스킹 버튼을 누르면 보이는 최근사용한앱 화면입니다. 멀티태스킹 버튼을 누르면 보이는 앱화면이 하얀색으로 표시됩니다.
# CLEARTEXT communication to XXXX not permitted by network security policy 에러처리. 안드로이드 9.0 (Pie) 버전에서는 무조건 https 를 쓰도록 강제하기 때문에 발하는 에러이다. xml/network_security_config.xml 파일을 만들고 아래의 내용을 넣어준다. 매니페스트 파일의 어플리케이션 단에 network_security_config.xml 파일을 지정해준다.
IntentReceiver components are not allowed to register to receive intents 안드로이드 프로그래밍 시, 이와 같은 오류를 만날 가능성이 있다. 이유인즉, 리시버 안에 리시버를 등록 할 수 없다는 것이다. 해결책이 있다. 넘겨주는 context의 값을 context.getApplicationContext() 로 설정 하라. 오류가 없어질 것이다.
# BootstrapMethodError 해결. 잘 되던 프로젝트의 gradle 에서 라이브러리 버전을 싹 다 올린후 실행해보니 아래의 에러가 발생했다. java.lang.BootstrapMethodError: Exception from call site #4 bootstrap method 구글 검색을 해보니 처리 방법이 있었다. compileOptions 를 추가해주는 것인데... 아무래도 java 1.8 로 컴파일 하도록 해주는 처리인듯 하다.