Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 공부

2. 텍스트 출력 본문

언어 공부/android

2. 텍스트 출력

방구석개발입문 2021. 6. 3. 01:35
텍스트 출력의 기본 원리

텍스트는 정해진 레이아웃에 따라 출력이 됩니다.

1) strings.xml에서 텍스트 리소스들을 정의

2) activity_main.xml에서 레이아웃을 설계하며 출력 위치에

    TextView클래스와 출력 문자 텍스트 리소스 설정 (화면 설계)

3) MainActivity.java클래스에서 액티비티를 만들고 activity_main.xml을 출력 (화면 출력)

 

 

 

레이아웃 유형

1) 기본레이아웃

- LinearLayout(리니어 레이아웃) : 콘텐츠를 vertical(수평)or horizontal(수직)으로 배치  

- RelativeLayout(렐러티브 레이아웃) : 개체들 간의 상대적인 위치에 따라 배치 >>기본 레이아웃

- Web View(웹 뷰) : 웹 문서 출력

 

2) 어댑터(레이아웃과 그 레이아웃에 출력될 데이터를 바인딩하는 클래스)

- List View : 단일 열들을 목록으로 출력

- Grid View : 정해진 수의 열과 행의 격자모양으로 출력

 

3) ConstraintLayout(컨스트레인트 레이아웃)

LinearLayout과 RelativeLayout의 사용에 대한 단점을 보완한 레이아웃

 

 

 

margin과 padding

마진과 패딩은 여백이라는 비슷한 의미를 지닌다

margin

:TextView를 기준으로 바깥의 뷰 콘테이너(Layout)간의 여백을 의미

(>>바깥.. 글자 배경색과 레이아웃간의 여백)

 

padding

:뷰와 그 내용물사이의 여백

(>>안...글자와 글자배경간의 여백)

 

둘 모두 상하좌우 다르게 지정이 가능합니다.

layout_marginTop, layout_marginBottom, layout_marginLeft, layout_marginRight

paddingTop, paddingBottom, paddingLeft, paddingRight 

 

 

 

match_parent와 wrap_content

뷰의 높이와 너비를 설정하는 layout_width와 layout_height에서의 속성값으로 사용됨

match_parent : 스마트폰의 가로와 세로

wrap_content : Layout내의 콘텐츠(ex.TextView)크기만큼

 

 

 

<intent-filter>

앱 실행시 최초로 실행되는 액티비티로 설정하기 위해서는

<intent-filter>내의 action"android.intent.action.MAIN"으로 설정해야 하고

 

앱 목록에서 아이콘을 통해 실행하려면 

<intent-filter> 내의 category"android.intent.category.LAUNCHER" 로 설정해야 합니다.

 

 

 


 

 

 

 

 

 

 

● 프로젝트 만들기

1. 텍스트 리소스 편집

strings.xml
<resources>
<string 
name="app_name">Poem</string>

<string name="body01">
계절이 지나가는 하늘에는\n
가을로 가득 차 있습니다.\n\n
나는 아무 걱정도 없이\n
가을 속의 별들을 다 헤일 듯합니다.
</string>
</resources>


속성값 body01을 추가하고 속성값에 대응하는 데이터 제목을 할당합니다.

 

 

 

2. 화면설계

activity_main.xml에 레이아웃을 정의하고 

TextView에 strings.xml에 정의된 속성값을 설정하고, 글자크기,출력위치,글자색, 글자배경색 등을 지정한다.

(strings.xml에 설정안하고 여기서 바로 데이터 할당도 가능합니다.)

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"   //>>>>>>>>>>>>수직배치
tools:context=".MainActivity">

<TextView
android:layout_width="match_parent"        //>>>>>>>>>>>>뷰의높이를 의미
android:layout_height="wrap_content"      //>>>>>>>>>>>>뷰의너비를 의미
android:text="별 헤는 밤"                       //>>>>>>>>>>>>데이터값 할당
android:background="#B3A38B"                       //>>>>>>>>>>>>글자 배경색 설정
android:textColor="#553404"                       //>>>>>>>>>>>>글자 색 설정
android:layout_margin="5dp"                       //>>>>>>>>>>>>마진 크기 설정
android:textSize="16sp"                       //>>>>>>>>>>>>글자 크기 설정
android:textStyle="bold"                       //>>>>>>>>>>>>글자스타일설정
android:gravity="center"                       //>>>>>>>>>>>>중앙위치 출력
/>

<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="윤동주"
android:layout_margin="3dp"
android:textColor="#1C501E"
/>

<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="3dp"
android:ellipsize="marquee"                       //>>>>>>>>>>>>글자출력효과(수평으로 흘러가게)
android:text="@string/body01"               //>>>>>>>>>>>>strings의 body01속성값 설정

/>
</LinearLayout>

 

 

3. 화면출력

앱 실행시 AndroidManifest.xml에서  메인액티비티 자바 클래스로 설정된 MainActivity.java가 실행

메인 액티비티 자바 클래스에는 자동으로 호출되는 onCreate() 메소드를 정의해야 합니다.

그리고 일반적으로 기본적인  기능인 액티비티 생성과 화면출력을 구현하게 됩니다.

 

AppCompatActivity클래스에는 액티비티 생성(onCreate())와 화면출력(setContentView()) 메소드가 정의되어 있음

따라서 MainActivity는 AppCompatActivity클래스를 부모 클래스로 하여 기능을 상속받아 사용합니다.

 

그런데 MainActivity에서 자동으로 호출되는 onCreate()메소드가 부모 클래스의 메소드의 이름과 같아 충돌방지해야함

>>이름은 그대로 두고 재정의하여 사용

부모 클래스의 메소드로 실행하는 것을 나타내기 위해 super.onCreate() 메소드로 함

 

화면 출력은 상속받은 setContentView()메소드 사용하여 activity_main.xml에 정의된 화면설계를 출력합니다.

R.layout.activity_main 에서 R은 res를 의미합니다.

MainActivity.java
package my.poem;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {      //>>>>>>상속받음

@Override
protected void onCreate(Bundle savedInstanceState) {      //>>>>>>자바클래스 실행시 자동호출
super.onCreate(savedInstanceState);                              //>>>>>>액티비티 생성
setContentView(R.layout.activity_main);                          //>>>>>>화면출력(activity_main.xml에 살계한 화면)
}
}

 

 

 

4. 환경 설정

AndtoidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="my.poem">    

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Poem_20171485">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />     //해당액티비티를 앱 실행시 최초 실행 액티비티로 설정

<category android:name="android.intent.category.LAUNCHER" />   //앱목록에서 아이콘을 통해 실행시설정
</intent-filter>
</activity>
</application>

</manifest>

 

 

'언어 공부 > android' 카테고리의 다른 글

3. 다중 액티비티 활용 앱  (0) 2021.06.03
안드로이드 컴포넌트(구성요소)  (0) 2021.06.03
Intent (인텐트)  (0) 2021.06.03
1. 앱 프로젝트 구조  (0) 2021.06.02