ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Android] setTextSize 단위 SP, DP 차이점과 특징
    Programming/Android 2019. 1. 15. 17:52




    안드로이드 기반 스마트폰은 안드로이드에서 다양한 해상도를 지원하기 때문에 각각 제조사별, 제품별 다양한 크기를 가지고 있습니다.


    그래서 안드로이드를 처음 접할 때 해상도 관련해서 어려움을 느끼곤 합니다 (ㅠㅠ)


    개발자는 해상도 몰라도 되는 것 아닌가? 싶지만 디자이너 협업 등 알아두면 유용하게 사용할 수 있을 것 같습니다. 


    오늘은 일단 가장 많이 쓰는 TextView에서 TextSize의 단위로 많이 쓰이는 SP와 DP를 먼저 비교하고


    이후에 해상도에 대해 더 자세하게 공부해서 포스팅하도록 하겠습니다. 






    SP(Scale-Independent Pixels) vs DP(Density-Independent Pixels)



    -SP(Scale-Independent Pixels) :  직역하면 스케일 독립 픽셀 단위로, 시스템이 지정한 font size에 영향을 받음.


    -DP(Density-Independent Pixels) : 직역하면 밀도 독립 픽셀 단위로, 장치의 밀도에 상관없이 물리적으로 동일한 크기를 갖음.




    쉽게 말하자면, 


    SP는 글자 크기가 시스템에 따라 유연하게 변하지만 DP는 시스템에 영향을 받지 않고 늘 고정적인 크기를 가지는 것입니다.



    좀 더 이해하기 쉽도록 실제 사진을 가지고 설명하겠습니다.




      - TextSize를 "15sp"로 설정한 경우 




    시스템에서 사용자가 지정한 사이즈에 따라서 글자 크기가 변동하는 것을 볼 수 있습니다. 


    사용자 개개인의 상황에 맞게 유연하게 대처가 가능하다는 장점이 있습니다.


    하지만 변동가능한 글자 크기 때문에 개발자가 원하는 디자인을 만들지 못하거나, 심미적으로 떨어지는 단점이 있습니다.




      

       - TextSize를 "15dp"로 설정한 경우 




    시스템으로 지정한 글자 크기와 상관없이 고정적인 글자 크기를 보여줍니다.


    디자인적 요소가 강한 어플리케이션에 사용하면 심미적으로 높은 결과를 도출할 수 있는 장점이 있습니다.


    반대로, 고정적인 글자 크기로 인해 사용자가 글을 읽는데 불편함을 느낄 수 있다는 단점이 있습니다. 







    안드로이드 개발자 가이드 사이트에선 


    Text 사이즈로는 되도록 SP를 사용하도록 권유합니다.


    왜냐하면, 사용자마다 원하는 폰트 크기가 다르기도 하며, 


    시력이 좋지 않은 노인, 글자를 쉽게 이해하지 못하는 어린아이들 등 


    각각의 상황에 맞는 디자인을 제공할 수 있기 때문입니다. 



    반대로, 안드로이드는 각 기기들마다 다양한 크기, 화면 밀도, 해상도를 가지기 때문에,


    모든 앱에서 일정하고 고유한 디자인을 위해선 DP를 써야한다는 입장도 있습니다.




    제 개인적인 견해로는


    두 단위 모두 장/단점을 가지고 있기 때문에, 무엇이 더 좋다 나쁘다할 수 없고,


    디자인에 표현되는 Text는 dp로 설정해 최대한 계획했던 디자인에 맞추고,


    뉴스, 대화, 글 등을 나타내는 Text는 sp로 설정해 사용자마다 


    글을 읽고 이해하기 쉽도록 하는 것이 좋지 않을까 생각합니다.





    개발 하실 때마다 좀 더 중요도가 높다 생각하는 것에 맞춰 설정하시는 것이 가장 좋은 방법이라 생각합니다. 





    참고 : https://developer.android.com/training/multiscreen/screendensities (안드로이드 개발자 가이드)


    (배워가는 중이라 혹여나 내용에 틀린 부분 말씀해 주시면, 고치도록 하겠습니다) 






















    'Programming > Android' 카테고리의 다른 글

    [Android] 안드로이드 4대 구성요소(Component)  (0) 2019.01.14
Designed by Tistory.