[안드로이드] TranslateAnimation 과 AnimationSet을 이용한 연속 움직임
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
App을 새로 하나 만들고 있는데,
버튼을 손으로 움직인 것을 토대로 다른 버튼을 누르면 움직인 경로를 따라 움직이는 걸 만들고 있다.
Skip Frame 때문에 이걸 애니메이션으로
바꾸는게 나을거 같아 찾아보던 중
AnimationSet과 TranslateAnimation에 대해 알게되었다.
AnimationSet은 그냥 Animation 의 ArrayList쯤 되는 것 같다.
자세히는 안찾아 봤지만....
연속된 움직임을 구현하려면 setStartOffset을 토대로 구현하였다.
setStartOffset은 시작시간을 밀리세컨드 단위로 미루는 것을 설정한다
setDuration함수의 경우 밀리세컨드 단위로 움직이는 것을 뜻하는데,
그 시간 이후에 다음것을 실행한다면 도미노가 쓰러지듯 차례로 애니메이션
효과가 나올것이라 예측했고,
그렇게 나왔당
결과화면이다.
다음은 소스코드입니다.
xml은 버튼하나만 지정을 해놔서, 따로 올리진 않겠습니다.
public class MainActivity extends AppCompatActivity {
Button btn_Test;
AnimationSet animationSet;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_Test = (Button)findViewById(R.id.btn_Test);
animationSet = new AnimationSet(true);
animationSet.setFillAfter(true);
MoveCheck();
}
void MoveCheck()
{
DisplayMetrics dm = getApplicationContext().getResources().getDisplayMetrics();
int width = dm.widthPixels;
int height = dm.heightPixels;
TranslateAnimation mData = new TranslateAnimation(0,500,0,0);
mData.setStartOffset(1000);
mData.setFillAfter(true); // 움직이고 그 자리에 정지
mData.setDuration(1000);
TranslateAnimation mData2 = new TranslateAnimation(0,0,0,500);
mData2.setStartOffset(2000);
mData2.setFillAfter(true);
mData2.setDuration(1000);
animationSet.addAnimation(mData);
animationSet.addAnimation(mData2);
btn_Test.startAnimation(animationSet);
}
}
소스코드에서는 Button을 쓰긴했는데, 모든 View, LinearLayout 등에 적용될 수 있을 것 같네요.
추가로 읽으면 좋을 것
- 공유 링크 만들기
- X
- 이메일
- 기타 앱
댓글
댓글 쓰기