이번 시간에는 애니메이션을 통해 텍스트뷰가
퍼지듯이 나타났다가 퍼지듯이 사라지는
예제를 만들어 보려고 합니다.
화면은 간단합니다. 프레임 레이아웃(FrameLayout) 안에 텍스트뷰(TextView)가 있고
하단에 애니메이션을 작동시키는 버튼(Button)이 있습니다.
초기에는 visibility 속성을 통해 텍스트뷰(textView)를 숨겨놓고, 버튼을 통해
나타났다, 사라졌다 시키려고 합니다.
<?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">
<FrameLayout
android:layout_width="500dp"
android:layout_height="400dp">
<TextView
android:id="@+id/text_view"
android:layout_width="300dp"
android:layout_height="300dp"
android:layout_margin="50dp"
android:background="@color/purple_200"
android:gravity="center"
android:text="Front"
android:textColor="@color/white"
android:visibility="invisible"
android:textSize="30sp" />
</FrameLayout>
<Button
android:id="@+id/ani_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="회전표시 버튼" />
</LinearLayout>
1. clicked 변수는 버튼을 클릭했는지 안했는지 체크를 하기 위해 선언했다.
2. createCircularReveal를 통해 텍스트뷰에 퍼지듯이 나타나고 사라지는
효과를 줄 수 있다.
3. createCircularReveal에는 5개의 매개변수가 사용되는데
첫 번째는 화면에서 숨기거나 표시하려는 뷰
두 번째와 세 번째는 좌표값이 들어가고
네 번째는 클리핑서클의 시작 반지름
다섯 번째는 클리핑서클의 최종 반지름이다.
뷰를 표시할 때는 최종 반지름이 뷰 자체보다 커야 한다.
그래야 애니메이션이 끝나기 전에 뷰가 완전히 표시된다.
public class MainActivity extends AppCompatActivity {
TextView text_view;
boolean clicked = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text_view = findViewById(R.id.text_view);
Button ani_btn = findViewById(R.id.ani_btn);
ani_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//뷰 표시하기
if(!clicked){ //안드로이드 버젼이 롤리팝(5.0)이거나 보다 높으면
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
int cx = text_view.getWidth() /2;
int cy = text_view.getHeight() /2;
float finalRadius = (float) Math.hypot(cx, cy);
Animator anim = ViewAnimationUtils.createCircularReveal(text_view, cx, cy, 0f, finalRadius);
text_view.setVisibility(View.VISIBLE);
anim.start();
}else{
text_view.setVisibility(text_view.INVISIBLE);
}
clicked = true;
}else{ //뷰 숨기기
//안드로이드 버젼이 롤리팝(5.0)이거나 보다 높으면
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
int cx = text_view.getWidth() /2;
int cy = text_view.getHeight() /2;
float initialRadius = (float) Math.hypot(cx, cy);
Animator anim = ViewAnimationUtils.createCircularReveal(text_view, cx, cy, initialRadius, 0f);
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
text_view.setVisibility(text_view.INVISIBLE);
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
anim.start();
}else{
text_view.setVisibility(text_view.VISIBLE);
}
clicked = false;
}
} //onClick
});//ani_btn.setOnClickListener
}// onCreate
}
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
2021.12.26 - [안드로이드] - [안드로이드] 속성 애니메이션 (이미지를 움직이게 하는 방법)
[안드로이드] 속성 애니메이션 (이미지를 움직이게 하는 방법)
이번 시간에는 아이콘을 움직이는 방법에 대해 알아보겠습니다. 안드로이드에는 움직이는 동작을 실행시키기 위해서 다양한 애니메이션 기능이 있으며, 여기서는 속성 애니메이션을 사용해 보
aries574.tistory.com
[안드로이드 스튜디오] 자바 클래스 생성하는 방법 (0) | 2021.12.31 |
---|---|
[안드로이드] transition으로 액티비티(Activity) 변경 애니메이션 효과 주는 방법 (0) | 2021.12.30 |
[안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 카드플립(CardFlip) (0) | 2021.12.28 |
[안드로이드] 애니메이션으로 뷰(View) 표시 및 숨기기 - 크로스페이드(CrossFade) 쉽게 만드는 방법 (0) | 2021.12.27 |
[안드로이드] 속성 애니메이션 (이미지를 움직이게 하는 방법) (0) | 2021.12.26 |
댓글 영역