RelativelayoutView의 상대적 위치를 이용하여 위치를 설정하는 방법입니다.  상대적 위치를 이용하여 View 들을 정렬 하므로 기준이 되는 ViewID 값 설정이 필수적 입니다.RelativeLayout은 중첩된 View 그룹을 없애고 레이아웃 계층 구조를 평면으로 유지하여 성능을 개선 하고 중첩된 LinearLayout을 대체할 수 있습니다.

 

 

1. 기준 View와의 상대적 위치

 

기준 View를 중심으로 추가되는 View의 위치를 위, 아래, 왼쪽, 오른쪽 등 상대적 위치에 위치 시키는 옵션 입니다.  상대적 위치의 설정 값으로 기준 View ID가 사용되므로 기준이 되는 View에는 꼭 아이디 값이 부여되어 있어야 합니다.

 

 

attributes

설명

android:layout_above

기준 View의 위 선에 View의 위 선을 맞춤

layout_below

기준 View의 아래 선에 View의 아래 선을 맞춤

layout_toLeftOf

기준 View의 왼쪽 선에 View의 왼쪽 선을 맞춤

layout_toRightOf

기준 View의 오른쪽 선에 View의 오른쪽 선을 맞춤

 

잠시 잘못된 예제를 하나 보도록 하겠습니다.

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:id="@+id/cntText"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:background="#F6D55C"
       
android:text="중앙"
/>

    <
TextView
        
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_above="@+id/cntText"
       
android:background="#DDED553B"
       
android:text="Above"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_below="@+id/cntText"
       
android:background="#DDED553B"
       
android:text="Below"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_toLeftOf="@+id/cntText"
        
android:background="#E3AA"
       
android:text="toLeftof"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_toRightOf="@+id/cntText"
       
android:background="#E3AA"
       
android:text="toRightof"
/>
</
RelativeLayout>

 

위와 같이 기준이 되는 View가 좌측 상단에 위치하게 되면 상단과 좌측에 있는 View는 보이지 않는 영역으로 나가게 됩니다.  그래서 새로운 예제에서는 android:layout_centerInParent = "true" 를 사용하여 기준 View를 중앙에 위치 시켰고 다른  예제에서도 동일한 현상이 발생하는 경우 기준 View의 위치를 잡아주는 방법을 사용하였습니다.

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:id="@+id/cntText"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:background="#F6D55C"
        
android:text="중앙"
/>

    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:layout_above="@+id/cntText"
       
android:background="#DDED553B"
       
android:text="Above"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:layout_below="@+id/cntText"
       
android:background="#DDED553B"
       
android:text="Below"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:layout_toLeftOf="@+id/cntText"
       
android:background="#E3AA"
       
android:text="toLeftof"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:layout_toRightOf="@+id/cntText"
       
android:background="#E3AA"
       
android:text="toRightof"
/>
</
RelativeLayout>

 

 

좌측, 우측 정렬을 다른 옵션을 사용하여 위치 시킬 수 있습니다.  문장의 시작 위치가 좌측이 아닌 우측에서 시작하는 국가를 위한 방안으로 정렬도 좌측, 우측이 아닌 시작과 끝으로 설정하는 방법입니다.

 

attributes

설명

layout_toStartOf

기준 View의 시작 선에 View의 시작 선을 맞춤

layout_toEndOf

기준 View의 끝 선에 View의 끝 선을 맞춤

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>
    <
TextView
       
android:id="@+id/cntText"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:background="#F6D55C"
       
android:text="중앙"
/>

    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:layout_toStartOf="@+id/cntText"
       
android:background="#E3AA"
       
android:text="toStartOf"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:layout_toEndOf="@+id/cntText"
       
android:background="#E3AA"
       
android:text="toEndOf"
/>

</
RelativeLayout>

 

 

 

2. 기준 View와 정렬

 

기준 View를 기준으로 좌측, 우측, 상단, 하단의 끝 선을 정렬하는 기능입니다.  예제에서는 각 정렬 별로 View를 하나씩만 표현하여 보았습니다.  끝 선을 맞추기 위하여 모든 View에는 기준이 되는 ViewID 값인 android:layout_alignBottom="@+id/cntText" 을 포함하고 있습니다.

 

attributes

설명

layout_alignTop

기준 View의 위쪽 선에 View의 위쪽 선을 맞춤

layout_alignBottom

기준 View의 아래쪽 선에 View의 아래쪽 선을 맞춤

layout_alignLeft

기준 View의 왼쪽 선에 View의 왼쪽 선을 맞춤

layout_alignRight

기준 View의 오른쪽 선에 View의 오른쪽 선을 맞춤

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:id="@+id/cntText"
       
android:layout_width="wrap_content"
       
android:layout_height="200dp"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:background="#F6D55C"
       
android:text="중앙"
/>

    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignTop="@id/cntText"
       
android:background="#E3AA"
       
android:text="alignTop"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignBottom="@+id/cntText"
       
android:background="#E3AA"
        
android:text="alignBottom"
/>
    <
TextView
       
android:id="@+id/alignLeft"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignLeft="@+id/cntText"
       
android:background="#E3AA"
       
android:text="alignLeft"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_below="@+id/alignLeft"
       
android:layout_alignRight="@+id/cntText"
       
android:background="#E3AA"
       
android:text="alignRight"
/>
</
RelativeLayout>

 

 

정렬 방법에서도 시작과 끝을 이용하여 정렬 해줄 수 있습니다.  추가로 기준 View의 텍스트를 이용하여 정렬 하는 방법도 있습니다.

 

attributes

설명

layout_alignStart

기준 View의 시작 선에 View의 시작 선을 맞춤

layout_alignEnd

기준 View의 끝 선에 View의 끝 선을 맞춤

layout_alignBaseline

기준 ViewText 기준선에 맞추어 정렬

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:id="@+id/cntText"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="50dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:background="#F6D55C"
       
android:text="중앙"
/>

    <
TextView
       
android:id="@+id/alignStart"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignStart="@id/cntText"
       
android:background="#E3AA"
       
android:text="alignStart"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_below="@id/alignStart"
       
android:layout_alignEnd="@id/cntText"
       
android:background="#E3AA"
       
android:text="alignEnd"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_below="@id/alignStart"
       
android:layout_alignBaseline="@id/cntText"
       
android:background="#E3AA"
       
android:text="alignBaseline"
/>
</
RelativeLayout>

 

 

 

3. 부모(Parent) 창 기준 정렬

 

부모 창의 좌측, 우측, 상단, 하단에 View을 정렬하는 방법입니다.  기준이 되는 View는 존재하지 않고 부모 창에 원하는 위치를 잡아 View를 배열하는 방법입니다.  여기서도 상대적 위치가 없으면 모든 View Top으로 모여 겹쳐 보이기 때문에 일부 View에 상대적 위치를 추가하여 표현하였습니다.

 

attributes

설명

layout_alignParentTop

true 이면 부모 창의 위쪽 선에 View의 위쪽 선을 맞춤

layout_alignParentBottom

true 이면 부모 창의 아래쪽 선에 View의 아래쪽 선을 맞춤

layout_alignParentLeft

true 이면 부모 창의 시작 선에 View의 시작 선을 맞춤

layout_alignParentRight

true 이면 부모 창의 끝 선에 View의 끝 선을 맞춤

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:id="@+id/alignParentTop"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignParentTop="true"
       
android:background="#E3AA"
       
android:text="alignParentTop"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignParentBottom="true"
       
android:background="#E3AA"
       
android:text="alignParentBottom"
/>
    <
TextView
       
android:id="@+id/alignParentRight"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignParentRight="true"
       
android:layout_below="@id/alignParentTop"
       
android:background="#E3AA"
       
android:text="alignParentRight"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignParentLeft="true"
       
android:layout_below="@id/alignParentRight"
       
android:background="#E3AA"
       
android:text="alignParentLeft"
/>

</
RelativeLayout>

 

 

부모(Parent)창 정렬에도 시작과 끝을 이용하여 좌측, 우측 정렬을 표현할 수 있습니다.

 

attributes

설명

layout_alignParentStart

true 이면 부모 창의 시작 점에 View의 시작 점을 맞춤

layout_alignParentEnd

true 이면 부모 창의 끝점에 View의 끝 점을 맞춤

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:id="@+id/alignParentStart"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignParentStart="true"
       
android:background="#E3AA"
       
android:text="alignParentStart"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_alignParentEnd="true"
       
android:layout_below="@+id/alignParentStart"
       
android:background="#E3AA"
       
android:text="alignParentEnd"
/>
</
RelativeLayout>

 

 

 

 

4. 중앙 정렬

 

지금까지는 어느 끝부분에 맞추어 정렬하는 방법들을 알아 보았는데 이번에는 그냥 중앙에 위치시키는 방법들입니다.

 

attributes

설명

layout_centerVertical

true 이면 부모 창 세로의 중앙에 위치

layout_centerHorizontal

true 이면 부모 창 가로의 중앙에 위치

layout_centerInParent

true 이면 부모 창 가로와 세로의 중앙에 위치

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
   
xmlns:tools="http://schemas.android.com/tools"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
>

    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerVertical="true"
       
android:background="#E3AA"
       
android:text="Vertical"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerHorizontal="true"
       
android:background="#E3AA"
       
android:text="Horizontal"
/>
    <
TextView
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:padding="10dp"
       
android:textSize="30sp"
       
android:layout_centerInParent="true"
       
android:background="#E3AA"
       
android:text="center"
/>
</
RelativeLayout>

 

- copy coding -

윈도우 7을사용하고 있는데 몇 년 동안 그대로 사용하고 있다 보니 시스템이 꼬였는지 부팅이 되지 않고 완전 먹통이 되었습니다. 예전에는 2, 3년에 한 번 정도 다 밀고 새로 설치를 하였는데 너무 게을렀던 것 같습니다. 윈도우를 설치하고 제일 먼저 하는 일이 백신을 설치하는 것 인데 설치를 하려고 보니 패치가 필요하다고 하네요.

 

시스템이 낡아서 윈도우 10을 설치할 수 없는데 귀찮은 작업을 해야 되겠네요.  그것보다 마이크로소프트에서 윈도우 7 지원을 중단했는데 다운로드가 될지가 더 걱정입니다.

 

패치 프로그램은 아래 주소에서 다운 받으면 됩니다.

https://www.catalog.update.microsoft.com/ViewBasket.aspx

 

바로 검색을 해서 다운을 받아 보도록 합니다.

 

다운 받으려는 패치 정보를 입력하고 [검색] 버튼을 클릭하여 하단 리스트에서 제품 항목 중 윈도우 7을 확인한 후 우측에 [추가] 버튼을 클릭하면 [재거] 버튼으로 변경되면서 검색 버튼 밑에 바스켓 보기로 담기는걸 숫자로 확인할 수 있습니다.

 

나머지 파일도 검색을 해서 바스켓에 담습니다. 이제 검색 버튼 밑에 있는 [바스켓 보기]를 클릭합니다.

 

 

익스플로러만 바스켓 보기가 있습니다.   다운로드 버튼을 클릭하면 다운로드 폴더 지정 팝업 창이 나타납니다.

 

 

그런데 문제는 다운로드 받을 폴더를 선택해야 하는데 찾아보기 버튼을 클릭해도 작동을 하지 않습니다. 마이크로소프트 사이트에서 다운로드 받으려고 했지만 다운로드 받을 곳은 여기밖에 없는 거 같습니다. 어쩌지?

 

하는 수 없이 크롬을 설치하고 다시 다운로드를 시도합니다.

 

 

크롬은 바스켓이 없습니다. 바로 [다운로드] 버튼을 클릭하면 다운로드 창 나타납니다.

 

 

다운로드 위치를 설정하는 것도 없이 바로 클릭해서 다운로드 하면 됩니다. 그런데 다운로드가 되지 않습니다. 컴퓨터가 맛이 갔나? 걱정이 되는군요.

 

일단 설치를 포기하고 며칠 후 다른 브라우저를 사용하기로 결정하고 오페라를 설치해서 똑같은 방법으로 다운로드를 시도해 보았습니다.

 

 

화면이 크롬과 동일하여 좀 걱정이 되는군요. 어쨌든 [다운로드] 버튼을 클릭하여 다운로드 팝업 창을 열어 줍니다.

 

 

파란색 다운로드 링크를 클릭합니다.

 

 

~~~~~! 오페라는 다운로드가 가능 합니다. 

다운로드를 받고 설치를 시작합니다.

 

 

[]를 클릭 해주고

 

 

 

설치가 완료되었습니다.   [지금 다시 시작] 버튼을 클릭하여 윈도우를  다시 시작합니다

 

 

안랩 V3 클릭하면 업데이트가 되고 이제부터 사용이 가능합니다

검색이 하기 귀찮으면 아래 주소를 클릭 해도 검색하는 것과 동일하게   패치 프로그램 리스트가 나오는군요.

http://www.catalog.update.microsoft.com/search.aspx?q=KB4490628

 

http://www.catalog.update.microsoft.com/search.aspx?q=kb4474419

 

 

쓸데없는 정보일까? 내 컴만 이런건가?

 

- copy coding -

개인적으로 프로젝트의 성공 여부는 70%가 디자인이라고 생각합니다. 메인 시안이 어떻게 나오는가에 따라 코딩을 하나도 하지 않았어도 고객이 바라보는 시선이 달라지는 경우가 있습니다.  디자인감각도 있고 구현에 대한 기능적인 부분까지 갖추어 진다면 얼마나 좋을까요.

오늘은 리니어레이아웃의 기본적인 옵션들에 대한 사용 방법으로 버튼, 텍스트, 이미지 등을 원하는 곳에 위치시키는 방법에 대해 공부해 봅니다. 설명을 끝내고 나니 아래 글을 읽을 때 위젯과 뷰(View : TextView, Button 등을 가리킴) 단어를 같이 사용하여 혼란이 있을 수 있으나 동일한 내용입니다.

 

LinearLayout에 사용되는 설정 값들은 아래와 같습니다

 

옵션

설명

orientation

layout의 정렬 방향으로 행 "horizontal", "vertical"을 뜻한다.

baselineAligned

기준점을 설정해서 정렬하는 기능으로 false로 설정하면 baselines 정렬을 하지 않는다.

baselineAlignedChildIndex

linear layout이 다른 layout의 부분일 경우 몇 번째 위젯에. 정렬의 기준을 정할 것인가에 대한 순번으로 0부터 시작 한다.

divider

Drawablebutton 사이의 구분자로 사용 한다.

gravity

뷰 자신은 영역 내에서 특정 위치를 설정 한다

measureWithLargestChild

true 로 설정 하면 layout weight을 가지는 모든 뷰의 크기를 가장 큰 뷰의 크기로 변경 시킨다.

weightSum

위젯에 사용된 weight 들의 합계.

 

1. 방향(orientation)

 

LinearLayoutorientation은 가장 기본적이고 필수적인 설정으로 뷰(view)들을 수직(vertical) 또는 수평(horizontal)으로 정렬 하는데 사용 합니다.

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="horizontal"
   
>

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="View 1" />

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:text="View 2" />

</
LinearLayout>

 

xml 예와 같이 android:orientation="horizontal" 로 설정하면 수평으로 정렬을 하고

 

 android:orientation="vertical" 로 설정하면 뷰들을 수직으로 정렬을 합니다.

 

 

2. baselineAligned

 

baselineAligned는 뷰들을 정렬하기 위해 기준점을 설정하고 그 점을 기준으로 평형을 맞추는 방법입니다.  특별히 설정을 하지 않더라도 기본적으로 true 값을 가지고 있습니다.  그러나 높이가 다른 뷰들이 모이면 높낮이에 차이가 발생합니다.

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="horizontal"
   
android:baselineAligned="true"
   
>

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 1"
/>

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 2"
/>

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 3\n test"
/>

    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 4"
/>
</
LinearLayout>

 

베이스라인 정렬을 취소하면 기본적인 상담 맞춤으로 정렬됩니다.

android:baselineAligned="false"

 

베이스라인 정렬 보다는 이게 더 보기 좋습니다.  그렇지만 모든 레이아웃에 설정 값이 반영되기 때문에 가능하면 레이아웃 중첩에서 사용 하는게 좋을 것 같습니다.

 

 

3. baselineAlignedChildIndex

 

뷰들이 뒤 섞여 있는 경우 베이스 라인 정렬 기준을 뷰들 중 하나를 선택해서 적용 하는데 사용하는 옵션입니다.  순서는 0부터 시작됩니다.

다음과 같이 뷰들이 나열되어 있고 내부에 레이아웃 중첩을 사용하고 있는 경우

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="horizontal"
   
android:baselineAligned="true"
   
>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 1"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 2"
/>
    <
Button
       
android:layout_width="wrap_content"
        
android:layout_height="70dp"
       
android:text="View 3\n test"
/>
    <
LinearLayout
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:orientation="vertical"
       
>
        <
Button
            
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="View 4"
/>
        <
Button
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="View 5"
/>
    </
LinearLayout>
</
LinearLayout>

 

view5 를 기준으로 정렬을 하고 싶다면 view5가 중첩된 레이아웃에서 사용되고 순서가 두 번째 이므로 아래와 같이 선언해 주면 됩니다.

android:baselineAlignedChildIndex="1"

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="horizontal"
   
android:baselineAligned="true"
   
>
    <
Button
       
android:layout_width="wrap_content"
        
android:layout_height="50dp"
       
android:text="View 1"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 2"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="70dp"
       
android:text="View 3\n test"
/>
    <
LinearLayout
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:orientation="vertical"
       
android:baselineAlignedChildIndex="1"
       
>
        <
Button
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="View 4"
/>
        <
Button
           
android:layout_width="wrap_content"
           
android:layout_height="wrap_content"
           
android:text="View 5"
/>
    </
LinearLayout>
</
LinearLayout>

 

자주 사용 되지는 않을 것 같군요.

 

 

4. divider

 

divider는 말 그대로 나누는 건데 뷰 중간에 이미지를 사용하여 좀 더 레이아웃을 예쁘게 꾸며 주는 옵션입니다.  사용하려면 미리 이미지를 만들어 @drawable에 추가를 해야 합니다.   저는 대충 기존에 있는 아이콘을 사용하여 구현을 해 보았습니다.   최악의 디자인이 되겠군요.

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="vertical"
    
android:divider="@mipmap/ic_launcher"
   
android:showDividers="middle"
   
>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 1"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="50dp"
       
android:text="View 2"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="70dp"
       
android:text="View 3\n test"
/>
</
LinearLayout>

 

디바이더를 사용하면 뷰 사이에 이미지 태그를 사용하여 직접 추가하지 않아도 됩니다. 사용 예에서는 중간에만 이미지를 추가 하였는데 구분자를 이용하여 시작과 끝 부분에도 추가가 가능합니다

android:showDividers="middle|beginning|end"

 

 

5. gravity

 

뷰를 정렬 할 때 화면이 아래쪽으로 중력이 작용한다고 가정하여 뷰들을 정렬하는 옵션으로 구분자(|)를 사용하여 여러 개를 설정할 수 있습니다.

 

 

Constant

Value

Description

bottom

50

크기 변화 없이 containerbottom에 정렬

center

11

크기 변화 없이 container의 가로 세로 방향의 중앙에 정렬

center_horizontal

1

크기 변화 없이 container의 가로 방향의 중앙에 정렬

center_vertical

10

크기 변화 없이 container의 세로 방향의 중앙에 정렬

clip_horizontal

8

horizontal gravity를 기준으로 container의 경계를 벗어나는 부분을 잘라 낸다.  left gravity의 경우 오른쪽을 right의 경우 왼쪽을 잘라 낸다. 양쪽에 경우에는 양쪽 모두 잘라 낸다.

clip_vertical

80

clip_horizontal과 반대되는  옵션이다

end

800005

크기 변화 없이 containerend에 정렬

fill

77

위젯의 크기를 container의 크기에 맞추어 확장한다

fill_horizontal

7

container의 크기에 맞추어 위젯의 가로 크기를 확장한다

fill_vertical

70

container의 크기에 맞추어 위젯의 세로 크기를 확장한다

left

3

크기 변화 없이 container의 좌측에 정렬

right

5

크기 변화 없이 container의 우측에 정렬

start

800003

크기 변화 없이 container의 시작 위치에 정렬

top

30

크기 변화 없이 container의 위에 정렬

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="vertical"
   
android:gravity="center"
   
>

    <
Button
       
android:layout_width="wrap_content"
        
android:layout_height="wrap_content"
       
android:text="View 1"
/>

</LinearLayout>

 

 

6. measureWithLargestChild

 

뷰의 높이가 다양할 경우 지저분한 모양을 갖게 됩니다. 이런 경우 가장 큰 뷰의 높이에 모두 맞추어 좀 더 통일된 이미지를 얻는데 사용할 수 있습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="wrap_content"
   
android:orientation="vertical"
   
>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="60dp"
       
android:layout_weight="1"
       
android:text="View 1"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="90dp"
       
android:layout_weight="1"
       
android:text="View 2"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="70dp"
       
android:layout_weight="1"
       
android:text="View 3\n test"
/>
</
LinearLayout>

 

높낮이가 다양한 경우 아래와 같이 옵션을 추가해 줍니다.

android:measureWithLargestChild="true

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="wrap_content"
   
android:orientation="vertical"
   
android:measureWithLargestChild="true"
   
>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="60dp"
       
android:layout_weight="1"
       
android:text="View 1"
/>
    <
Button
       
android:layout_width="wrap_content"
        
android:layout_height="90dp"
       
android:layout_weight="1"
       
android:text="View 2"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="70dp"
       
android:layout_weight="1"
       
android:text="View 3\n test"
/>
</
LinearLayout>

 

 

7. weightSum

 

뷰의 높이를 숫자가 아닌 비율로 설정할 수 있습니다. 이 떄 비율의 총 합을 몇을 기준으로 할 것인지 설정 하는 것으로 100을 기준으로 했다면 비율의 총 합은 100이 되어야 합니다.  1 이라면 비율을 0.5, 0.2... 이렇게 되겠지요.

weightSum 없이 layout_weight을 사용해서 크기를 분할 하여 사용 할 수도 있습니다.

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="match_parent"
   
android:layout_height="match_parent"
   
android:orientation="vertical"
   
android:weightSum="100"
   
>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_weight="50"
       
android:text="View 1"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_weight="30"
       
android:text="View 2"
/>
    <
Button
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:layout_weight="20"
       
android:text="View 3\n test"
/>
</
LinearLayout>

 

신규 에디터로 글을 쓰고 있는데 글을 쓰기 힘든걸 넘어 더이상 글을 쓰기 싫게 만드는 군요. -_-;;;

flash 지원 중단 때문인지는 모르겠지만 사진 편집 기능 빼고 그냥 예전걸로 글쓰게 해줌 안되나...

 

- copy coding -

손이 불편하거나 많이 아픈 경우 집적 타이핑하기 어려운 상태에 놓이게 됩니다.  이런 경우 말로만 타이핑을 할 수 있다면 참 편리하겠죠.  무료이면서 성능도 괜찮은 프로그램을 구글 크롬에서 사용할 수 있습니다.   제가 자주 사용하는 프로그램은 VoiceNote II 입니다.  

설치 및 사용법이 간단 하고 성능도 나쁘지 않은 편입니다. 코딩도 말로만 해 보려고 하였지만 좀 더 많은 고민을 해봐야 가능할 거 같습니다.   오늘은 간단한 설치와 사용법만 소개해 드립니다.

Chrome에서 검색을 하거나 웹 스토어에서 VoiceNote를 검색하면 쉽게 찾을 수 있습니다.

 

설치는 우측에 있는 [Chrome에 추가] 버튼을 클릭하면 설치를 진행 하는지 확인 창이 나타납니다.

 

팝업 창에서 [앱 추가] 버튼을 클릭 합니다.  그리고 VoiceNote II 아이콘을 클릭하면  프로그램이 실행됩니다.

 

나중에 VoiceNote II를 사용 하려면 크롬을 열고 주소 창에 [chrome://apps]를 입력하면 크롬에 추가된 확장 프로그램들을 볼 수 있습니다

 

프로그램이 실행되면 다음과 같은 화면을 볼 수 있습니다.

 

프로그램의 하단과 우측에 여러 가지 기능의 아이콘이 있습니다.  가장 먼저 해야 될 일은 하단에 있는 지구 모양의 아이콘을 클릭하여 사용하려는 언어를 선택해야 합니다.

 

 

 

그리고 음성을 문자로 전환하기 위해서는 우측 상단에 있는 마이크 모양을 클릭 하는데 최초에는 마이크 사용 권한을 요청 받습니다.

 

 

[허용] 버튼을 클릭하고 프로그램에서 우측의 [마이크] 모양 아이콘을 클릭하고 마이크의 색이 붉은색으로 활성화 된 경우에 말을 하면 화면 우측에 회색으로 먼저 표시가 되고 잠시 후에 검은색으로 테스트가 나타납니다. 한동안 말을 하지 않으면 다시 마이크가 시퍼런 색으로 변하게 되니 그때는 다시 마이크 아이콘을 눌러 붉은색으로 변경하세요.  일단 한글로 말을 해 보았습니다.

 

한글과 영어를 같이 입력할 수 있는 방법이 있을까 생각하고 중간에 잉글리쉬를 말하고 영어로 말했더니 영문으로 찍힙니다중간중간 그러지 않는 경우도 있습니다.  여러 번 테스트 해보니 문장은 잘 찍히는데 단어를 말하면 한글로 번역 되는 것 같습니다.  영어는 언어에서 영어로 선택해서 사용하는게 편리합니다.  몇번 사용해 보았는데 무료로 음성을 텍스트로 출력하는데 훌륭한 프로그램으로 생각 됩니다.

 

컴퓨터에서 나는 소리 텍스트로 변환 하기

 

컴퓨터에서 mp3 또는 동영상의 목소리를 텍스트로 저장하려면 설정을 변경해야 합니다.

Windows 버전에 조금 따라 다를 수 있겠지만 모니터 우측 하단에 소리 모양의 아이콘에 마우스를 대고 마우스 우측 버튼을 클릭 하면

 

팝업 메뉴가 나오는데 여기에서 소리(S)를 클릭하면 설정 창이 나타납니다.

 

 

소리 설정 창에서 [녹음] 탭을 선택하면 대부분 위와 같은 모습일텐데요. 마이크가 기본으로 되어 있어서 밖에서 나는 소리만 텍스트로 변환됩니다.

컴퓨터에서 나오는 소리를 녹음 하려면 아래쪽 [스테레오 믹스]가 활성화 되어 있어야 하는데요.

[스테레오 믹스]에 마우스를 올려놓고 우측 버튼을 클릭 합니다.

 

 

 

그럼 팝업 메뉴가 나오는데 여기서 [사용]을 선택해 줍니다.

그리고 하단에 [적용]을 클릭 하고요.

 

 

 

그럼 이제부터는 [스테로오 믹스]가 기본 장치가 되고 우측에 소리를 듣고있는 볼륨 표시가 보이죠?

이제 동영상이나 mp3를 틀어놓으면

 

이렇게 잘 텍스트로 변환 됩니다.

youtube를 켜고 여러가지 테스트 해보니 시끄러운 음악이 있는 노래는 잘 변환하지 못하는것 같습니다. 그런건 그냥 가사를 찾아보는게 좋을것 같아요.

다시 내 목소리를 텍스트로 변환 하려면 위에서 변경한 설정을 다시 마이크로 해줘야합니다.

 

- copy coding -


1···26272829303132···118

+ Recent posts