본문 바로가기
공부/Android Studio

ImageView (feat. 오늘의 뻘짓)

by Piva 2021. 3. 17.

  졸업작품을 하던 도중 약간의 사소한 문제가 있었다.

  졸업작품으로 개발 중인 앱에는 핸드폰의 갤러리에서 가져온 이미지를 ImageView에 띄움으로써 사진을 첨부하는 기능이 있다. 보통 사진을 첨부할 때는 부분적으로 투명화가 되어있는 사진을 첨부할 일이 별로 없으니까... 발견하고 있지 않았던 것이었는데 우연히 투명화 된 사진을 첨부하니 이런 문제가 있었다.

 

배경이 투명한 이미지를 첨부한 모습

  저 사진 뒤에 보이는 하얀 배경은 '이 곳을 눌러 사진을 첨부하세요' 문구가 들어간 디폴트 이미지다. 디폴트 이미지 위에 투명한 이미지가 그대로 얹히는 것이다. 지금 당장 사진으로는 저 짭 커비가 거대해서 문구가 안 보이지만, 세로로 긴 사진 등을 첨부하면 글자가 그대로 노출된다. 그래서 사진이 첨부되면 디폴트 이미지를 표시하지 않도록 코드를 짜려 했다.

 


  ImageView에 들어가는 이미지를 띄우는 데는 이런 함수가 쓰인다.

public void setImageResource (int resId)
//resId : Drawble 리소스의 식별자

  위의 setImageResource 는 Drawable 리소스를 표현하는 데에 쓰인다. 

 

public void setImageBitmap (Bitmap bm)
//bm : ImageView에 띄울 비트맵 파일

  Drawable 리소스를 넣는 게 아니라 비트맵 이미지를 띄우는 데에는 위의 setImageBitmap 이 쓰인다. 

 

  처음에는 이 두 코드가 함께 적용되며 투명화된 이미지 밑에 디폴트 이미지가 그대로 비친 것이 아니었나 했다. 그런데 아니었다... 아니었다... 멍청한 건 나였다.

 

  ImageView의 세팅은 아래 코드와 같았다.

<ImageView
        android:id="@+id/edit_Image"
        android:layout_width="350dp"
        android:layout_height="150dp"
        android:layout_marginBottom="20dp"
        android:scaleType="centerCrop"
        android:background="@drawable/add_pic_button" />

  setImageResource를 사용하면 ImageView에 Drawable을 띄울 수 있는 건 맞는데, 저걸 사용하면 xml 상으로는 android:src 를 바꾸는 것이다. 내 ImageView는 애초에 디폴트 이미지가 src가 아닌 background로 설정이 되어 있었으니, 먹힐리가 없었다...^^ 현재는 ImageView의 background를 바꾸는 setBackground를 통해서 손봤다. 사람이 멍청하면 별걸로 고생한다.

 

  자세히 안 알아봐서 모르겠는데 setImageResource나 setImageBitmap 등으로 설정힌 이미지는 Background 위에 얹히는 느낌으로 설정되는 모양이다. background가 다른 것에 비해 뭐가 다른지는 나중에 조사해서 밑에 달아두는 걸로...

 

 

'공부 > Android Studio' 카테고리의 다른 글

CardView 정리  (1) 2021.02.08
RecyclerView 정리  (0) 2021.02.08