안드로이드 앱 개발기 #20 - 클립보드에 텍스트 복사하는 함수 만들어 보기 (Kotlin)

클립보드에 텍스트를 복사하는 코드를 한 블로그에서는 이렇게 구현하고 있습니다. (관련 블로그는 아래 참고 사이트에 있습니다.)

ClipboardManager clipboard = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);

위 코드는 자바 코드인데요. 복사할 때마다 3~4줄의 코드를 사용하는 것은 비효율적입니다. 별도 함수를 만들고 이를 호출하는 것이 낫습니다.


자바 코드

자바 언어로는 유틸 클래스를 만들고 그 안에 클립보드에 텍스트 복사하는 함수를 추가하는 것을 고려해볼 수 있습니다.

class ClipboardUtil {

    public static void copyText(Context context, String text) {
        ClipboardManager clipboard = (ClipboardManager) context.getSystemService(CLIPBOARD_SERVICE); 
        ClipData clip = ClipData.newPlainText("label", text);
        clipboard.setPrimaryClip(clip);
    }

}

코틀린 코드

코틀린 언어로는 유틸 클래스 대신 Context 또는 ClipboardManager 클래스로부터 확장함수 정의를 고려해볼 수 있습니다.

Context 클래스로부터 확장 함수
fun Context.copyToClipboard(text: String) {
    val clipboardManager = getSystemService(AppCompatActivity.CLIPBOARD_SERVICE) as ClipboardManager
    val clipData = ClipData.newPlainText("label", text)
    clipboardManager.setPrimaryClip(clipData)
}
ClipboardManager 클래스로부터 확장 함수
fun ClipboardManager.copyToClipboard(text: String) {
    val clipData = ClipData.newPlainText("label", text)
    setPrimaryClip(clipData)
}

고민 거리

Context, ClipboardManager 또는 제3의 클래스 중 어떤 것으로 확장하는 것이 더 좋을지는 고민해볼 문제입니다. 이에 대해서는 추후 다시 다뤄볼 예정입니다.

참고 링크

https://hello-bryan.tistory.com/125


지난 안드로이드 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Coin Marketplace

STEEM 0.28
TRX 0.12
JST 0.032
BTC 62302.26
ETH 2994.60
USDT 1.00
SBD 3.96