Android 스타일 개발:layer-list 인 스 턴 스 상세 설명

4604 단어 AndroidLayer-list

위의 그림 Tab 의 배경 효과 와 음영 이 있 는 원 각 사각형 은 어떻게 이 루어 집 니까?대부분의 사람들 은 미 공 에 게 그림 을 자 르 고 9 도 를 배경 으로 한다.하지만 그림 한 장만 제공 하면 어떻게 될 까?예 를 들 어 가운데 Tab 배경 빨간색 밑줄 의 픽 셀 높이 는 4px 입 니 다.그러면 mdpi 장치 에 표시 하면 예상 에 부합 되 고 hdpi 장치 에 표시 할 때 약간 가 늘 어 집 니 다.xhdpi 장치 에 표시 할 때 좀 더 가 늘 어 지고 xxhdpi 에 표시 할 때 가 늘 어 집 니 다.xxhdpi 에 표시 할 때 더욱 가 늘 어 집 니 다.xxxhdpi 에 1dp=4px 가 있 기 때문에 4px 의 그림 은 xxxhdpi 장치 에 표 시 될 때 1dp 만 남 았 습 니 다.따라서 각종 해상 도 를 잘 맞 추기 위해 서 는 해당 되 는 여러 세트의 그림 을 제공 해 야 한다.안 드 로 이 드 의 res 소스 자원 을 보면 이러한 Tab 의 배경 점 9 그림 도 해상도 크기 에 따라 서로 다른 사이즈 의 점 9 그림 을 제공 한 것 을 발견 할 수 있 습 니 다.
그러나 이 demo 에 서 는 실제 이미지 자원 을 사용 하지 않 았 습 니 다.모두 shape,selector,그리고 이 편 에서 설명 할 layer-list 로 이 루어 졌 습 니 다.
layer-list 를 사용 하면 여러 drawable 을 순서대로 겹 쳐 표시 할 수 있 습 니 다.위의 그림 의 Tab 처럼 빨간색 층 에 흰색 을 겹 쳐 표시 한 결과 그림자 의 사각형 은 회색 의 사각형 에 흰색 의 사각형 을 겹 쳐 표시 합 니 다.먼저 코드 를 보 세 요.다음은 Tab 배경 코드 입 니 다.

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <!--         -->
  <!--<item android:drawable="@drawable/bg_tab_selected" android:state_checked="true" />-->
  <!--         -->
  <item android:state_checked="true">
    <layer-list>
      <!--      -->
      <item>
        <color android:color="#E4007F" />
      </item>
      <!--      -->
      <item android:bottom="4dp" android:drawable="@android:color/white" />
    </layer-list>
  </item>
  <item>
    <layer-list>
      <!--      -->
      <item>
        <color android:color="#E4007F" />
      </item>
      <!--      -->
      <item android:bottom="1dp" android:drawable="@android:color/white" />
    </layer-list>
  </item>
</selector>
다음은 음영 이 있 는 원 각 사각형 입 니 다.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <!--      -->
  <item
    android:left="2dp"
    android:top="4dp">
    <shape>
      <solid android:color="@android:color/darker_gray" />
      <corners android:radius="10dp" />
    </shape>
  </item>
  <!--      -->
  <item
    android:bottom="4dp"
    android:right="2dp">
    <shape>
      <solid android:color="#FFFFFF" />
      <corners android:radius="10dp" />
    </shape>
  </item>
</layer-list>
위의 예제 코드 를 보면 layer-list 는 루트 노드 로 도 사용 할 수 있 고 selector 에서 item 의 하위 노드 로 도 사용 할 수 있 습 니 다.layer-list 는 여러 개의 item 서브 노드 를 추가 할 수 있 습 니 다.각 item 서브 노드 는 하나의 drawable 자원 에 대응 하고 item 의 위 에서 아래로 겹 쳐 진 다음 에 각 item 의 오프셋 을 설정 하면 그림자 등 효 과 를 볼 수 있 습 니 다.layer-list 의 item 은 아래 네 개의 속성 을 통 해 오프셋 을 설정 할 수 있 습 니 다.
안 드 로 이 드:top 상단 의 오프셋안 드 로 이 드:bottom 아래쪽 의 오프셋안 드 로 이 드:left 왼쪽 의 오프셋안 드 로 이 드:right 오른쪽 오프셋
이 네 개의 오프셋 과 컨트롤 의 margin 설정 차이 가 많 지 않 고 모두 외부 간격 효과 입 니 다.오프셋 을 설정 하지 않 으 면 앞의 그림 층 이 뒤의 그림 층 을 완전히 막 아서 뒤의 그림 층 효 과 를 볼 수 없습니다.예 를 들 어 위의 예 를 들 어 Tab 배경 에 있 는 흰색 배경 에 android:bottom 을 설정 한 후에 야 빨간색 배경 을 볼 수 있 습 니 다.그렇다면 오프셋 을 마이너스 로 설정 하면 어떻게 될 까?검증 을 통 해 오프셋 이 넘 는 부분 은 잘 려 서 보이 지 않 으 므 로 믿 지 않 으 면 직접 해 보 세 요.때때로 이것 은 매우 유용 하 다.예 를 들 어 내 가 반원 을 표시 하고 싶 을 때.
또한 아 이 템 의 용법 에 대해 서도 정 리 를 하 겠 습 니 다.
1.루트 노드 가 같 지 않 으 면 설정 할 수 있 는 속성 이 다 를 수 있 습 니 다.예 를 들 어 selector 에서 상태 속성 을 설정 할 수 있 고 layer-list 에서 오프셋 을 설정 할 수 있 습 니 다.
2.부모 노드 가 selector 라 하 더 라 도 drawable 디 렉 터 리 에 놓 는 것 과 color 디 렉 터 리 에 놓 을 수 있 는 속성 이 다 릅 니 다.예 를 들 어 drawable 디 렉 터 리 에서 사용 할 수 있 는 속성 은 android:drawable 이 고 color 디 렉 터 리 에서 사용 할 수 있 는 속성 은 android:color 입 니 다.
3.item 의 하위 노드 는 모든 유형의 drawable 류 라벨 을 만 들 수 있 습 니 다.위의 예 에서 shape,color,layer-list 를 제외 하고 selector 일 수도 있 습 니 다.그리고 말 하지 않 은 bitmap,clip,scale,inset,transition,rotate,animated-rotate,lever-list 등 도 있 습 니 다.
엔 딩
layer-list 편 은 여기까지 입 니 다.예제 코드 도 업데이트 되 었 습 니 다.github,주소:
https://github.com/keeganlee/kstyle.git
이상 은 Android Layer-list 스타일 에 대한 예제 정리 입 니 다.추 후 관련 자 료 를 계속 보충 하 겠 습 니 다.본 사이트 에 대한 지원 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기