오늘이라도

[Android] 4. 새 화면 띄우기, Linear Layout ① 본문

취업성공패키지 SW 개발자 교육/Android

[Android] 4. 새 화면 띄우기, Linear Layout ①

upcake_ 2020. 5. 11. 09:35
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 

gif 파일은 클릭해서 보는 것이 정확합니다.


 - 새 화면 띄우기 - 

▲새 화면 띄우기 버튼 만들기

 - 버튼을 만들고 id는 btnNew, text는 '새 화면 띄우기', textsize는 24로 하였다.

 

▲새 화면 만들기 ①

 - 안드로이드 스튜디오에서 화면을 세는 단위를 Activity라 한다.

 - MainActivity가 있는 패키지 우클릭 - New - Activity - 원하는 Activity 선택

 

▲새 화면 만들기 ②

 - 액티비티 이름을 정해주고 Finish를 누른다.

 

▲새 화면 만들기 ③

 - 액티비티를 만들면 xml도 같이 만들어진다.

 

▲Constraint Widget : 위치, 마진, Contsraints 조정

 - 속성 탭의 Constraint Widget으로 요소의 위치, 마진, Constraints를 조정할 수 있다.

 

▲gravity : 정렬 위치 설정

 - 속성 탭의 gravity로 정렬 위치를 설정할 수 있다.

 

▲background : 배경 색 설정

 - 속성 탭의 background로 배경 색을 설정할 수 있다.

 

▲textColor : 문자 색 설정

 - xml의 코드 부분에 android:textColor를 추가하여 문자 색을 설정할 수 있다.

 - 색깔 코드가 있는 라인의 라인 번호 옆 부분에서 해당하는 코드의 색깔을 알 수 있다.

 

package com.example.my01_helloworld;

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

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    Button btnCall, btnNew; // 전역 변수
    EditText etPhoneNum; // 전역 변수 정의만 할 수 있다.

    @Override
    protected void onCreate(Bundle savedInstanceState) { // onCreate() : 메모리에 등록하면서 작동하는 메서드
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); // setContentView() : 매개 변수를 화면에 출력하는 메서드
        // R. : resource(res)의 약자

        etPhoneNum = findViewById(R.id.etPhoneNum);

        btnCall = findViewById(R.id.btnCall); // 지역 변수
        // btnCall이란 id를 가진 객체를 찾아서 btnCall 변수에 입력한다.
        btnCall.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String phoneNum = "tel:" + etPhoneNum.getText().toString();

//                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:010-1234-5678"));
                Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(phoneNum));
                startActivity(intent);
            }
        });

        btnNew = findViewById(R.id.btnNew);
        btnNew.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(getApplicationContext(), Sub1Activity.class);
                // getApplicationContext() : 현재(메인)의 환경(Context)을 호출한 곳으로 넘겨줌
                // Sub1 화면을 띄운다.
                startActivity(intent);
            }
        });
    }
    public void btn1Clicked(View view) {
        Toast.makeText(this, "버튼1 클릭!", Toast.LENGTH_SHORT).show();
        // context : 어디에 있는지 환경을 지정
        // this : 현재 참조중인 MainActivity를 지정
        // LENGTH_SHORT : 2 ~ 3초 정도 보여줌
        // LENGTH_LONG : 5초 정도 보여줌
    }

    public void btn2Clicked(View view) {
        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://m.naver.com"));
        startActivity(intent);
        // Intent : 무언가 새 창을 띄울때는 Intent를 사용한다.
    }


}
package com.example.my01_helloworld;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class Sub1Activity extends AppCompatActivity {

    Button btnMain; // ① 버튼을 선언한다.

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sub1);

        btnMain = findViewById(R.id.btnMain); // ② 버튼을 찾는다.
        btnMain.setOnClickListener(new View.OnClickListener() { // ③ 버튼의 기능을 지정한다.
            @Override
            public void onClick(View v) {
                finish(); // 서브 창이 닫힌다.
            }
        });
    }
}

▲새 화면 띄우기 버튼 작동 화면

 

 

- Linear Layout ① -

▲새 프로젝트 만들기 ①

 - File - New - New Project에서 새 프로젝트를 만들 수 있다.

 

▲새 프로젝트 만들기 ②

 - 프로젝트의 이름, 언어, 최소 SDK를 설정한다.

 

 

▲LinearLayout 설정

 - xml의 코드부에서 사진과 같이 LinearLayout을 설정한다.

 

▲wrap_content, match_parent

 - 속성 탭의 Layout에서 요소의 너비와 높이를 설정할 수 있다.

 - wrap_content : 해당 요소의 내용물 크기만큼 설정

 - match_parent : 부모 레이아웃의 너비, 높이만큼 설정

 

반응형