투케이2K

1059. (Android/Java) [간단 소스] 안드로이드 TypedValue.applyDimension dp to px 변환 - interface 인터페이스 클래스 사용 본문

Android

1059. (Android/Java) [간단 소스] 안드로이드 TypedValue.applyDimension dp to px 변환 - interface 인터페이스 클래스 사용

투케이2K 2026. 7. 2. 19:53
728x90
반응형

[개발 환경 설정]

개발 툴 : AndroidStudio

개발 언어 : Java / Kotlin

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Java / Kotlin


- 개발 툴 : AndroidStudio


- 기술 구분 : Android / interface / DP


- 사전) 👉 interface 인터페이스 간략 설명  

  >> interface 클래스에서는 메소드 몸체(내용)을 구현할 수 없고, 헤더(메소드 명)만 정의 후 자식쪽에서 부모 메소드를 재정의해 사용합니다.

  >> interface 클래스에 정의 된 메소드를 사용하기 위해서는 @Override를 사용해서 메소드를 재정의하면 됩니다.

  >> interface 인터페이스 특징으로는 자바에서 다중 상속을 지원해주는 기능을 수행하고 있습니다.


- 사전) 👉 DP 간략 설명

  >> DP (Density Independent Pixel) 는 Android 에서 가장 중요한 단위 중 하나로 화면 밀도에 독립적인 픽셀을 의미합니다.

  ----------------------------------------
    기기    |   Density 
  ----------------------------------------
    mdpi    |    1.0
  ----------------------------------------
    hdpi    |    1.5
  ----------------------------------------
    xhdpi   |    2.0
  ----------------------------------------
    xxhdpi  |    3.0
  ----------------------------------------
    xxxhdpi |    4.0
  ----------------------------------------

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------

// ------------------------------------------------
// 🟦 interface 정의
// ------------------------------------------------ 

public interface Converter {
    Integer convert(Integer value);
}


    
// ------------------------------------------------
// 🟦 interface 메소드 재정의 수행 및 사용
// ------------------------------------------------ 

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d("TAG", "Click");

        Converter dpToPx = new Converter() { // 재정의
            @Override
            public Integer convert(Integer dp) {
                return (int) TypedValue.applyDimension(
                        TypedValue.COMPLEX_UNIT_DIP,
                        dp,
                        mContext.getResources().getDisplayMetrics()
                );
            }
        };


        Log.d("TAG", "dpToPx : " + String.valueOf( dpToPx.convert(15) )); // 사용

    }
});



// ------------------------------------------------
// 🟦 추가 첨부 코드 : 일반 메소드 형식으로 정의 사용
// ------------------------------------------------ 

private int dpToPx(int dp) {
    return (int) TypedValue.applyDimension(
            TypedValue.COMPLEX_UNIT_DIP,
            dp,
            getResources().getDisplayMetrics()
    );
}

// --------------------------------------------------------------------------------------





// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

▶️ 159. (java/자바) 인터페이스 (interface) 메소드 헤더 정의 및 @Override 상속 받은 후 메소드 재정의

https://kkh0977.tistory.com/389

https://blog.naver.com/kkh0977/222243822799?trackingCode=blog_bloghome_searchlist


▶️ 68. (kotlin/코틀린) companion object interface 사용해 인터페이스 메소드 재정의 및 구현 실시

https://kkh0977.tistory.com/2609

https://blog.naver.com/kkh0977/222884608163?trackingCode=blog_bloghome_searchlist


▶️ 113. (java/자바) 추상클래스, 인터페이스 개념 설명 (abstract, interface)

https://kkh0977.tistory.com/146

https://blog.naver.com/kkh0977/222203686130?trackingCode=blog_bloghome_searchlist


▶️ 163. (java/자바) 인터페이스 (interface) 클래스를 implements 다중 상속 받은 후 사용하기

https://kkh0977.tistory.com/425

https://blog.naver.com/kkh0977/222257081095?trackingCode=blog_bloghome_searchlist


▶️ 247. (java/자바) [인터페이스 기반] Anonymous 익명 클래스 사용 방법 정의

https://kkh0977.tistory.com/1611

https://blog.naver.com/kkh0977/222674431875?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
728x90
반응형
Comments