마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이미지를 이동시키는 애니메이션을 만드는 방법을 질문합니다.

0 추천
안녕하세요.

제가 이미지가 화면 상에서 이동하는 애니메이션을 만들려고 하는데요.

만들려는 에니메이션은 다음과 같습니다.

1.이미지가 화면 왼쪽 밖에서 화면 안으로 일정한 속력으로 움직이며 들어온다.

2.이미지가 일정한 속력으로 오른쪽으로 이동한다.

3.이미지가 오른쪽 밖으로 이동한다.

ImageView로 Layout에서 이미지를 화면에서 띄우면서 이미지의 일부가 화면 밖으로 나가서 짤려서 나오게 할 수 있을까요?
안드로이드일루셔니스트트 (150 포인트) 님이 2013년 4월 2일 질문

1개의 답변

+1 추천
 
채택된 답변

TranslateAnimation 을 사용하시면 됩니다. 

java코드에서 설정해주는 방식으로 설명드리겠습니다.

 

ImageView img = (ImageView)findViewById(R.id.xxxx);

TranslateAnimation ani = new TranslateAnimation(
				Animation.RELATIVE_TO_SELF, fromX,
				Animation.RELATIVE_TO_SELF, toX, 
				Animation.RELATIVE_TO_SELF, fromY,
				Animation.RELATIVE_TO_SELF, toY);
	ani.setFillAfter(true); // 애니메이션 후 이동한좌표에
	ani.setDuration(durationMillis); //지속시간

img.startAnimation(ani);

 

이런식으로 애니메이션을 만들어서 해당뷰에서 시작해주면 됩니다.

 

좀 더 간단한 방법으로 인자를 fromX, toX, fromY, toY 이렇게 네가지만 받는 

TranslateAnimation의 생성자도 존재 합니다.

setFillAfter(true)메소드는 애니메이션 종료후 이동한좌표에 그대로 자리잡는다는 설정입니다.

false를 주면 애니메이션 종료후 원래의 좌표로 돌아가게됩니다. (디폴트값은 false입니다.)

setDuration(durationMillis); 은 지속시간 설정입니다. 밀리초단위이니 1초라면 1000을 넣으면 됩니다.

 

제가 쓴건 Type까지 지정해주는 방식인데요. 

Animation.RELATIVE_TO_SELF 는 뷰자신의 크기를 기준으로 이동하는 타입입니다.

fromX, toX, fromY, toY 는 전부 flaot 형이며

 

예를들어 지금의 위치에서 5초에걸쳐서 오른쪽으로 뷰자신의 크기만큼 이동하고 싶으면 

ImageView img = (ImageView)findViewById(R.id.xxxx);

TranslateAnimation ani = new TranslateAnimation(
				Animation.RELATIVE_TO_SELF, 0.0f,
				Animation.RELATIVE_TO_SELF, 1.0f, 
				Animation.RELATIVE_TO_SELF, 0.0f,
				Animation.RELATIVE_TO_SELF, 0.0f);
ani.setDuration(5000);
img.startAnimation(ani);

이런식으로 주시면됩니다.

인자값을 마이너스 로줘서 화면밖에서 부터 시작하거나 화면밖으로 나가게하는것도 가능합니다.

 

얼룩돼지 (15,720 포인트) 님이 2013년 4월 2일 답변
안드로이드일루셔니스트트님이 2013년 4월 18일 채택됨
...