java 코드에서 화면 구성

2021. 12. 22. 17:23·안드로이드 with 자바/자잘한 문제들

1. setContentView

- 이 메서드가 호출되면 자신의 레이아웃 파일을 파라미터로 전달하여 액티비티라 불리는 소스 파일과

연결이 된다.

 

 

 

2. java 코드에서 레이아웃 추가하기

- 따로따로 분리하여 작성하면, 레이아웃의 구성을 바꿀 때 java 소스 코드를 건들 필요가 없는 

장점이 있다.

 

- 그러나 화면 레이아웃을 미리 못 만들거나 바로바로 필요할 때마다 레이아웃을 만들어야 할 경우

java 소스 코드에서 구성할 수도 있다.

 

- 예를 들면, 어떤 이벤트가 일어날 경우, 유형에 따라 화면 구성을 바꾸는 것이 있다.

 

 

- 아래의 코드를 보자.

package com.example.exercise001;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        LinearLayout mainLinearLayout = new LinearLayout(this);
        mainLinearLayout.setOrientation(LinearLayout.VERTICAL);

        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.MATCH_PARENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );

        Button btn1 = new Button(this);
        btn1.setText("Button");
        btn1.setLayoutParams(params);
        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.naver.com"));
                startActivity(intent);
            }
        });
        mainLinearLayout.addView(btn1);

        setContentView(mainLinearLayout);
    }
}

(키워드 this가 눈에 보일 것인데, 이것은 Context 객체가 전달된 것이다.)

(즉, new 연사자를 이용하여 뷰 객체를 만들 떄는 항상 Context 객체가 전달 되어야 한다.)

(다시 말해 모든 UI 객체들은 Context 객체를 전달 받도록 되어 있는 것이다.)

(AppCompatActivity 클래스는 Context를 상속하므로 이 클래스 안에서는 this를 Context 객체로 사용할 수 있다.)

(만약 상속받지 않았더라면, getApplicationContext라는 메서드를 호출한다.)

 

(레이아웃에 뷰를 추가하고 싶다면 addView() 메서드를 사용하면 된다.)

 

(이렇게 직접 코드를 넣은 후, 마지막에 setContentView 메서드에 파라미터로 레이아웃을 넣어주면 완성이 된다.)

 

 

 

'안드로이드 with 자바 > 자잘한 문제들' 카테고리의 다른 글

BitmapDrawable을 통한 스크롤 뷰 구현  (0) 2022.05.11
부분 레이아웃을 전체 레이아웃에 메모리에 객체화 시키기.  (0) 2022.01.11
Toast 직접 만들어 표시하기.  (0) 2022.01.06
[3] 두 개의 이미지 주고 받기.  (0) 2021.12.28
[4] SMS 입력 화면 만들고 글자의 수 표시하기  (0) 2021.12.28
'안드로이드 with 자바/자잘한 문제들' 카테고리의 다른 글
  • 부분 레이아웃을 전체 레이아웃에 메모리에 객체화 시키기.
  • Toast 직접 만들어 표시하기.
  • [3] 두 개의 이미지 주고 받기.
  • [4] SMS 입력 화면 만들고 글자의 수 표시하기
백_곰
백_곰
  • 백_곰
    친절한 코딩
    백_곰
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘 (with JAVA)
        • 기본 알고리즘
        • 완전 탐색
        • 분할 정복 알고리즘
        • 동적 계획법
        • 탐욕법
        • 코딩 테스트 기출 문제
        • 코드트리 조별과제
      • 백준 (with JAVA)
        • 완전 탐색
        • 분할 정복
        • 그 외
      • 자바
        • 개발 환경 구축하기
        • 팁
        • 기본적인 개념
        • 컬렉션 프레임워크
        • 프로세스와 쓰레드
        • 지네릭스
        • 람다식
        • 스트림
        • 입출력 IO
        • 네트워킹
        • 열거형(enums)
        • java.lang 패키지
        • java.time 패키지
        • 유용한 클래스들
        • 형식화 클래스들
      • 안드로이드 with 자바
        • 응용 문제들
        • 자잘한 문제들
        • 오류 보고서
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      ServerSocket
      다형성
      스트림
      file
      outputstream
      TCP 소켓 프로그래밍
      Collections Framework
      serializable
      Arrays
      코드트리
      제자리 정렬
      java.time 패키지
      중간연산
      snail
      선택 정렬
      코딩테스트
      역직렬화
      알고스팟
      소켓 프로그래밍
      람다식
      자바 개념
      문자 기반 스트림
      코딩트리조별과제
      InputStream
      불안정 정렬
      안정 정렬
      map()
      java.lang패키지
      안드로이드 스튜디오
      유용한 클래스
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    백_곰
    java 코드에서 화면 구성
    상단으로

    티스토리툴바