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

WindowManager 에 붙어있는 ImageView 의 크기와 위치를 변화시키고 싶습니다.

0 추천

앱 밖에서 이미지를 띄우기 위해서 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 값을 -로 줘도 왼쪽 화면 끝에서 더 이상 이동하지 않고요.

 

이미지뷰 로 만든 화면보다 큰 이미지를 화면 중앙에 위치 시키려면 어떻게 해야 하나요?

아니면 이미지뷰 와 상관없이 이미지만 키우는 방법이 있을까요?

사시 (340 포인트) 님이 2016년 10월 20일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...