일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스튜디오
- 안스
- WebView
- build
- 안드로이드
- dart
- error
- 에러
- ADB
- image
- RecyclerView
- studio
- 깃헙
- 레트로핏
- 유튜브
- Retrofit
- Github
- GIT
- MVVM
- Kotlin
- viewpager
- 의존성주입
- Android
- coroutine
- 코틀린
- 코루틴
- 웹뷰
- 안드로이드 스튜디오
- Gradle
- 안드로이드스튜디오
- Today
- Total
목록전체 글 (164)
코딩하는 일용직 노동자
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/SbwS5/btqFo6NT8kP/yeIHjR9E8xfhYnh6Kenbgk/img.png)
# 들어가며 안드로이드의 애니메이션은 구현하기가 까다롭습니다. 특히 translate 애니메이션을 한 후 클릭이벤트를 확인해보면 엉뚱한 현상을 경험하게 됩니다. translate 애니메이션으로 위치를 이동시키면 이동한 곳에서 클릭이벤트가 발생하는것이 아니라, 이동하기 전 위치에서 클릭이벤트가 발생합니다. # 해결방법 1 AnimationUtils 클래스의 loadAnimation 함수를 이용해서 구현할 경우 이런현상을 경험하게 됩니다. 저의 경우 이 문제를 해결하기 위해 처음에는 똑같이 생긴 뷰를 애니메이션이 끝나는 위치에 숨겨놓았다가 애니메이션이 끝나면 원래의 뷰를 감추고 새로운 뷰를 노출하는 식으로 해결했습니다. 하지만 이 방법은 깔끔하지 못합니다. 불필요한 뷰를 하나 더 만들어야 하고, 이벤트를 받..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bWXxm1/btqFiAHCcGr/RITC2M7XoDuKKUodpkBlLK/img.png)
페이스북 SDK를 사용하기 위해 페이스북 개발자 사이트에 앱을 등록시킬때 key hash 를 입력해야 합니다. key hash 는 개발시 사용되는 디버그 keystore 로 만든 키와 실제 마켓등록용 앱에 사용될 keystore로 만든 키를 등록할 수 있습니다. 사이트에는 여러개의 키를 등록시켜도 됩니다. 안드로이드 스튜디오에서 Terminal을 열고 아래 내용을 입력합니다. keytool -exportcert -alias androiddebugkey -keystore debug.keystore | openssl sha1 -binary | openssl base64 실제 마켓등록용 앱을 만들때 사용되는 keystore 를 이용해 hash키를 만듭니다. 우선 alias 와 keystore 의 경로를 알아야..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b6fSjN/btqFe4oPirp/zlZttBP5Nr59NwKXgeQX11/img.png)
fun goEmail() { startActivity(Intent(Intent.ACTION_SEND).apply { selector = Intent(Intent.ACTION_SENDTO).apply { data = "mailto:".toUri() } putExtra(Intent.EXTRA_EMAIL, arrayOf("mail@email.com")) putExtra(Intent.EXTRA_SUBJECT, "") putExtra(Intent.EXTRA_TEXT, "") }) }
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/uuURU/btqE7QLvwGW/U4LbI1dG7B2pZntXOlyKn1/img.jpg)
안드로이드 status bar 의 컬러값을 변경하는 방법입니다. 액티비티의 onCreate 에서 처리하면 됩니다. status bar 의 컬러를 흰색으로 바꿔보겠습니다. /** * 200625 * Status Bar 를 흰색으로 처리한다. */ window.statusBarColor = Color.parseColor("#ffffff") statusBarColor 를 하얀색으로 하면 status bar 의 텍스트도 흰색이라 안보입니다. 텍스트는 검정색으로 바꾸기 위해 아래 코드를 추가합니다. window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/YIARE/btqE6jfjdTy/DtWD4ZSVvWYqxM6uYOCAt1/img.png)
이 내용은 제가 즐겨보는 유튜브 노마드 코더의 니콜라스가 말한 내용을 정리한 것입니다. (www.youtube.com/watch?v=Jz8Sx1XYb04&list=WL&index=11&t=0s) 깨끗한 코딩을 위한 팁 #1 검색이 가능한 이름을 써라. 가령 하루가 몇초인지를 나타낼때 단순히 코드상에 86400 처럼 매직넘버로 표기하지 말고 const val SECONDS_IN_A_DAY = 86400 같은 상수를 만들어 관리하자. #2 함수명은 반드시 동사로 써라. fun userData() 가 아니라 fun makeUserData(), fun loadUserData() 처럼 동사형으로 함수명을 만든다. 또한 함수는 한가지 동작만 하도록 한다. 가령 loadUserData() 는 load 만 해야하고, ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bWrdz5/btqE2tPFsI0/ZRCK0QQ7wWAvgCKb7katR0/img.png)
# 들어가며 하이브리드 앱에서 웹뷰로 열린 웹문서에 태그가 있습니다. 사진을 첨부하기 위한 기능입니다. iOS는 앱에서 별도의 처리가 없어도 사진을 선택하면 웹으로 사진이 잘 등록됩니다만, 안드로이드에서는 사진을 선택해도 웹으로 등록이 안됩니다. 이번 포스팅에서는 태그에 카메라 or 사진 갤러리를 표시하고 사진촬영이나 이미지 선택후 웹에 이미지를 넘겨주는 처리를 알려드리겠습니다. 우선 WebChromeClient() 를 상속받은 커스텀 클래스를 만들고 아래의 함수를 오버라이드 해줍니다. class CustomWebChromeClient(val activity: AppCompatActivity) : WebChromeClient() { var filePathCallbackLollipop: ValueCallb..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cn0FZA/btqEIVfaXHz/4D2YPxqDusCxbFlnhGtTR0/img.png)
안드로이드에서 A액티비티에서 B액티비티로 이동할때 데이타를 보내는 경우가 있습니다. 간단한 몇개의 변수는 putExtra로 쉽게 보내고 받을 수 있지만, 데이타 클래스 객체를 통째로 보낼경우도 있습니다. 이렇게 안드로이드에서 Intent로 데이타 클래스 객체를 보낼때 Serializable 과 Parcelable을 사용할 수 있습니다. Serializable은 java에서 사용되던 것으로 사용방법은 쉽지만 제약도 많습니다. Serializable로 데이타 클래스 객체를 보낼때는 해당 데이타 클래스에서 사용하는 다른 모든 클래스 객체들도 Serializable을 implements된 상태여야 합니다. 안드로이드에는 새로운 직렬화 방법으로 Parcelable이 있습니다. Parcelable은 원하는 객체들만..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/HF0FV/btqEGUaCWJF/0jIp6bQO8OK0KirICTd321/img.png)
외부 네트워크 연결이 차단된 곳에서 개발하는 경우가 있습니다. 이럴경우 안드로이드 스튜디오의 빌드 셋팅을 오프라인 상태로 설정해야 합니다. 기존에는 아래의 경로에서 Offline work 를 체크해서 사용하면 됐습니다. 하지만 안드로이드 스튜디오 3.6 에서는 offline work 체크박스가 사라졌습니다. 당황하지 말고 다시 찾아보겠습니다. 해당 기능이 다른 곳으로 옮겨졌습니다. View > Tool Windows > Gradle Toggle Offline Mode 를 눌러 활성화 시키면 됩니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bYTzn9/btqEHOfFdjZ/lQQ7LH0kndJDN9jI6Qx1w1/img.png)
#0 static 자바의 static처럼 코틀린에서도 인스턴스가 단 하나임을 보장하는 클래스를 만들 수 있습니다. 싱글턴 인스턴스는 전역적으로 사용될 수 있으며, 메모리를 효율적으로 이용할 수 있습니다. #1 Object 코틀린에서는 클래스 이름앞에 object 키워드를 붙이면 곧바로 싱글톤 클래스가 됩니다. 하지만 이경우에는 생성자를 호출하지 않는 클래스에서만 사용할 수 있습니다. import android.util.Log // 싱글톤 클래스를 만들려면 앞에 object 를 붙이면 된다. object MyObjectSingleton { fun printMsg(msg: String) { Log.d("MyObjectSingleton", "msg: $msg") } } #2 companion object 생성..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bMkVhZ/btqEIoANrPV/CKpss5MfOu9Yb8Q6Joja7k/img.png)
import android.util.Base64 import java.io.UnsupportedEncodingException import java.security.InvalidAlgorithmParameterException import java.security.InvalidKeyException import java.security.NoSuchAlgorithmException import java.security.spec.AlgorithmParameterSpec import javax.crypto.BadPaddingException import javax.crypto.Cipher import javax.crypto.IllegalBlockSizeException import javax.crypto.No..