您现在的位置: 弘智首页 > Android > android教程 >

andriod开发之layer-list和include的使用

时间:2012-10-29 来源:弘智教育 点击: 次

layer-list是一个静态的展示,selector是一个动态的展示。
 

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


1.代码实现方式:


Java代码

  1. Resources r = getResources();
     
  2. Drawable[] layers = new Drawable[2];
     
  3. layers[0] = r.getDrawable(R.drawable.cor_info);
     
  4. layers[1] = r.getDrawable(R.drawable.icon);
     
  5. LayerDrawable layerDrawable = new LayerDrawable(layers);
     
  6. ((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);
复制代码

2.layer-list.xml方式:
Java代码
 

  1. <?xml version="1.0" encoding="utf-8"?>
     
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
     
  3. <!--  
     
  4. <item android:id="@+id/user_face_drawable" android:drawable="@drawable/h001"
     
  5.         android:left="10.0dip" android:top="18.0dip" android:right="25.0dip"
     
  6.         android:bottom="35.0dip" />
     
  7.         -->
     
  8.         <item>
     
  9.                 <shape>
     
  10.                         <solid android:color="#FF00ff00" />
     
  11.                         <gradient android:useLevel="true" android:type="sweep"
     
  12.                                 android:startColor="#ff000000" android:endColor="#ffff0000" />
     
  13.                 </shape>
     
  14.         </item>
     
  15.         <item>
     
  16.                 <rotate android:pivotX="50%" android:pivotY="50%"
     
  17.                         android:fromDegrees="0" android:toDegrees="80"
     
  18.                         android:drawable="@drawable/icon" />
     
  19.         </item>
     
  20. </layer-list>
复制代码

然后就可以在别处引用了

Java代码

  1. <ImageButton android:id="@+id/btnFindMe"  
     
  2.     android:layout_width="wrap_content"  
     
  3.     android:layout_height="wrap_content"
     
  4.     android:layout_centerInParent="true"
     
  5.     android:background="@drawable/qqw"/>
复制代码

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

Java代码

  1. <style name="progressBarStyleSmall" parent="android:style/Widget.ProgressBar.Large">
     
  2. <item name="android:indeterminateDrawable">@drawable/progress</item>
     
  3. </style>
复制代码

Java代码

  1. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
     
  2.    <!--   <item android:drawable="@android:drawable/progress_circular_background" />-->
     
  3.      <!--  <item>
     
  4.         <shape android:shape="ring"
     
  5.                android:innerRadiusRatio="3.4"
     
  6.                android:thicknessRatio="6.0">
     
  7.             <gradient
     
  8.                    android:useLevel="true"
     
  9.                    android:type="sweep"
     
  10.                    android:startColor="#ff000000"
     
  11.                    android:endColor="#ffffffff" />
     
  12.         </shape>  
     
  13.     </item> -->
     
  14.     <item>
     
  15.         <rotate
     
  16.             android:pivotX="50%" android:pivotY="50%"
     
  17.             android:fromDegrees="0" android:toDegrees="370"
     
  18.             android:drawable="@drawable/load2" />
     
  19.     </item>
     
  20. </layer-list>
复制代码

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

Java代码

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     
  2.     android:layout_width="fill_parent"
     
  3.     android:layout_height="64dip"
     
  4.     android:gravity="center_vertical"
     
  5.     android:ignoreGravity="@+id/icon">
     
  6.     <include layout="@layout/track_list_item_common" />;
     
  7. </RelativeLayout>
复制代码

track_list_item_common.xml
Java代码

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

  2.  
  3.     <ImageView android:id="@+id/icon"
     
  4.         android:layout_alignParentLeft="true"
     
  5.         android:layout_centerVertical="true"
     
  6.         android:layout_marginLeft="4dip"
     
  7.         android:layout_width="60px"
     
  8.         android:layout_height="60px"/>
     
  9. ...
     
  10. </merge>
弘智主页 | 弘智介绍 | 培训课程 | XML地图