首页 > 代码库 > HackTwo

HackTwo

使用延迟加载以及避免代码重复
?一.概要:
    <include />标签是整理布局的有效工具,提供了合理组织XML布局文件的有效方法。
    ViewStub是实现延迟加载视图的优秀类。无论在什么情况下,只要开发者需要根据上下文选择隐藏或则显示一个视图,都可以使用ViewSub实现。
    或许并不会因为一个视图的延迟加载而感觉到性能的明显提升,但是如果视图树的层次很深,便会感觉到性能上的 差距了。
二.代码:
  main.xml
 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2     android:layout_width="fill_parent" 3     android:layout_height="fill_parent" > 4  5     <Button 6         android:layout_width="fill_parent" 7         android:layout_height="wrap_content" 8         android:layout_gravity="center_vertical" 9         android:onClick="onShowMap"10         android:text="@string/show_map" />11 12     <ViewStub13         android:id="@+id/map_stub"14         android:layout_width="fill_parent"15         android:layout_height="fill_parent"16         android:inflatedId="@+id/map_view"17         android:layout="@layout/map" />18 19     <include20         android:layout_width="fill_parent"21         android:layout_height="wrap_content"22         android:layout_alignParentBottom="true"23         android:layout_marginBottom="30dp"24         layout="@layout/footer" />25 26 </RelativeLayout>

  footer.xml

1 <?xml version="1.0" encoding="utf-8"?>2 <TextView xmlns:android="http://schemas.android.com/apk/res/android"3     android:layout_width="0dp"4     android:layout_height="0dp"5     android:gravity="center"6     android:text="@string/footer_text" />

  MainActivity

 1 public class MainActivity extends MapActivity { 2  3   private View mViewStub; 4  5   @Override 6   public void onCreate(Bundle savedInstanceState) { 7     super.onCreate(savedInstanceState); 8     setContentView(R.layout.main); 9     mViewStub = findViewById(R.id.map_stub);10   }11 12   public void onShowMap(View v) {13     mViewStub.setVisibility(View.VISIBLE);14   }15 16   @Override17   protected boolean isRouteDisplayed() {18     return false;19   }20 }

  Ps:对于<include />中用到的android:layout_width和android:layout_height的属性在被引用的布局文件中要申明为0;

   

HackTwo