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)

마지막으로



간단하지만 자주 사용하는 기능들을 나란히 보았습니다.
다른 유용한 기능이 있으면 알려주십시오.
그럼 좋은 해를.

좋은 웹페이지 즐겨찾기