Java举例include_include的用法例子,以及include+merge的用法例子

【include+LinearLayout】的使用例子

AndroidIncludeLayout.java

package com.AndroidIncludeLayout;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.Toast;public classAndroidIncludeLayout extends Activity {

@Overridepublic voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

View subLayout1=(View)findViewById(R.id.main1);

View subLayout2=(View)findViewById(R.id.main2);

Button myButton_main1=(Button)subLayout1.findViewById(R.id.mybutton);

Button myButton_main2=(Button)subLayout2.findViewById(R.id.mybutton);

Button startAnotherActivity=(Button)findViewById(R.id.startanotheractivity);

startAnotherActivity.setOnClickListener(newButton.OnClickListener(){

@Overridepublic voidonClick(View arg0) {//TODO Auto-generated method stub

Intent intent = newIntent();

intent.setClass(AndroidIncludeLayout.this, AnotherActivity.class);

startActivity(intent);

}});

myButton_main1.setOnClickListener(newButton.OnClickListener(){

@Overridepublic voidonClick(View arg0) {//TODO Auto-generated method stub

Toast.makeText(AndroidIncludeLayout.this, "Button 1 Pressed", Toast.LENGTH_LONG).show();

}});

myButton_main2.setOnClickListener(newButton.OnClickListener(){

@Overridepublic voidonClick(View arg0) {//TODO Auto-generated method stub

Toast.makeText(AndroidIncludeLayout.this, "Button 2 Pressed", Toast.LENGTH_LONG).show();

}});

}

}

mail.xml

>

android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"

/>

android:id="@+id/startanotheractivity"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text=" Start Another Activity "

/>

sublayout.xml

>

android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="SubLayout"

/>

android:id="@+id/mybutton"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text=" A Button "

/>

【include+merge】   //与上面的include用法有点不一样

LightActivity.java

/*** Copyright(c) 2014-2015 ChinaYong Hotel Media Technology Co.,Ltd.

* All Rights Reserved.

*

* Filename : LightActivity.java

* Author : Seldy lipeineng

* Creation time : 上午10:58:53 - 2015-6-4

* Description :*/

packagecom.hysmarthotel.roomcontrol;importcom.hysmarthotel.util.LogUtil;importcom.hysmarthotel.view.Temperature;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.TextView;//灯光控制

public class LightActivity extendsActivity {public staticTemperature temp;

@Overridepublic voidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

setContentView(R.layout.light);

temp= (Temperature)findViewById(R.id.temperature_light); //特殊的地方是,可以直接一步调用merge中的id,不用通过include,再去调用

log("layout1"+temp);

init();

}private voidinit() {

temp.setTemperature(MainActivity.mTemp+"");

}private voidlog(String msg) {

LogUtil.info(this.getClass(), this + ":" + msg,"i");

}

}

light.xml

android:id="@+id/lightctrl"android:layout_x="91.5px"android:layout_y="93.0px"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center_vertical"android:textSize="42.0px"android:textColor="#fff3e3d1"android:text="@string/light_ctrl"android:drawableLeft="@drawable/ic_light_t"android:drawablePadding="6px"/>

time_temp.xml

android:id="@+id/temperature_light"android:layout_x="1545.0px"android:layout_y="109.5px"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="22.5px"android:textColor="#fff3e3d1"hyhotel:prefix="@string/room_temp"hyhotel:unit="@string/celsius" />

merge标签

merge用于消除视图层次结构中的冗余视图,例如根布局是Linearlayout,那么我们又include一个LinerLayout布局就没意义了,反而会减慢UI加载速度。

又或者根布局是FrameLayout且不需要设置background或padding等属性,可以用merge代替,因为Activity的ContentView父元素就是FrameLayout,所以可以用merge消除只剩一个

ViewStub标签

ViewStub 标签最大的优点是当你需要时才会加载,使用他并不会影响UI初始化时的性能。各种不常用的布局比如进度条、显示错误消息等可以使用标签,以减少内存使用量,加快渲染速度。

由于ViewStub第一次inflate的时候,就已经将需要显示的布局替换掉自己了,所以第二次inflate的时候,getParent()是null,所以就会报异常。解决方法是inflate()的时候将view保存起来,然后下次判断这个View是否为NUll,如果是null就inflate().否则就直接使用这个view。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值