Android의 유용한 도우미 클래스 요약
소개
Bison 다시 남리입니다.
근육 트레어드벤트 달력은 완전히 실망했습니다. 늦어서 죄송합니다. . .
학생의 무렵부터 근육 트레이닝을 좋아해서 잘 근육 트레이닝을 하고 있었습니다.
다만 지금은 근육 트레이닝보다는 부상을 입지 않는 강인한 몸 만들기에 집중하고 있습니다.
고등학교에서 농구를 은퇴하고 나서도 대학의 서클, 또 사회인이 되고 나서도 주 1정도로 농구를 하고 있었습니다만, 큰 부상을 했기 때문입니다.
그래서, 펑셔널 트레이닝이 일과입니다.
뭔가 근육 트레어드벤트 캘린더이므로 무언가 말하지 않으면 의미가 없는 것을 말해 버렸습니다.
빨리 가자.
Android 정보
오늘은 안드로이드 주변의 지식에 대해 이야기하고 싶습니다.
Android 개발에 있어서의 오니몬은 OS의 후방 호환성이라고 생각합니다.
스스로 구현해, 이하와 같은 처리를 하는 것은 많이 있다고 생각합니다.
back_compatible_support.kt
fun getHoge() = if (Build.VERSION.SDK_INT > 19) {
// hogehoge
} else {
// fugafuga
}
귀찮아요.
IDE가 경고를 내준다고 해도, 잊어버리는 일도 있는 것은 아닐까요? (default warning이므로)
다만, 안드로이드에서는 상기와 같은 후방 호환성을 의식한 Helper들이 존재합니다.
바퀴의 재개발이 되지 않도록, 적극적으로 Android SDK가 제공하는 편리한 API들을 이용해 갑시다.
ContextCompat
Color 리소스 참조
color_resource.kt
val color = ContextCompat.getColor(context, android.R.color.white)
textView.setTextColor(color)
각 권한 주위 확인
permission.kt
// permissionは文字配列でpermissionを入れる
val checkSelfPermission = ContextCompat.checkSelfPermission(context, permission)
when (checkSelfPermission) {
PackageManager.PERMISSION_DENIED -> {
// permission denied
}
PackageManager.PERMISSION_GRANTED -> {
// permission granted
}
else -> {
// hogefuga
}
}
DrawableCompat
Drawable 리소스 참조
drawable_resource.kt
val drawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, drawableResId))
ViewCompat
View의 Background 리소스 설정
view_background.kt
val drawable = DrawableCompat.wrap(ContextCompat.getDrawable(context, drawableResId))
ViewCompat.setBackground(view, drawable);
IntentCompat
해당 Intent 후보 만들기
intent_compat.kt
startActivity(IntentCompat.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_LAUNCHER))
지정된 Action 및 Category에 해당하는 App을 다음과 같이 선택 항목으로 표시할 수 있습니다.
NotificationCompat
알림 설정
notification.kt
val builder = NotificationCompat.Builder(context, channelId)
.setSmallIcon(R.drawable.ic_launcher)
이상은 후방 호환성을 의식한 API들이었습니다만, 그 밖에도 간단하게 편리한 Utils들을 소개해 둡니다.
TextUtils
문자열 검사
TextUtils.kt
// 空 or Nullであることのチェック
TextUtils.isEmpty(string)
// 文字列自体の同値 or 同等
TextUtils.equals(stringA, stringB)
Uri.Builder
URI 작성
uri_builder.kt
val uri = Uri.Builder().scheme("scheme")
.authority("authority")
.path("path")
.appendQueryParameter("nickname", "bison")
uri.build()
// output is 'scheme://authority/path?nickname=bison'
DiffUtils
RecyclerView의 차등 업데이트
update_item.kt
val diff = DiffUtil.calculateDiff(object : DiffUtil.Callback() {
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = oldItems[oldItemPosition].id == newItems[newItemPosition].id
override fun getOldListSize() = oldItems.size
override fun getNewListSize() = newItems.size
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = oldItems[oldItemPosition] == newItems[newItemPosition]
})
diff.dispatchUpdatesTo(adapter)
마지막으로
간단하지만 자주 사용하는 기능들을 나란히 보았습니다.
다른 유용한 기능이 있으면 알려주십시오.
그럼 좋은 해를.
Reference
이 문제에 관하여(Android의 유용한 도우미 클래스 요약), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/neonankiti/items/abef8a5046057d16a5d8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)