zoukankan      html  css  js  c++  java
  • 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 class AndroidIncludeLayout extends Activity { 
         
        @Override 
        public void onCreate(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(new Button.OnClickListener(){ 
    
       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        Intent intent = new Intent(); 
                 intent.setClass(AndroidIncludeLayout.this, AnotherActivity.class); 
                 startActivity(intent); 
         
       }}); 
             
            myButton_main1.setOnClickListener(new Button.OnClickListener(){ 
    
       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        Toast.makeText(AndroidIncludeLayout.this, "Button 1 Pressed", Toast.LENGTH_LONG).show(); 
       }}); 
             
            myButton_main2.setOnClickListener(new Button.OnClickListener(){ 
    
       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        Toast.makeText(AndroidIncludeLayout.this, "Button 2 Pressed", Toast.LENGTH_LONG).show(); 
       }}); 
        } 
    } 

    mail.xml 

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        > 
    <TextView 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="@string/hello" 
        /> 
    <include android:id="@+id/main1" layout="@layout/sublayout" /> 
    <include android:id="@+id/main2" layout="@layout/sublayout" /> 
    <Button 
        android:id="@+id/startanotheractivity" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text=" Start Another Activity " 
        /> 
    </LinearLayout> 

    sublayout.xml 

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:background="#505050" 
        > 
    <TextView  
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text="SubLayout" 
        /> 
    <Button 
    android:id="@+id/mybutton" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:text=" A Button " 
        /> 
    </LinearLayout> 

    【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 :
     */
    package com.hysmarthotel.roomcontrol;
    
    import com.hysmarthotel.util.LogUtil;
    import com.hysmarthotel.view.Temperature;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    //灯光控制
    public class LightActivity extends Activity {
        public static Temperature temp;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.light);
            temp = (Temperature)findViewById(R.id.temperature_light);  //特殊的地方是,可以直接一步调用merge中的id,不用通过include,再去调用
            log("layout1"+temp);
            init();
        }
        private void init() {
            temp.setTemperature(MainActivity.mTemp+"");
        }
        private void log(String msg) {
            LogUtil.info(this.getClass(), this + ":" + msg,"i");
        }
    }

    light.xml

    <?xml version="1.0" encoding="utf-8"?>
    <AbsoluteLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg1" >
        <TextView
            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"/>
        
        <include android:id="@+id/include1" layout="@layout/time_temp"/>    
    </AbsoluteLayout>

    time_temp.xml

    <?xml version="1.0" encoding="utf-8"?>
    <merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:hyhotel="http://schemas.android.com/apk/res/com.hysmarthotel.roomcontrol" >
    
    <com.hysmarthotel.view.Temperature
    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>

    Android 布局优化 include+merge+ViewStub标签详解

    merge标签

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

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

    ViewStub标签

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

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

  • 相关阅读:
    C#RSA的研究,C#、Java互通
    .NetCore接入Log4Net
    asp.net core 5.0 使用log4net
    C# 根据出生年月 计算天数/计算X岁X月X天字符串
    DateTime? 转对象出错的问题
    WPF新的窗口返回值的方式
    C# Post
    数据库跨服务器更新表内容
    sql server 初学乱记
    sql server 2008/k3 cloud 安装踩雷
  • 原文地址:https://www.cnblogs.com/lipeineng/p/5215988.html
Copyright © 2011-2022 走看看