layer-list和include的使用

layer-list,include,merge使用,记录一下
转自:http://wang-peng1.iteye.com/blog/558646,
http://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList

layer-list是一个静态的展示,selector是一个动态的展示。
当我们想把多个图层叠在一起现身的时候,可以使用layer-list,第一个item排在最下层,第二个item排在上面,当然还可以排三层、四层......,item之间最好产生距离,不然上层的会挡住下层的,字面上是多个层,也就是你可以把多个layer放在一起然后一其显现出来 如qqw.xml

1.代码实现方式:
Resources r = getResources(); 
Drawable[] layers = new Drawable[2];
layers[0] = r.getDrawable(R.drawable.cor_info);
layers[1] = r.getDrawable(R.drawable.icon);
LayerDrawable layerDrawable = new LayerDrawable(layers);
((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);


2.layer-list.xml方式:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--
<item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001"
android:left="10.0dip" android:top="18.0dip" android:right="25.0dip"
android:bottom="35.0dip" />
-->
<item>
<shape>
<solid android:color="#FF00ff00" />
<gradient android:useLevel="true" android:type="sweep"
android:startColor="#ff000000" android:endColor="#ffff0000" />
</shape>
</item>
<item>
<rotate android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="0" android:toDegrees="80"
android:drawable="@drawable/icon" />
</item>
</layer-list>


然后就可以在别处引用了

<ImageButton android:id="@+id/btnFindMe"  
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="@drawable/qqw"/>


例如在 android:style/Widget.ProgressBar.Large 或者其他的progressbar风格

<style name="progressBarStyleSmall" parent="android:style/Widget.ProgressBar.Large">
<item name="android:indeterminateDrawable">@drawable/progress</item>
</style>


<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- <item android:drawable="@android:drawable/progress_circular_background" />-->
<!-- <item>
<shape android:shape="ring"
android:innerRadiusRatio="3.4"
android:thicknessRatio="6.0">
<gradient
android:useLevel="true"
android:type="sweep"
android:startColor="#ff000000"
android:endColor="#ffffffff" />
</shape>
</item> -->
<item>
<rotate
android:pivotX="50%" android:pivotY="50%"
android:fromDegrees="0" android:toDegrees="370"
android:drawable="@drawable/load2" />
</item>
</layer-list>


而include的使用就是为了降低 重复书写同一个布局而使用的引用,当然他还有另一优点就是和merge的混合使用 当你想添加一个布局而这个布局本身已经有了一个layout你想直接在这个layout下添控件,而你另一个xml中必须有一个layout ,如果你直接引用include这个xml那么就会多了一个layout ,所以这时候你应该把控件填写在merge中,这样就可以直接加入到原来的layout中了。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="64dip"
android:gravity="center_vertical"
android:ignoreGravity="@+id/icon">
<include layout="@layout/track_list_item_common" />;
</RelativeLayout>


track_list_item_common.xml
<merge xmlns:android="http://schemas.android.com/apk/res/android">

<ImageView android:id="@+id/icon"
android:layout_alignParentLeft="true"
android:layout_centerVertical="true"
android:layout_marginLeft="4dip"
android:layout_width="60px"
android:layout_height="60px"/>
...
</merge>


从上面的代码可以看到 merge是不需要merge的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值