반투명 박스, 선 그리기


<View

  android:id=“@+id/box”

  android:layout_width=“100dp”

  android:layout_height=“50dp”

  android:background=“#19000000″/>


박스나 선을 그리기 위해서는 예제와 같이 View 위젯을 사용한다.  물론 TextView나 RelativeLayout, LinearLayout 자체의 Background 색상 설정으로도 반투명 효과를 줄 수 있다.
그리려는 박스의 크기를 layout_width(넓이), layout_height(높이)에 작성한다. 만약 부모 레이아웃의 전체 폭만큼을 채우고 싶다면, “match_parent”를 사용한다.
선을 그릴 경우에는 가로 선의 경우 width 값을 “1px” 내지 원하는 두께만큼 설정하여 그릴 수 있으며, 세로 선의 경우는 물론 height 값을 설정한다.
background의 값은 drawable을 값으로 가질 수도 있지만, 예제와 같이 색상코드를 부여할 수도 있다.
각 자리의 의미는 두글자씩 argb에 해당한다. 반투명 효과를 주고 싶다면 원하는 퍼센트 만큼을 “2.55 * 퍼센트값”을 한 뒤, 16진수로 변환하여 적어준다.
2.55는 2자리의 16진수의 최대값인 ff(10진수 255)를 100으로 나눈 값이다.

#    19         00         00         00
Alpha  |  Red |  Green |  Blue

예제의 경우, 검은색(rgb = 00 00 00)을 10%만큼의 불투명도를 적용한 값이다. 19(16진수)는 2.55 * 10(%) = 25.5에서 소수점 이하를 버린 16진수 값에 해당한다.

 

코너에 라운드가 들어간 박스 그리기

프로젝트 내에 res/layout 폴더에 빈 xml 파일을 생성한 뒤, 아래 예제와 같이 코드를 작성한다.

<예제 파일명 : rounded.xml>

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"]]>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="10dip" />
            <solid android:color="#efefef" />
            <stroke android:width="1dp" android:color="#2f2f2f"/>
        </shape>
    </item>
</layer-list>

 

위 파일 내용은 코너에 라운드가 들어간 박스의 형태를 정의해놓은 것이다. item 내부에 내용을 살펴보면…

<shape android:shape="rectangle"> 사각형(rectangle) 형태

<corners android:radius=
"10dip"/> 코너에 라운드 크기

<solid android:color=
"#efefef"/> 사각형의 면색깔 지정

<stroke android:width=
"1dp"android:color="#2f2f2f"/> 사각형의 테두리 선 두께(width) 및 색상 지정

형태가 만들어졌다면, 적용하고자 하는 레이아웃의 백그라운드에 다음과 같이 적용하면, 레이아웃의 크기에 맞게 위에 설정된 형태로 박스가 그려지게 된다.

<LinearLayout
android:layout_width=”wrap_content”
android:layout_width=”wrap_content”
android:background=”@layout/rounded” >

@layout/rounded에서 rounded는 형태를 작성했던 파일명에 해당한다.

TextView 내에 글씨 크기 및 색상 조절하기

TextView를 xml에서 설정하다보면 TextSize, TextColor가 일괄 적용되기 때문에  TextView 내에 특정 문자에 색상을 변경하거나 크기를 다르게 줄 수가 없다.
이 경우, JAVA코드 상에서 해결 할 수 있다.

 <예제>
xml 파일 내에 다음과 같은 TextView가 작성된 경우.

<TextView
android:id = “@+id/txt”
android:layout_width=”wrap_content”
    android:layout_height=”wrap_content”
android:text=”Hello World” />

해당 Activity 내에서 다음과 같이 작성한다.
TextView txt = (TextView)findViewById(R.id.txt);
Spannable span = new SpannableString(txt.getText().toString());
span.setSpan(new RelativeSizeSpan(1.2f), 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
span.setSpan(new ForegroundColorSpan(Color.RED), 0, 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
txt.setText(span);
내용을 살펴보면, 먼저 Spannable을 생성할때 생성자 파라메터로 특정 문자열을 적어주거나, 예제와 같이 TextView에서 문자열을 가져와서 생성할 수 있다.
Spannable span = new SpannableString(txt.getText().toString());
span에 생성된 문자열에 setSpan() 함수를 이용해서 다음과 같은 효과를 줄 수 있다.
- 글자크기 변경 : new RelativeSizeSpan(1.2f)
- Italic, bold 등 적용 : new StyleSpan(Typeface.ITALIC)
– 글씨색 변경 : new ForegroundColorSpan(Color.RED)
– 글자배경색 변경 : new BackgroundColorSpan(Color.BLUE)
setSpan에 첫번째 파라메터에 위의 효과중 적용하고자 하는 내용을 작성 한 뒤, 적용하려는 시작위치, 종료위치를 입력하여 setSpan()함수를 작성한다.
setSpan함수는 중복하여 적용이 가능하다.
span에 대한 작성이 완료되면,  TextView의 setText()함수를 이용하여 span을 넘겨준다.






블로그 이미지

미네르바98

안드로이드와 영화 리뷰, 생활정보에 관한 내용을 기재합니다.

,