videoView animation적용 질문입니다..
AnimationSet animationSet = new AnimationSet(true);
ScaleAnimation scale = new ScaleAnimation(1, 1.42f,
1, 1.42f,
ScaleAnimation.RELATIVE_TO_SELF, 0.5f, ScaleAnimation.RELATIVE_TO_SELF, 0.5f);
scale.setFillAfter(true);
scale.setDuration(5000);
scale.setStartOffset(500);
animationSet.addAnimation(scale);
videoView.startAnimation(animationSet);
위처럼 비디오뷰에 애니매이션을 적용시켰더니,
비디오뷰의 사이즈는 점점 커지나,
비디오뷰 안의 동영상 사이즈는 그대로 입니다..
즉 비디오 뷰 배경화면 크기만 변화하는 꼴인데
동영상 크기까지 리사이징이 안되는 이유가 무엇일까요??
동영상까지 리사이징 하려면 어떻게 해야 하나요?
답변 감사합니다~ 정말 많은 도움이 되었어요^^
한가지만 더 질문 드릴께요...
video view는 device memory를 직접 쓰기 때문에 capture할 수 없기 때문에 애니매이션 시 아무것도 나오지 않은
까만 배경만이 애니매이션에 적용되어 나오는것은 확실히 이해했습니다 감사합니다!
제가 궁금한 것은,, 그러면 이 경우 아예 까만 배경만 나올 것 같은데
실제로 보면, 애니매이션 하기 전의 크기로 동영상은 여전히 재생이 되거든요,,
물론 까만 배경으로 애니매이션 영역이 나타나긴 하지만, 이전의 재생되고 있던 동영상은
안나올 줄 알았는데 이전 상태 그대로 나오긴 합니다..
이 부분은 왜 그런것일까요?
제가 썼던 소스인데.. 구글링해도 나오는겁니다...
private OnVideoSizeChangedListener onVideoSizeChangedListener = new OnVideoSizeChangedListener()
{
public void onVideoSizeChanged(MediaPlayer mp, int width, int height)
{
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
player.setLayoutParams(lp);
}
};
private OnPreparedListener onPrepared = new OnPreparedListener()
{
public void onPrepared(MediaPlayer mp)
{
mp.setOnVideoSizeChangedListener(onVideoSizeChangedListener);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
player.setLayoutParams(lp);
seekBar.setMax(mp.getDuration());
}
};
비디오 사이즈 체인지 리스너를 받아서 prepare리스너에 걸어버리고... 릴레티브레이아웃 속성하나 먹인다음
Fill parent로하면 비디오뷰를 둘러싸던 릴레티브레이아웃에 마춰서 크기 조절 가능합니다 . -0- 다만 애니메이션은??? 음 그건 안댈거같
군요 prepare라는게 영상재생하기전에 준비하는 단계이니깐요... 응용하면 가능할거 같기도 한대..제 생각이면 애니메이션 일으키기전에
pause를 걸어서 영상 일시정지한다음에... 사이즈변경 -> 그다음 애니메이션 끝나고 이어서 재생 하면 되지 않을가요 ^^?




VideoView에 출력되는 화면은 device memory로 직접 write하는 거라서 제어할 수 없어요.