프로그래밍/android 53

android CornerRoundedImageView (ImageView 라운드 처리하기)

android ImageView에 라운드 처리를 하기 위해서 res/drawable/ 에 background.xml을 만들어 적용하는 방법이 있지만, ImageView를 상속시킨 UIView를 직접 만들어 사용해도 된다. package cloud.shoplive.sdk.ui import android.content.Context import android.graphics.Canvas import android.graphics.Path import android.graphics.RectF import android.util.AttributeSet import android.widget.ImageView class CornerRoundedImageView: ImageView { companion object..

android 비트맵 라운드 처리 (Rounded Bitmap)

안드로이드에서 이미지 작업을 쉽게 할 수 있도록 제공되는 서드파티 라이브러리가 많이 있지만, 때로는 서드파티 라이브러리를 사용할 수 없어서 직접 핸들링을 해야 하는 경우가 있다. private fun getRoundedCornerBitmap(bitmap: Bitmap): Bitmap? { val output = Bitmap.createBitmap( bitmap.width, bitmap.height, Bitmap.Config.ARGB_8888 ) val canvas = Canvas(output) val paint = Paint() val rect = Rect(0, 0, bitmap.width, bitmap.height) val rectF = RectF(rect) val roundPx = 20f paint...

android ExoPlayer PlayerView Corner Rounded

OS Pip를 사용하지 않고 직접 구현해야 할 때가 있는데, PlayerView를 좀 예쁘게 가다듬기 위해서 코너에 라운드 모양을 만들 수 있는 코드가 있어서 적용했다. @RequiresApi(Build.VERSION_CODES.LOLLIPOP) playerView.outlineProvider = object : ViewOutlineProvider() { override fun getOutline(view: View, outline: Outline) { outline.setRoundRect(0, 0, view.width, view.height, 20f) } } @RequiresApi(Build.VERSION_CODES.LOLLIPOP) playerView.clipToOutline = true

[android] Android 12 Vibrator Pattern(진동 패턴) VibratorManager VIBRATOR_MANAGER_SERVICE

안드로이드 12 (target 31) 에서 새롭게 VIBRATOR_MANAGER_SERVICE가 추가되어 기존에 사용하던 VIBRATOR_SERVICE가 deprecated 되었다. VibratorManager 선언하기 (버전 분기) val vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { val manager = getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager manager.defaultVibrator } else { @Suppress("DEPRECATION") getSystemService(Context.VIBRATOR_SERVICE) as Vibrator }..

[android] apk decompile (안드로이드 apk 디컴파일)

신규 프로젝트를 진행한 뒤, 난독화가 잘 되었는지 확인하기 위해서 디컴파일을 진행해 보았다. 디컴파일은 평소에 자주 하는게 아니기 때문에 정리차원에서 포스팅을 해두자. apktool을 이용하여 디컴파일을 하는 방법도 있지만, 나는 오래전에 사용해 보았던 dex2jar를 이용하여 간단하게 디컴파일을 할 것이다. 1. 먼저 아래 링크에서 dex2jar를 다운 받는다. https://sourceforge.net/projects/dex2jar/ dex2jar Download dex2jar for free. Tools to work with android .dex and java .class files. Mirrors: * https://bitbucket.org/pxb1988/dex2jar * https://gi..

[Android 12] Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE

Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. 위와 같은 메시지가 발견되었다면 PendingIntent를 사용하는 구문에서 오류가 발생했을 가능성이 높다. 나의 경우 foregroundS..

[android] Kotlin ArrayList SharedPreferences json data (feat. Gson)

▣ Model data class Person(val name: String, val age: Int) ▣ Read val preferences = getSharedPreferences("pref", Context.MODE_PRIVATE) val jsonData = preferences.getString("person", "") val gson = Gson() val token: TypeToken = object : TypeToken(){} val list: MutableList? = gson.fromJson(jsonData, token.type) ▣ Write val preferences = getSharedPreferences("pref", Context.MODE_PRIVATE) val jsonDat..