hack mysql_Hack 2

当你在创建一个非常复杂的布局的时候,你会发现你自己添加了一大推的ViewGroups和Views。但是你的布局的层次越深,程序的效率就会越低。所以一个优化的布局,对于创建一个运行迅速、快速反应用户的操作的程序是非常重要的。 RelativeLayout xmlns:android=ht

当你在创建一个非常复杂的布局的时候,你会发现你自己添加了一大推的ViewGroups和Views。但是你的布局的层次越深,程序的效率就会越低。所以一个优化的布局,对于创建一个运行迅速、快速反应用户的操作的程序是非常重要的。

而footer的布局文件是如下这个样子滴:

下面是修改过的footer.xml:

在这第二个例子当中,我们一定要注意,如果我们要使用android:layout_*之类的属性,我们必须先指定android:layout_width与android:laytout_height这两个属性。

2.2 使用ViewStub实现延迟加载视图(Views)

当我们在设计布局时,你可能会考虑到根据用户的操作来显示不同的布局。如果你以前是用让一个View变为invisible与visible来实现视图的变化的话,你就需要继续往下读了。ViewStub会成为你的更优的选择。

为了介绍一下这个ViewStub,我们先来看一下Android的官方文档:

ViewStub是一个不可见的、长度宽度为0的View,它可以在程序运行时从布局资源(layout resources)中延迟(异步?)加载。当ViewStub可见的时候,或是当inflate()函数被调用的时候,布局文件就已经被加载了。然后被加载的View或Views就会替代ViewStub。

这下你就了解了什么是ViewStub,让我们看看它可以做什么。在下面的这个例子当中,我们用ViewStub来延迟加载一个MapView。想象一下我们要展示某一个地点的具体信息,有如下的两种可能的场景:

一些没有GPS信息的场景

用户不需要地图

如果当前的场景中没有GPS信息,我们就不能将一个标记放置在地图上,另外如果用户不需要看地图,我们为什么要加载它们?我们将MapView放在ViewStub中,然后让用户决定是否加载这个地图。为了实现它,我们需要下面这个布局:

很明显,我们需要ViewStub的Id来在Activity中获取它,它的layout属性说明了它要加载哪一个布局文件。下面是地图的布局文件:

最后一个我们需要讨论的属性是:inflatedId。inflatedId是我们在调用inflate()或setVisibility()之后使用的View的ID。在这个例子中我们使用setVisibility(View.VISIBLE),因为我们对MapView不进行任何别的操作。如果我们想获取被加载的布局的引用,我们只需要用inflate()这个方法,它会返回一个view类型来避免二次调用findViewById()。

Activity的代码很简单,如下:

public class MainActivity extends Activity {

private View mViewStub;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main3);

mViewStub = findViewById(R.id.map_stub);

}

public void onShowMap(View v) {

mViewStub.setVisibility(View.VISIBLE);

}

}

正如你所看到的,当我们需要展示地图的时候我们只需要变化ViewStub的Visibility就可以。

2.3 总结

是一个让你的布局井然有序的工具。如果你已经用过Fragment,你就会注意到它与使用include差不多就是一个道理。正如你对Fragments做的一样,你的界面的视图可以由好多组成。

ViewStub是一个极好的延迟加载布局的类,每当你想根据场景隐藏或是展示一个View的时候,你就可以尝试使用ViewStub。可能当只有一个View的时候你不会注意到启动速度的优化,但是当布局变得很深很复杂的时候,性能就会变得很好。

2.4 相关链接

http://code.google.com/p/android/issues/detail?id=2863

http://android-developers.blogspot.com.ar/2009/03/android-layout-tricks-3-optimize-with.html

http://developer.android.com/reference/android/view/ViewStub.html

http://blog.csdn.net/kost_/article/details/13170219

代码下载地址:

http://download.csdn.net/detail/u011418185/6461377

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值