๊ฐค๋ฌ๋ฆฌ ์ดํ์ ์ธ ๋ ์ฌ์ง์ ๋๋ฅด๋ฉด ๊ทธ ์ฌ์ง์ด ์ปค์ง๋ฉด์ ํ๋ฉด ์ ์ฒด๋ก ํ์๊ฐ ๋๋๋ฐ ์ฌ์ฉ์๊ฐ ๋ณด๊ธฐ์๋ ํ ํ๋ฉด์์ ๊ทธ๋ฅ ์ฌ์ง๋ง ์ด๋ํ ๊ฒ ์ฒ๋ผ ๋ณด์ฌ๋ ์ค์ ๋ก๋ ์กํฐ๋นํฐ์ ์ด๋์ด ์ผ์ด๋ ์ํฉ์ด๋ค. ํ์ง๋ง ์ฌ์ฉ์๋ ์ ๋๋ฉ์ด์ ์ ์์ฐ์ค๋ฌ์ด ์ด๋ ๋๋ถ์ ํ๋ฉด ์ ํ์ ์ ๋๋ก ์ธ์งํ์ง ๋ชปํ ๊ฒ์ด๋ค. ๋กค๋ฆฌํ๋ฒ์ ์ดํ, ์ฌ์ฉ์๊ฐ ์ฑ์ ์ฌ์ฉํ๋ ์ค ์กํฐ๋นํฐ๊ฐ ์ ํ์ ์ต๋ํ ์ธ์งํ์ง ๋ชปํ๋๋ก ์๊ฐ์ ์ฐ์์ฑ์ ๋ถ์ฌํ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์๋ค . ๊ทธ ๊ธฐ๋ฅ์ด ๋ฐ๋ก Trasition Animation์ด๋ค.
์ด๋ฒ์๋ ์๋๋ก์ด๋์ ์กํฐ๋นํฐ๊ฐ ํ๋ฉด ์ ํ ์ค ์ํ๋ ๋ทฐ๊ฐ ์ ๋์ ์ผ๋ก ์์ง์ด๊ฒ๋ ์ ๋๋ฉ์ด์ ์ ๋ถ์ฌํ๋ ์์ ์ ํด๋ณผ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ์กํฐ๋นํฐ๊ฐ ์ ๋๋ฉ์ด์ ์ด ์ ์ฉ์ด ๋๋ค๋ฉด ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฉด์์๋ ํธ๋ฆฌํ๋ฉด์ ๋ณด๊ธฐ์๋ ๋งค์ฐ ์์ ์ ์ด๊ฒ ๋ ๊ฒ์ด๋ค.
์์
์ฐ์ ์กํฐ๋นํฐ1์ ๋ ์ด์์์ ์ค๋นํด์ผ ํ๋ค.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="100dp"
android:layout_height="100dp"
android:id="@+id/iv_title"
android:layout_centerInParent="true"
android:src="@drawable/androidimage"
android:transitionName="imgTransition"
/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"
android:id="@+id/btn_Start"
android:layout_below="@+id/iv_title"
android:layout_centerHorizontal="true"/>
</RelativeLayout>
๊ทธ๋ฆฌ๊ณ ์ด๋๋ ์กํฐ๋นํฐ2์ ๋ ์ด์์์ ์ค๋นํ๋ค.
activity_main2.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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="200dp"
android:layout_height="200dp"
android:layout_marginTop="20dp"
android:id="@+id/iv_title"
android:layout_centerHorizontal="true"
android:src="@drawable/androidimage"
android:transitionName="imgTransition"
/>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:textSize="17dp"
android:text="this is an andorid image for my trasition test. \n this is an andorid image for my trasition test. \n this is an andorid image for my trasition test. \n"
android:textAlignment="center"
android:layout_below="@+id/iv_title"/>
</RelativeLayout>
์ ๋ณด๋ฉด ๊ฐ ๋ทฐ์ ImageView ๊ฐ ์๊ณ
๋ ๋ทฐ์ ์์ฑ์ ๋ณด๋ฉด src๊ฐ ๊ฐ์ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ค์ํ ์์ฑ์ด ํ๊ฐ ๋ ์๋๋ฐ
android:transitionName
์ด ์์ฑ์ ๋ ๋ทฐ์ ์ ์ํด ๋๊ณ ์ด๋ฆ๋ ๋๊ฐ์ด ํด์ผ ํ๋ก๊ทธ๋จ์ด ์ด๋ฅผ ๊ฐ์ ํธ๋์ง์ ์ผ๋ก ์ธ์ํ๊ณ ์๋ก ์ด๋ํ๋ ๋ฏํ ์ฐ์ถ์ด ๊ฐ๋ฅํด ์ง๊ธฐ ๋๋ฌธ์ด๋ค.
๋๋ ์ด๋ฏธ์ง ๋ทฐ ํ๋๋ง ์ด๋ ํ ์์ ์ด์ง๋ง, ์ํ๋ค๋ฉด textview๋ button๋ฑ ์ฌ๋ฌ๊ฐ ๋ค์ํ ๋ทฐ์๋ ์ ์ฉ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.
์ด๋ฒ์๋ ์ฝ๋ฉ๋ถ๋ถ์ ํ์ธํด ๋ณด์.
MainActivity1.java
public class MainActivity extends AppCompatActivity {
Button btnStart;
ImageView ivTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = (Button)findViewById(R.id.btn_Start);
ivTitle = (ImageView) findViewById(R.id.iv_title);
btnStart.setOnClickListener(new Button.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,MainActivity2.class);
//๊ฑด๋๊ฐ ์กํฐ๋นํฐ๋ฅผ ์ ํด๋ ์ธํ
ํธ ๊ฐ์ฒด ์ ์ธ
Pair[] pairs = new Pair[1];
pairs[0] = new Pair<View,String>(ivTitle,"imgTransition");
//์กํฐ๋นํฐ์์ ์์ง์ผ ๋ทฐ์ ํธ๋์ง์
์ด๋ฆ์ Pair๋ฐฐ์ด์ ๋ด์๋๋ค.
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, pairs);
//์กํฐ๋นํฐ ์ต์
์ ์ ์ฉํ๊ธฐ ์ํด ActivityOptions๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ณ ํธ๋์ง์
์๋๋ฉ์ด์
์ ๋ํ ์ค์ ์ ๋ฃ๋๋ค
startActivity(intent,options.toBundle());
}
});
}
}
์ฌ๊ธฐ์ Pairํ ๋ณ์๋ฅผ ๋ฐฐ์ด๋ก ์ ์ธ์ ํ๋๋ฐ ๋ณดํต ์ด ๋ฐฉ๋ฒ์ ๊ฒฝ์ฐ ์ฌ๋ฌ๊ฐ ๋ทฐ์ ์ ๋๋ฉ์ด์ ์ ๋์์ ์ง์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ค. ๋ง์ฝ ํ๊ฐ๋ง ์ฌ์ฉํ ๊ฒฝ์ฐ
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, ivTitle, "imgTransition");
์ด๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋๊ณ ์ฌ๋ฌ๊ฐ์ ๊ฒฝ์ฐ๋ฉด Pair ๋ฐฐ์ด์ ๊ฐ์๋ฅผ ๋๋ฆฐ ํ ๋ณด๋ ๋ทฐ๋ฅผ ํ ๋นํ๋ฉด ๋ ๊ฒ์ด๋ค.