상세 컨텐츠

본문 제목

[안드로이드] transition으로 액티비티(Activity) 변경 애니메이션 효과 주는 방법

안드로이드

by aries574 2021. 12. 30. 14:57

본문


이번 시간에는 애니메이션을 통해 액티비티(Activity)

변경 애니메이션 효과 주는 방법을 알아보겠습니다.


목차

1. 새로운 액티비티 추가

2. 새로운 액티비티 화면 구성

3. 새로운 액티비티 코드 구현

4. 테마 설정

5. transition 폴더 생성

6. transition 파일 생성

7. 테마에 transition 적용

8. 메인 화면 구성

9. 메인 코드 구현

 


1. 새로운 액티비티 추가 

app -> New -> Activity -> Empty Activity

Activity Name : Activity2 -> Finish



2. 새로운 액티비티 화면 구성 activity_2.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:background="@color/teal_700"
    tools:context=".Activity2">

       <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Activity2"
        android:textSize="30sp"
        android:layout_above="@id/goMainActivity_btn"
        android:textColor="@color/white"/>

    <Button
        android:id="@+id/goMainActivity_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="MainActivity"
        android:layout_marginTop="20dp"
        android:onClick="goMainActivity"/>

</RelativeLayout>



3. 새로운 액티비티 코드 구현 Activity2

public class Activity2 extends AppCompatActivity {

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

       public void goMainActivity(View view) {

        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this).toBundle();
        startActivity(intent, bundle);
    }
}




4. transition 폴더 생성

res -> New -> Android Resource Directory

Directory name: transition -> OK

 

5. transition 파일 생성 trans_explode.xml

transition -> New -> Transition Resource File 

<?xml version="1.0" encoding="utf-8"?>
<transitionSet xmlns:android="http://schemas.android.com/apk/res/android">
    <explode
        android:duration="300" />
</transitionSet>


6. 테마에 transition 적용

res -> values -> themes -> themes.xml

구버전은 style.xml에 적용하면 됩니다.

style 태그 안에 추가

        <!-- 화면전환 애니메이션 설정-->
        <item name="android:windowActivityTransitions">true</item>
        <item name="android:windowEnterTransition">@transition/trans_explode</item>
        <item name="android:windowExitTransition">@transition/trans_explode</item>



7. 메인 화면 구성 activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
    android:background="@color/pink500"
    tools:context=".MainActivity">

       <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="MainActivity"
        android:textSize="30sp"
        android:layout_above="@id/goActivity2_btn"
        android:textColor="@color/white"/>

    <Button
        android:id="@+id/goActivity2_btn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginTop="20dp"
        android:onClick="goActivity2"
        android:text="Activity2" />
</RelativeLayout>



8. 메인 코드 구현 MainActivity.java

public class MainActivity extends FragmentActivity {

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

    }

  public void goActivity2(View view) {

        Intent intent = new Intent(getApplicationContext(), Activity2.class);
        Bundle bundle = ActivityOptions.makeSceneTransitionAnimation(this).toBundle();
        startActivity(intent, bundle);
    }

}

 

9. 실행화면

 

2021.12.29 - [안드로이드] - [안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 회전표시 애니메이션

 

[안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 회전표시 애니메이션

이번 시간에는 애니메이션을 통해 텍스트뷰가 퍼지듯이 나타났다가 퍼지듯이 사라지는 예제를 만들어 보려고 합니다. 1. 메인 화면 구성 activity_main.xml 화면은 간단합니다. 프레임 레이아웃(Fr

aries574.tistory.com

2021.12.28 - [안드로이드] - [안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 카드플립(CardFlip)

 

[안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 카드플립(CardFlip)

이번 시간에는 애니메이션을 통해 2개의 이미지가 뒤집히며 교체되는 모습을 만들어보겠습니다. 목차 1. 메인 화면 구성 activity_main.xml 2. 애니메이션 만들기 2-1 애니메이션 폴더 만드는 방법 2-2

aries574.tistory.com

2021.12.27 - [안드로이드] - [안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 크로스페이드(CrossFade) 쉽게 만드는 방법

 

[안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 크로스페이드(CrossFade) 쉽게 만드는 방법

이번 시간에는 애니메이션을 통해 2개의 이미지를 교차시켜 하나는 사라지고, 하나는 보이는 화면을 만들어 보겠습니다. 1. 메인 화면 구성 activity_main.xml 겹쳐진 2개의 이미지와 크로스페이드

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역