앱 밖에서 이미지를 띄우기 위해서 Service 에서 WindowManager 에 ImageView 를 붙여서 사용하고 있습니다.
사용중인 소스입니다.
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
Resources res = this.getResources();
int id_walk = RandomId(res);
mPopupImageView = new ImageView(this);
mPopupImageView.setImageResource(id_walk);
frameAnimation = (AnimationDrawable) mPopupImageView.getDrawable();
frameAnimation.start();
mImageParams = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT
);
mImageParams.width = 550 * 3;
mImageParams.height = 400 * 3;
mImageParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL;
mWindowManager.addView(mPopupImageView, mImageParams);
RandomId(res); 는 랜덤한 Animation.xml 를 불러오기 위한 함수이고 정상동작 합니다.
현재 이미지의 원본 사이즈가 너무 커서 out of memory 가 자꾸 발생해서 이미지의 크기를 반으로 줄여버렸습니다.
문제는 이미지를 2배나 3배 등으로 키우고 싶은데
mImageParams.width = 550 * 3;
mImageParams.height = 400 * 3;
이렇게 이미지뷰 의 크기를 조절하면 이미지가 커지기는 하는데요.
3배 정도로 키우면 화면보다 커져서 이미지의 중심이 화면 오른쪽으로 붙게 됩니다.
이미지를 화면 중앙에 위치시키고 싶은데요.
이미지뷰 의 위치를 이동시키는 방법을 사용해 봐도 왼쪽에 붙어있는 상태가 유지 됩니다.
Param 에서 x 값을 -로 줘도 왼쪽 화면 끝에서 더 이상 이동하지 않고요.
이미지뷰 로 만든 화면보다 큰 이미지를 화면 중앙에 위치 시키려면 어떻게 해야 하나요?
아니면 이미지뷰 와 상관없이 이미지만 키우는 방법이 있을까요?