일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Firebase authentication android apple login
- Supabase edge function
- 소개팅앱 만들기 stomp
- Firebase authentication android apple login setting
- stable-diffusion-webui local 네트워크에서 접속
- Spring google SMTP settings
- 로컬 서버 접속
- supabase storage public url not working
- supabase edge function deploy error
- Firebase authentication apple login 최신
- 소개팅앱 만들기 flutter
- 주 4일 근무제
- 주 4일 근무제 경험담
- Supabase edge function insert data
- 소개팅앱 만들기
- stable-diffusion-webui local 접속
- DT_TOOLCHAIN_DIR cannot be used
- no such module '__ObjC'
- Android apple login
- supabase storage feature not enabled for this tenant
- Spring boot swagger blank screen
- Android apple login 인증서 설정
- invite user for supabase project
- Stomp socket connection event
- 주 4일 근무제 log
- Stomp user connection event
- Android apple login identifier
- Spring LocalDateTime response array
- supabase edge function deploy error supabaseurl is required
- Firebase authentication apple login
- Today
- Total
목록공부방/Android (50)
꿀맛코딩
기존 Fabric 홈페이지를 들어가면3월 31일 이후부터 서비스 종료 가 될거라고 경고 문구가 뜹니다. Fabric is deprecated and will shut down after March 31, 2020. We've integrated the best of Fabric into Firebase to bring you one powerful platform. Migrate your apps to Firebase to use the latest features we’re building there. Learn more 기존 사용자는 Firebase Crashlytics 로 클릭 몇번으로 쉽게 마이그레이션을 사용할수 있고, 신규 프로젝트 개발자는 새로운 Fireabase Crashlytics libr..
class AuthenticateInterceptor() : Interceptor { override fun intercept(chain: Interceptor.Chain): Response { var request = chain.request() request.let { val builder = it.newBuilder() val credentials = Credentials.basic("client_id", "client_secret") builder.addHeader("Authorization", credentials) request = builder.build() } return chain.proceed(request) } } Retrofit.Builder() .client(getOkHttpCli..
여러 Fragment 를 관리해야 할때 재사용을 위해 hide 와 show 로 관리를 할때가 있다. 이때 특정 Fragment의 visible 여부에 따라 특정 액션을 하고 싶다면 Fragment에 아래와 같이 override 해서 사용하면 override fun onHiddenChanged(hidden: Boolean) { super.onHiddenChanged(hidden) if (hidden) { } else { } } 쉽게 알수 있다.
BottomNavigation 이 NestedScorll 에 의해 위아래로 움직이거나 해도 항상 BottomNavigation 바로 위에 떠있는 CustomView가 필요할때가 있다. 아래는 예시 XML 이다. 위의 XML 처럼 설정하면 굳이 Behavior Custom 클래스 없이 항상 BottomNavigation 위에 떠있는 CustomView 를 구현할수 있다. Scroll에따라 BottomNavigation 이 snap 을 해도 CustomView 는 항상 BottomNavigation 위에 떠있다. 아래가 핵심 코드이다. app:layout_insetEdge="bottom" 떠있을 대상이 되는 뷰에 위의 코드를 넣어주고 app:layout_dodgeInsetEdges="bottom" 떠있어야 ..
우리가 일반적으로 중복해서 레이아웃을 사용할때 include 를 통해 뷰를 재사용한다. 하지만 ConstaConstraintLayout 안에서 위처럼 선언하고 app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" 이런식으로 선언하면 작동을 하지않는다. 이럴때는 뷰의 넓이와 높이를 재설정 해주어야 정상 동작한다.
Stroke color : val drawable = view.background as GradientDrawable drawable.setStroke(3, ContextCompat.getColor(context, R.color.colorWhite)) // width and stroke color Solid color : val drawable = view.background as GradientDrawable drawable.setColor(ContextCompat.getColor(context, R.color.colorWhite)) // solid color resource_border.xml
프로젝트 생성 후 앱 이름을 변경하고 싶다면 어떻게 해야 할까? 먼저 string.xml 파일을 들어가보면 (파일을 쉽게 찾고 싶다면 shift를 두 번 연속 누르고 검색하면 된다.) AppName 위의 app_name 이라는 Resource 가 있을 것이다. 해당 부분을 원하는 이름으로 변경 후 AndroidManifest.xml 로 이동한다. @string/app_name 이 사용된 곳이 두 곳이 보일 것이다. 해당 부분을 변경해 주면 앱 이름이 변경된다.
Android studio 에디터 화면에서 코드를 작성하다 보면 자동으로 줄바꿈이 일어난다. 이 부분 때문에 코드가 자동으로 줄바꿈 되면서 내가 원치 않게 코드 라인이 보여지는 경우가 있다. 이 부분을 수정해 보자. Mac 기준 상단 메뉴 Android Studio Click -> Preferences -> Editer -> Code Style Hard wrap at 부분을 수정해 주면 된다. 처음 기본 값은 아마 100 으로 설정되어 있을 텐데, 자신이 원하는 수치만 큼 조절 하면 라인당 최대 길이 조절이 가능하다. Android Studio Version 3.5.3 참고 : https://stackoverflow.com/questions/30851617/how-to-set-max-line-length..
예를 들어 디버그와 릴리즈시 코드상에 분기를 태워 각각 다른 값을 사용할수도 있고, 다른 방법으로 Build.gradle(app) 에서 사용하는 방법도 있다. gradle 에 값을 추가하고 가져오는 방법에는 두가지 정도가 있는데, 한가지는 BuildConfig 에서 가져오는 방법과 res 에서 가져오는 방법이 있다. 선언 방식 android { ... buildTypes { release { // These values are defined only for the release build, which // is typically used for full builds and continuous builds. buildConfigField("String", "BUILD_TIME_01", "\"릴리즈 맞춤형 ..
Android 에서 리시버에 android:process=":remote" 를 추가 하면 별도의 프로세스에서 실행을 하게되는데, onReceive()를 동작 시키면서도 어플리케이션의 메인쓰레드를 멈추지 않게 된다. 따라서 어플리케이션은 종료 해야하는데 서비스는 계속 동작하고 싶게 만들고 싶을때 사용하면 된다. 하지만 문제는 리소스의 사용량 증가와, Singleton 및 static 변수를 별도의 프로세스에서는 접근이 불가능 하게 된다. ex) SharedPreferences 도 공유 사용이 불가능 하다. 게다가 android:process=":remote" 와 동일한 기능 구현은 다른 방법으로도 가능하므로 특별한 경우가 아니면 신중하게 사용해야 한다.