Android图层列表layer-list使用案例解析
概念
layer-list 是用来创建 LayerDrawable 的,LayerDrawable 是drawable 的一种。
基本使用方法以及注意项
<item android:drawable="@drawable/image" />
<item>
<bitmap android:src="@drawable/image"
android:gravity="center" />
</item>
几个应用案例
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--阴影层-->
<item android:top="6dp"
android:left="3dp">
<shape android:shape="rectangle">
<solid android:color="#b4b5b6"/>
<corners android:radius="5dp"/>
</shape>
</item>
<!--白色层-->
<item android:right="3dp"
android:bottom="6dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
<corners android:radius="5dp"/>
</shape>
</item>
</layer-list>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate android:fromDegrees="-10" android:pivotX="50%" android:pivotY="50%">
<shape>
<solid
android:color="@android:color/holo_blue_dark"/>
<size
android:width="300dp"
android:height="100dp"/>
<corners
android:radius="10dp"/>
</shape>
</rotate>
</item>
<item>
<rotate android:fromDegrees="10" android:pivotX="50%" android:pivotY="50%">
<shape>
<solid
android:color="@android:color/holo_green_dark"/>
<size
android:width="300dp"
android:height="100dp"/>
<corners
android:radius="10dp"/>
</shape>
</rotate>
</item>
<item>
<rotate android:fromDegrees="30" android:pivotX="50%" android:pivotY="50%">
<shape>
<solid
android:color="@android:color/holo_orange_dark"/>
<size
android:width="300dp"
android:height="100dp"/>
<corners
android:radius="10dp"/>
</shape>
</rotate>
</item>
</layer-list>
<ProgressBar
android:id="@+id/progress_quality"
android:layout_width="121dp"
android:layout_height="13dp"
style="?android:attr/progressBarStyleHorizontal"
android:max="100"
android:progressDrawable="@drawable/shop_percent_bar"/>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<solid android:color="#f7f7f7"/>
<corners
android:radius="10dp"/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip>
<shape android:shape="rectangle">
<gradient android:type="linear"
android:startColor="#fff3d432"
android:endColor="#ffe0761f"
android:angle="0" />
<corners
android:radius="10dp"/>
</shape>
</clip>
</item>
</layer-list>
当值不到100%时,进度条由clip来做会将进度条截断成直角。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape android:shape="rectangle">
<solid android:color="#f7f7f7"/>
<corners
android:radius="10dp"/>
</shape>
</item>
<item android:id="@android:id/progress">
<scale android:scaleWidth="100%">
<shape android:shape="rectangle">
<gradient android:type="linear"
android:startColor="#fff3d432"
android:endColor="#ffe0761f"
android:angle="0" />
<corners
android:radius="10dp"/>
</shape>
</scale>
</item>
</layer-list>
注意使用scale标签需要添加android:scaleWidth="100%"这个属性,否则设置进度就不起作用了。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/splash_bg_color"/>
<item
android:gravity="center"
android:bottom="90dp">
<bitmap android:src="@mipmap/splash_center_logo"/>
</item>
<item
android:bottom="60dp"
android:gravity="bottom|center">
<bitmap
android:antialias="true"
android:gravity="center|bottom"
android:src="@mipmap/splash_bottom_logo" />
</item>
</layer-list>
注意:不打算让图片充满容器要给图片bitmap设置gravity,否则默认会充满容器。
<style name="AppSplash" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowIsTranslucent">false</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowBackground">@drawable/splash_pic</item>
<item name="android:background">@null</item>
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
</style>
评论