인텐트를 활용하여 뷰를 전환해 보자
switch a view using Intent
<?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">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="view"
android:id="@+id/image1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="view"
android:id="@+id/image2"/>
</LinearLayout>
레이아웃은 간단하게 LinearLayout으로 각각 ID가 부여된 2개의 버튼만 있다.
LinearLayout의 오리엔테이션은 vertical로 했다
Layout made simply LinearLayout that each granted ID two button
orientation of Linearlayout is vertical
package com.example.minki.study;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
private Button image1;
private Button image2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 버튼1과 2의 아이디를 가져온다.
// bring ID of Btton1 and Button2
image1 = (Button) findViewById(R.id.image1);
image2 = (Button) findViewById(R.id.image2);
// 버튼1 클릭시 발생하는 이벤트 → Image_view1의 뷰를 보여준다(뷰 이동)
// Occurs when button1 is clicked → Show Image_view1
image1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 인텐트 정의 → new Intent(현재 뷰, 이동할 뷰)
// define of Intent → new Intent(this view, show to view)
Intent intent = new Intent(MainActivity.this, Image_view1.class);
// 인텐트 실행
// start Intent
startActivity(intent);
}
});
image2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Image_view2.class);
startActivity(intent);
}
});
}
}
메인 액티비티에서 아이디를 통하여 버튼을 가져온다.
그 버튼을 클릭시 이벤트가 발생할 수 있도록 ClickListener을 정의했다.
ClickListener에서 화면에 전환이 이루어 질 수 있게 Intent를 정의하였다
Intent를 실행시키기 위해서는 마지막에 startActivity() 메소드를 통해 실행되도록 한다.
버튼이 2개이고 각각 다른 화면을 보여줘야 하니 때문에 2개의 메소드를 만들었는데,
후에는 Switch문을 이용하여 하나로 만들 수 있을 듯 하다.
it get the button through the ID in the MainActivity
ClickListener define that occur event when clicked button .
Intent defined when switch view in ClickListener.
To run the Intent, make it run through the startActivity() method at the end.
I have two buttons and i need to show a different screen, so i created two mehtods,
later, it seems to be possible to make one by using the switch
<?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">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/dahyun"
android:layout_gravity="center"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"
android:id="@+id/back"
android:layout_gravity="center"/>
</LinearLayout>
이미지가 보일 레이아웃이다.
it is layout that show image
<?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">
<ImageView
android:layout_width="wrap_content"
android:layout_height="419dp"
android:layout_gravity="center"
android:src="@drawable/jung" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Back"
android:id="@+id/back"
android:layout_gravity="center"/>
</LinearLayout>
이미지가 보일 두번째 레이아웃이다.
it is second layout that show image
package com.example.minki.study;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
public class Image_view1 extends AppCompatActivity {
private Button back;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.image_view1);
// 넘어온 인텐트를 받는다. → new Intent(현재 뷰)
// Receive view → new Intent(this view)
Intent intent = new Intent(this.getIntent());
// 돌아가기 버튼 아이디를 가져온다
// bring ID of back
back = (Button) findViewById(R.id.back);
// 버튼 클릭시 발생하는 이벤트 → 다시 메인 뷰를 보여준다
// Occurs when button is clicked → Show activity_main
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Image_view1.this, MainActivity.class);
startActivity(intent);
}
});
}
}
MainActivity에서 보낸 인텐트는 받을 엑티비티이며 이미지가 보일 뷰를 띄워줄 엑티비티이다.
인텐트를 받기 위해서는 다시 인텐트는 생성해야 한다.
new Intent()에서는 get을 이용하여 넘어온 Intent를 받는다.
an Intent sent from MainActivity is an activity to receive the view from which the image will be displayed
to receive an intent, must create an intent again
in new intent() method, get an imported intent using get
'[# 2]…My DevelopStory' 카테고리의 다른 글
안드로이드 개인 세미 프로젝트(2) - 스터디 스탑워치 ~ Android personal SemiProject - Study StopWatch (0) | 2019.02.18 |
---|---|
안드로이드 개인 세미 프로젝트(1) - 스터디 스탑워치 ~ Android personal SemiProject - Study StopWatch (0) | 2019.02.17 |
안드로이드 스튜디오 리스트뷰 사용하기 - Using the Android Studio ListView (0) | 2019.02.12 |
스크롤뷰를 이용하여 스크롤 만들기 ~ Make a scroll Using ScrollView (0) | 2019.02.08 |
안드로이드 공부 1회 ~ Android 1 time (0) | 2019.01.21 |