API 25 (Android 7.1.1 API) view.ViewStub

来源:互联网 发布:淘宝apass会员 编辑:程序博客网 时间:2024/06/05 18:25

Android API 25 (Android 7.1.1)


ViewStub

public final class ViewStub

extends View

Added in API level 1

 

java.lang.Object

   ↳android.view.View

    ↳android.view.ViewStub

 

 

【概述】

ViewStub是一个隐藏的,不占用内存空间的视图对象,它可以在运行时延迟加载布局资源文件。当ViewStub可见,或者调用inflate()函数时,才会加载这个布局资源文件。 该ViewStub在加载视图时在父容器中替换它本身。因此,ViewStub会一直存在于视图中,直到调用setVisibility(int)或者inflate()为止。ViewStub的布局参数会随着加载的视图数一同被添加到ViewStub父容器。同样,你也可以通过使用inflatedId属性来定义或重命名要加载的视图对象的Id值。例如:

<ViewStub android:id="@+id/stub"
               android:inflatedId="@+id/subTree"
               android:layout="@layout/mySubTree"
               android:layout_width="120dip"
               android:layout_height="40dip" />

通过"stud"id可以找到被定义的ViewStub对象。加载布局资源文件"mySubTree "后, ViewStub对象从其父容器中移除。可以通过id"subTree"找到由布局资源"mySubTree"创建的View。这个视图对象最后被指定为宽120dip,高40dip。执行加载布局资源文件的推荐方式如下:

     ViewStub stub = (ViewStub) findViewById(R.id.stub);

     View inflated = stub.inflate();

inflate()被调用,这个ViewStub被加载的视图替代并且返回这个视图对象。这使得应用程序不需要额外执行findViewById()来获取加载视图的引用。

 

注:这个类大概意思是用ViewStub类和在XML文件里面指定的布局资源文件关联起来,让布局资源文件在需要使用的时候再加载上去。主要作用是性能优化,什么时候用什么时候加载,不用在开始启动的时候一次加载,既可以加快程序的启动速度,又可以节省内存资源。

 

 

【嵌套类】

接口      ViewStub.OnInflateListener

监听器用于在ViewStub成功扩充其布局资源后接收通知。

 

【XML属性】


android:  inflatedId

API 1

关联方法:setInflatedId(int inflatedId)

属性说明:覆盖待加载视图的id值。

必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

对应的全局属性资源符号是inflatedId

 

如果膨胀的IDNO_ID,则膨胀的视图保持其原始ID

 

android:  layout

API 1

关联方法:setLayoutResource(int layoutResource)

属性说明:要引用的布局资源文件id

必须引用另一个资源(格式:@[package:]type:name)或主题属性(格式:?[package][type:]name

对应的全局属性资源符号是layout

 

指定当此StubbedView变为可见或不可见或调用inflate()时要展开的布局资源。 通过膨胀布局资源创建的视图用于替换其父级中的此StubbedView



【继承自view.View的XML属性】

跳转view.View

 


【公共构造函数】

ViewStub(Context context)

 

ViewStub(Context context, int layoutResource)

使用指定的布局资源创建一个新的ViewStub

 

ViewStub(Context context, AttributeSet attrs)

 

ViewStub(Context context, AttributeSet attrs, int defStyleAttr)

 

ViewStub(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes)

 

 

【公共方法】

draw

void draw (Canvas canvas)

API 1

手动渲染此视图(及其所有子项)给定的画布。在调用此函数之前,视图必须已经完成了完整的布局。当实现一个视图时,实现onDraw(android.graphics.Canvas)而不是覆盖这个方法。 如果你确实需要重写这个方法,调用超类的版本。

 

 

getInflatedId

int getInflatedId ()

API 1

返回由膨胀视图获取的ID。 如果膨胀的ID是NO_ID,则膨胀的视图保持其原始ID。

 

 

getLayoutInflater

LayoutInflater getLayoutInflater ()

API 16

获取当前使用在inflate()中的LayoutInflater。

 

 

getLayoutResource

int getLayoutResource ()

API 1

返回将由setVisibility(int)或inflate()使用的布局资源,以将其父视图中的此StubbedView替换为另一个视图。

 

 

inflate

View inflate ()

API 1

扩充由getLayoutResource()标识的布局资源,并通过膨胀的布局资源在其父级中替换此StubbedView。

 

 

setInflatedId

void setInflatedId (int inflatedId)

API 1

设置充气视图采用的ID。 如果膨胀的ID是NO_ID,则膨胀的视图保持其原始ID。

 

 

setLayoutInflater

void setLayoutInflater (LayoutInflater inflater)

API 16

LayoutInflater设置为在inflate()中使用,或者使用null来使用默认值。

 

 

setLayoutResource

void setLayoutResource (int layoutResource)

API 1

指定当此StubbedView变为可见或不可见或调用inflate()时要展开的布局资源。 通过膨胀布局资源创建的视图用于替换其父级中的此StubbedView。

 

 

setOnInflateListener

void setOnInflateListener (ViewStub.OnInflateListener inflateListener)

API 1

指定在此ViewStub成功扩充其布局资源后要通知的inflate侦听器。

 

 

setVisibility

void setVisibility (int visibility)

API 1

当可见性设置为VISIBLE或INVISIBLE时,将调用inflate(),并且该StubbedView在其父级中由膨胀的布局资源替换。 之后,对此函数的调用将传递到膨胀视图。


0 0