본문 바로가기
안드로이드

[안드로이드] 사용자 인터페이스 기초

by 호아나트 2019. 10. 7.
반응형

□ UI를 작성하는 3가지 방법

    - XML로 기술

<?xml version="1.0" encoding="utf-8"?>

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
   
    <RatingBar
        android:id="@+id/ratingbar"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:numStars="5"
        android:stepSize="1.0"/>
</LinearLayout>

    - 코드로 기술

package com.example.codemview;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout container = new LinearLayout(this);
        container.setOrientation(LinearLayout.VERTICAL);

        Button b1 = new Button(this);
        b1.setText("첫번째 버튼");
        container.addView(b1);
        
        setContentView(container);
    }
}

    - 비주얼 도구 사용

□ 뷰(View)

    모든 뷰들의 부모 클래스

    View 클래스의 필드나 메소드는 모든 뷰에서 공통적으로 사용가능

 - id  : 뷰의 식별자

 - 뷰의 위치와 크기

match_parent 부모의 크기를 꽉 채움(=fill_parent)
wrap_parent 뷰가 나타내는 내용물의 크기에 맞춤

 - 색상 : 16진수 RGB값 표시

 - 뷰의 크기 단위

px(pixels)

화면의 실제 픽셀을 나타냄

권장 단위 X -> 장치마다 화면의 밀도가 다르기 때문

dp(density-independent pixels)

160dpi에서 하나의 물리적 픽셀을 말함(160dp:1inch)

화면의 밀도가 다르더라도 동일한 크기로 표시

sp(scale-independent pixels)

화면의 밀도와 사용자가 지정한 폰트 크기에 영향 받아 표현

폰트 크기를 지정할때 추천

pt(points) 1/72 인치 표시
mm(millimeters) 밀리미터
in(inches) 인치

□ 마진과 패딩

  - 패딩

   오브젝트 내의 여백(내부여백)

<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"
    android:paddingBottom="@dimen/activity_vertical_margin" //내부여백 부여
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

  - 마진

    화면과의 여백(외부여백)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginStart="16dp"  //여백을 16dp씩 부여
    android:layout_marginLeft="16dp"
    android:layout_marginTop="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:layout_marginBottom="16dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

 

반응형

댓글