[토막글] 클립보드에 이미지 복사하기

지프치프·2023년 12월 27일
0

Android

목록 보기
81/85

개요

일전에 클립보드에 대하여 포스팅을 한 적이 있는데 샘플 소스로 텍스트를 예로 들어 작성했었다. 이번 포스팅에선 텍스트 외에 이미지(Uri)를 처리하는 방법을 작성해보고자 한다.

ClipboardManager 사용법은 이전 포스팅 참고바랍니다.

구현

우선 코드는 Glide를 통해 이미지를 다운로드한 뒤 클립보드에 넣는 방식으로 작성하였다.

                Thread {
                    val bitmap = Glide.with(this@MainActivity)
                        .asBitmap()
                        .load("Image download url")
                        .submit()
                        .get()

                    val file = File(filesDir.path.plus("/images${Random.nextInt(999)}.jpg")).also { it.createNewFile() }

                    FileOutputStream(file).use { fos ->
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos)
                    }

                    val clipData = ClipData.newUri(
                        contentResolver,
                        "URI",
                        FileProvider.getUriForFile(this@MainActivity, BuildConfig.FileProvider, file)
                    )

                    clipManager.setPrimaryClip(clipData)
                    Handler(Looper.getMainLooper()).post {
                        Toast.makeText(this@MainActivity, "Copy from web image!", Toast.LENGTH_SHORT).show()
                    }
                }.start()

코드는 크게 어렵지 않다.

  1. Glide를 통해 이미지를 비트맵으로 다운로드 받은 뒤
  2. 파일 객체를 생성하여 비트맵을 담은 후
  3. FileProvider를 이용하여 파일 객체로부터 Uri 객체를 가져온 뒤 ClipData 객체에 담고
  4. ClipboardManager에 담아주면 끝이다.

결과캡쳐를 올릴려고 했는데 다음 기화에 올려보겠다..

profile
지프처럼 거침없는 개발을 하고싶은 개발자

0개의 댓글