码迷,mamicode.com
首页 > 移动开发 > 详细

Android 使用ViewStub优化布局

时间:2014-11-25 00:08:50      阅读:364      评论:0      收藏:0      [点我收藏+]

标签:android   style   blog   http   io   ar   color   使用   sp   

  在Android开发的工作学习中,我们往往会遇到一个比较复杂的页面,如一件商品的详情页,如天猫商城,一件商品的价格,图文介绍,秒杀活动,商品用户评价等,而且这些数据往往不是一个接口下发的,我们常规的处理是:

  1. 先将所有的view设为Gone,当后台接口调用成功后,在callback里面设置view的属性,并设为Visiable。
  2. 所有的接口异步并行调用。

  这样的处理,也没有什么大问题,不过我们还可以做的更好,即使用ViewStub。

  通俗的说,ViewStub是一个轻量级的view,可以使用它代替一个layout布局,当activity的根布局被infalter的时候,被ViewStub代替的子布局不会被解析,直到我们设置ViewStub为visiable 或者 调用ViewStub 的inflate()方法。

  这是主布局的xml代码。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.firstapp.MainActivity"
    android:orientation="vertical"
    tools:ignore="MergeRootFrame" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />
    
    
    <ViewStub 
        android:id="@+id/viewstub"
        android:layout="@layout/view_stub_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
    
</LinearLayout>

这是被ViewStub代替的布局xml代码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button" />

    <ProgressBar
        android:id="@+id/progressBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <RatingBar
        android:id="@+id/ratingBar1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <RadioButton
            android:id="@+id/radio0"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="RadioButton" />

        <RadioButton
            android:id="@+id/radio1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RadioButton" />

        <RadioButton
            android:id="@+id/radio2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="RadioButton" />
    </RadioGroup>


</LinearLayout>

  下面是activity里面的实例代码,很简单,不多赘言。

	ViewStub mViewStub;
	TextView mTextView;
	
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mViewStub = (ViewStub) this.findViewById(R.id.viewstub);
        mViewStub.setVisibility(View.VISIBLE);
        
        mTextView = (TextView) this.findViewById(R.id.textView1);
        mTextView.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				mViewStub.setVisibility(mViewStub.getVisibility() == View.VISIBLE ? View.GONE : View.VISIBLE);
			}
		});
        
        
    }

   总结:

  1. ViewStub可以优化布局的显示,适用于需要延迟加载的布局。
  2. ViewStub被显示之后,不可以再次使用ViewStub对象来显影被ViewStub代替的布局,我在上面的textview点击事件中做了演示,大家自行测试。
  3. 当一个页面需要调用多个接口时,我认为使用异步串行调用,用户体验更好,一步步显示需要加载的数据。

     今天就到这吧,第一次写文章,大家将就看吧,我会加油的。

Android 使用ViewStub优化布局

标签:android   style   blog   http   io   ar   color   使用   sp   

原文地址:http://www.cnblogs.com/aliouswang-forever/p/4119842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!