profile image

L o a d i n g . . .

반응형


인텐트를 활용하여 뷰를 전환해 보자

switch a view using Intent


인텐트는 다른 액티비티를 띄우거나 기능을 동작시키기 위한 수단으로 사용된다.
인텐트의 기본 구성 요소로는 Action과 Data가 있는데, Action은 수행할 기능., Data는 액션이 수행될 대상 데이터를 의미한다.

나는 간단하게 버튼을 클릭 시 이미지가 보이게 뷰의 전환이 되게 해 보았다.

Intent is used when show other Activity and to activate the function
basic component of Intent is Action and Data, Action means perform and Data means target data

I am simply show view when clicked button 

<?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





반응형
복사했습니다!