텍스트 뷰

  • text 속성에 직접 글자를 넣을 수도 있지만, /res/values 폴더 안에 들어있는 strings.xml에 넣어둔 태그의 값으로 설정할 수 있다
  • text 속성의 값으로 @string/태그네임 으로 넣어줄 수 있다. 

위 방식은 다국어를 설정할 때 유용하다.

/res/values-en 폴더와 /res/values-ko 폴더를 만들고 그 안에 strings.xml 파일을 같이 넣어주었다면 @string/name으로 참조하는 글자는 단말의 Locale에 따라 달라집니다. 

단말이 한국어로 설정되어 있다면 /res/values-ko/strings.xml 파일 안에 들어있는 name 태그의 값을 가져옵니다.


버튼 

  • 텍스트뷰를 상속하여 만들어졌기 때문에 TextView에서 Button으로 바꾸기만 해도 버튼이 화면에 보이게 된다.
  • 텍스트뷰의 속성외에 추가적인 기능이나 속성을 가지고 있다.
  • 라디오 버튼이나 체크박스 등으로 나누어 사용될 수 있다.
  • 라디오 버튼은 라디오그룹을 이용해 하나의 그룹으로 묶어줄 수 있다. ( 체크박스: 중복선택, 라디오버튼:단일선택)

라디오버튼을 그룹으로 만들기

<RadioGroup
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:orientation="horizontal">
  
  <RadioButton
    android:id="@+id/radio1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="남자" />
  <RadioButton
    android:id="@+id/radio2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="여자" />
    
</RadioGroup>

EditText (PlainText)

  • 텍스트를 입력받고 처리하는 기능을 제공
  • inputType을 지정할 수 있다.
  • hint 속성을 이용하여 안내글을 표시할 수 있다.

이미지 뷰 

  • 이미지를 보여준다.
  • Drawable폴더에 이미지를 넣을 때 이미지 파일의 이름은 소문자와 특수기호 중 언더스코어만 넣을 수 있다는 점에 주의해야 한다.
  • 이미지 파일의 확장자는 jpg, png, gif 등이 가능하며, 그중에서 png형식의 이미지를 권장한다.
  • scaleType속성은 이미지가 영역을 꽉 채울 것인지 아니면 이미지 원본의 크기대로 보여줄 것인지 등을 결정하는데 사용된다.

뷰가 background속성을 이용하면 배경색을 지정할 수도 있고 /res/drawable 폴더에 넣어둔 이미지 파일을 배경으로 할 수도 있다. 그런데 배경으로 설정하면 이미지는 아무런 변화가 없다. 버튼이 눌렸을 때 눌린 이미지가 보이도록 하고 싶은 경우에는 드로어블을 사용하면 된다.

드로어블을 사용하면 뷰나 화면 일부를 그래픽으로 그리는 기능을 XML로 만들 수 있다.

 

드로어블 ( Drawable )

  • Drawable은 뷰에 설정할 수 있는 객체이며 그래픽으로 그릴 수 있다.
  • Drawable은 소스 코드에서 만들 수도 있지만 XML로 만들어 사용하는 경우가 많다.
  • /res/drawable 폴더에서 우클릭 -> New -> Drawable resource file로 파일을 만들고 코드를 작성한다.
  • 이미지 파일을 보여주는 상태 드로어블, 두 개의 드로어블 간에 바뀌도록 만드는 전환 드로어블, 색상과 그라데이션을 포함하여 도형 모양을 정의할 수 있는 쉐이프 드로어블 등이 있다.
  • 지정한 거리만큼 안쪽으로 들어오도록 만들 수 있는 인셋 드로어블(InsetDrawable)은 뷰가 실제 범위보다 작은 백그라운드가 필요할 때 유용하게 사용된다.
  • 다른 드로어블을 클리핑하는 클립 드로어블은 진행률 표시 줄과 같은 항목을 구현하는데 많이 사용한다.
  • 그 외로 다른 드로어블의 크기를 바꿀 수 있는 스케일 드로어블도 있다.

상태 드로어블 ( StateListDrawable )

  • 뷰의 상태에 따라 보여줄 그래픽을 다르게 지정할 수 있도록 한다.
  • 최상위 태그는 <selector>이다.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true"  
	 android:drawable="@drawable/up_selected" />

    <item android:drawable="@drawable/up" />
</selector>

 

state_ 로 시작하는 속성은 상태를 나타낸다. pressed는 눌린 상태를의미하고 focused는 포커스를 받은 상태를 의미한다.

속성이 지정되지 않으면 drawable 속성에 up이미지가 디폴트 이미지로 보여진다.

<Button
    android:id="@+id/button"
    android:layout_width="80dp"
    android:layout_height="80dp"
    android:background="@drawable/up" />

/res/drawable 폴더 안에 up.xml 을 배경으로 설정하면 적용 된다.


쉐이프 드로어블 (Shape Drawable)

  • 최상위 태그를 <shape>로 바꾸면 도형 하나를 정의할 수 있다.
  • Design탭에서 작성한 모양을 확인할 수 있다.
  • shape태그에 shape속성을 이용해 모양을 설정할 수도 있다.
  • <stroke>는 테두리 선의 속성을 지정하며, width는 선의 굵기, color는 선의 색상을 설정한다.
  • <solid>는 도형의 안쪽을 채울 때 사용한다.
  • <gradient>는 그라데이션을 줄 때 사용한다.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <size android:width="200dp" android:height="120dp"/>
    <stroke android:width="1dp" android:color="#0000ff"/>
    <solid android:color="#aaddff" />
    <padding android:bottom="1dp" />

</shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <gradient
        android:startColor="#7288DB"
        android:centerColor="#3250B4"
        android:endColor="#254095"
        android:angle="90"
        android:centerY="0.5"
        />

    <corners android:radius="2dp" />

</shape>

 

테두리만 있는 버튼 배경

  • 최상위 태그는 <layer-list>이며, 여러 그래픽을 하나의 XML 파일에 넣을 수 있다.
  • <layer-list>안에 <item> 태그가 여러개 들어갈 수 있으며, <item>태그 안에는 <shape> 태그가 들어갈 수 있어 각각을 도형으로 정의할 수 있다.
  • 버튼의 테두리만 보이게 하는 드로어블을 만들고 싶다면 도형 안쪽을 투명하게 채우고 테두리 선만 색상을 주면 된다.
  • 여러 개의 그래픽으로 나누면 그래픽을 중첩시켜서 좀 더 예쁜 배경을 만들 수 있다.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#BE55DA" />
            <solid android:color="#00000000" />
        </shape>
    </item>

    <item android:top="1dp" android:bottom="1dp" 
          android:right="1dp" android:left="1dp">
        <shape android:shape="rectangle">
            <stroke android:width="1dp" android:color="#BE55DA" />
            <solid android:color="#00000000" />
        </shape>
    </item>

</layer-list>

Reference

 

[부스트코스] 안드로이드 프로그래밍 강좌소개 : edwith

- 부스트코스

www.edwith.org

 

 

 

'Android' 카테고리의 다른 글

[안드로이드] 애니메이션  (0) 2019.11.18
[안드로이드] 패키지명, Color 변경  (1) 2019.11.17
[Kotlin] TextWatcher  (0) 2019.10.30
[Kotlin] 안드로이드 권한 - 1  (0) 2019.09.30
[Design] Material Design  (0) 2019.08.18

+ Recent posts