우리는 개발을 진행하면서 이미지를 보여줄 때 ImageView를 사용하게 된다.
그리고 이미지 뷰에 이미지를 보여주는 방법은 크게 3가지정도가 있었다.
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid
android:color="#2e81f8"/>
</shape>
</item>
</selector>
만약 위와 같이 이미지뷰에 회색 바탕 + 라운드 + 중앙에 카메라 이미지가 필요하다면 어떻게 구현할 수 있을까?
여기에서 1,2는 각각 문제점이 발생했다.
1번 문제점
회색 배경의 이미지뷰에 서버로부터 받는 이미지가 있을 경우 load해주어야하는데 그 때마다 카메라 아이콘의 이미지뷰를 제거시켜주어야 한다. 즉 서버의 이미지에 대한 값을 상태로 잡고 그것에 맞추어서 visibility를 조절해주어야 한다.
2번 문제점
한개의 이미지뷰에서 src와 background를 동시에 적용하게 되면 1번과 비슷하게 서버의 이미지를 로드할 경우 src를 해제시켜주어야한다.
그래서 3번 방법을 선택하였다.
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/primaryNatureGrey" />
<corners android:radius="10dp" />
</shape>
</item>
<item
android:bottom="69dp"
android:drawable="@drawable/ic_camera_grey"
android:left="60dp"
android:right="60dp"
android:top="69dp" />
</layer-list>
다음은 실제로 사용한 drawable파일이다.
어려운 개념이 아니지만 자주 사용하지 않았고 여지껏 이미지를 겹쳐서 표현한 것이 있다면 충분히 응용이 가능할것같다.