Android Study

안드로이드의 디자인 적용 원리

85chong 2019. 5. 9. 11:58
728x90
반응형
SMALL

내용이 좀 깁니다.

....

안드로이드는 크게  java 와 res(resource) 로 크게 나뉩니다.  아래의 설명과 같이 각각 주요 담당하는 역활이 있습니다.

 

res 안의 구성은 기본적으로 아래와 같은 구조로 되어 있습니다. (실제 안드로이드 스튜디오 폴더 경로는 아래의 형태로 존재합니다.)

"  > " 는 하위 내용을 표시

" ( ) " 는 설명

 

res > drawable > menu.png (이미지를 가지고 있는 폴더)

                            history.png

         drawable-hdpi > menu.png

                                    history.png

                                    (기타등등...)

         drawable-xhdpi (위와 동일함 생략/ 아래에 이유 설명)

         drawable-xxhdpi (위와 동일함 생략 / 아래에 이유 설명)

         drawable-xxxhdpi (위와 동일함 생략 / 아래에 이유 설명)

 

     > layout (실제로 앱에서 보여지는 화면을 만든 파일들이 있는폴더 / 확장자명은 .xml 로 되어있음)

                   > view_one.xml

                       view_two.xml

                       view_threee.xml

 

     > values (보여지는 화면에 대한 부가적인 것들) 

                    > color.xml (색상을 담당)

                       dimens.xml(사이즈를 담당)

                       font.xml(폰트세트를 만들어서 담당)

                       styles.xml(스타일 세트를 만들어서 담당)

                       strings.xml(언어처리 담당)

                       (등등...)

 

(위의 구성은 기본적으로 사용하는 것이기 때문에 모두 동일한 사용은 아니더라도, 대부분의 구성은 위와같이 되어있습니다.)

아래는 실제 안드로이드 스튜디오 이미지 스크린샷 입니다. 아래에 좌측의 메뉴 구성을 보시면 됩니다.

 

 

위의 폴더를 하나하나 설명하겠습니다.

 

- drawable :

이미지 파일을 넣어서 사용하는 곳입니다.측에 drawable 로 되어있는 폴더에 같은 이름의 파일을 각 폴더사이즈에 맞춰서 넣어주면  안드로이드는(기기의 dpi  기준이 되는 dpi 정확하게 맞아야 하는것은 아니지만)기기의 dpi  가장 비슷한 레이아웃 으로 자동으로 적용 됩다. 이때 적용되는 순서는 고밀도에서 저밀도 순으로 적용을 시도하면서 맞는 기기에 해당하는 폴더의 이미지로 적용시킵니다. 

(보통 안드로이드 Os 디바이스의 화면밀도 단위는 ppi(pixel per inch) 이다간단하게  말해서 ppi  1 inch 정사각형으로 채운 단위 이     고, dpi  1 inch 동그라미로 채운 단위이다.)

  • 화면밀도는 화 공간 안의 픽셀 개수, dpi(dots per inch)  따라 분류합니다.

* 아래에는 폴더별 적용 사이즈를 적은 표입니다.

ldpi : 저밀도 120dpi 화면에 해당함

mdpi : 중밀도 160dpi //

hdpi : 고밀도 240dpi //

xhdpi : 초고밀도 320dpi //

xxhdpi : 초초고밀도 480dpi //

xxxhdpi : 초초초고밀도 640dpi //

* 해상도 관련 설명 url : 85chong.tistory.com/57

 

 

- layout :

위 설명과 같이 실제로 앱에서 보여지는 레이아웃들 즉 ,뷰페이지를 만든 파일들을 모아놓은 폴더 입니다.

여기에서 높이수정, 마진값 수정, 이미지 크기 수정, 언어 붙이기, 정렬 등의 모든 수정을 하는 view 전용

담당 파일들을 모아 놓는 폴더 입니다. 실질적으로 디자이너와 상의하여 작업하는 대부분의 수정을 이곳에서 합니다.

그리고 특정한 조건에서 어떠한 액션을 한다. 라는 특수한 조건이나 움직이는 등의 작업을 하는부분은 모두 java 에서 

작업을 합니다.

 

- values :

단어 그대로 어떠한 값에 대한 모든 부분을 가지고 있는 폴더입니다.

이곳에서는 파일별로 용도가 달라서 파일별 설명을 적겠습니다.

 

- colors.xml :

색상을 담당하는 파일입니다. 기본적으로 안드로이드의 색상 적용은 #AARRGGBB 이와 같이 적용됩니다. 이름을 지정하고 값을 이곳에서 지정한 후에, 적용시킬 곳에 이름을 적어서 해당 색상을 적어서 적용 시킵니다. (AA : Alpha 값 / RR : Red / GG : Green / BB : Blue ) 와 같이 사용됩니다. 즉 16진수의 헥사값으로 적용시킵니다.

* 참고할 Alpha 값 코드표 url : http://sjava.net/2014/10/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%97%90%EC%84%9C-%EC%83%89%EC%97%90%EC%84%9C-%EC%95%8C%ED%8C%8Calpha%EA%B0%92-%EC%82%AC%EC%9A%A9/

위의 사이트를 참고하여 투명도 값을 정하고,  나머지 디자인 가이드에 나와있는 RGB 를 맞춰 주어 작업하게 됩니다.

ex)  #ff5c3f 색상을   투명도 54% 를 주고 싶다하면 , 위의 알파값 코드표를 참고해서  #8Aff5c3f  로 작업하면 의도대로 색상이 적용 된다.(대소문자는 구분하지 않는다.) 

 

- dimens.xml :

안드로이드  주로 사용하는 단위는 dp, sp , px, dip 가 있는데  먼저 설명을 하자면, px 은 말 그대로 픽셀의 단위를 그대로 사용한 것이고(그대로 사용한다고 해서 안드로이드에서 그대로 표현되는것이아님) px 만으로는 해상도에 따라 크기가 달라지기 때문에, 안드로이드 폰의 다양한 해상도를 지원하기 위해 만든 단위가 dp , dip입니다.

큰 화면이든 작은 화면이든 실제 눈으로보기에 같은 크기로 보이도록 해야해서, 해상도가 낮은폰에서 1cm정도되는 길이를 높은 해상도의 폰에서도 1cm짜리로 보이도록 되어있습니다. 그래서 안드로이드 디자인 작업에서 dp 나 dip 를 사용합니다. 그리고 sp 는 dp 와 비슷하지만 사용자가 선택한 글꼴에 의해 크기가 자동으로 조절됩니다. 그래서 폰트사이즈는 sp 단위로 UI 는 dp 단위로 작업을 합니다.

 

- font.xml :

커스터마이징 되어있는 폰트 세트 들을 만들어서 모아놓고, 사용하는 폴더 입니다.(필수는 아니지만 관리의 편의성을 위해 폴더를 만들어서 따로 관리합니다.) ex) 폰트는 sans-serif-medium 으로 하고 , 사이즈는 16sp 하고, 색상은 #8Aff5c3f 로 하고,  스타일은 nomarl 하게 해주세요. 라는 요청이 들어오면 view 페이지 에서 4-5줄을 써야하기 때문에 글자 하나 만들때마다 엄청난 양의 코드를 매번 입력해야하는 번거로움이 있습니다. 이때 위에 font 안에 하나의 이름으로 위의 4-5옵션을 설정해 주고, 폰트 스타일에 적용만 시켜주면 매번 적용시에 4-5줄이 아니고 1줄만 넣어주면 공통으로 적용되는 이점이 있어 위와 같이 사용합니다.

 

- styles.xml :

위의 font 와 같이 스타일 세트 들을 만들어서 모아놓고, 사용하는 폴더 입니다. font 와 다른점은 여기서는 font 뿐만 아니라 레이아웃 페이지 전체에 대한 커스터마이징된 스타일 세트를 제어 할 수 있습니다.

 

- strings.xml :

기본적으로 layout 페이지에 직접 입력해도 문자를 적용 시킬 수 있지만, 편의성과 관리를 위해(다국어는 반드시 필요한 작업임) 이름을 정하여, 해당 문구로  정해서 사용해도 가능하지만, 보통 어디서 사용하는지에 대한 간략한 정보를 담은 이름으로 하는것이 좋습니다.

ex)  <string name="welcome_sentence">"환영합니다.여러분"</string> 이렇게 작업하고 사용할 곳에 welcome_sentence 라는(키값 이라 부릅니다.) key값을 가져가 사용하면 동일한 내용을 사용하는 곳에서는 재사용이 가능하고, 전체적인 관리가 편하고, 다국어 처리시 두번일 하지 않아도 되서(다국어 하지 않는다고 확정지어 하드코딩으로 적용시키는 것은 좋지않다) 이와같이 사용합니다.

 

 

 

-끝-