zoukankan      html  css  js  c++  java
  • android学习笔记51_编码实现软件界面,把固定不变的界面写到xml中,逻辑改变的写到程序中,

    2013/5/12
    51_编码实现软件界面
    --------------------------
    1.Android除了可以使用xml实现软件界面,还可以通过编码方式实现软件的界面,而且在某种情况下只能采用编码方式实现软件的界面,例如:软件运行时需要根据运算结果决定显示某些内容。如果不是必须,建议使用xml,
      因为这样可以使应用遵守mvc设计模式,具有良好的软件分层结构。
    -----------------------------------------------------------------
    2.根据计算结果显示样式的时候,这时候使用xml做界面就很难
    ------------------------------------
    3.比如:
       ----------------------------------------
       这个部分经常改变,可以放到编码中来控制
       ----------------------------------------
       --------------------------------------------
       这部分不变,不变的部分可以抽取出来放到xml中。
       ----------------------------------------------
       a.如果通过编码实现软件界面的时候,要把不变的部分放到xml中,这样以后修改界面的时候比较方便
       b.但通过编码方式实现界面性能上要更好一些
       c.软件要遵守mvc模式
     ------------------------------------------------------
     4.下面是通过编码实现界面的实例源码
       a.新建android项目:CodeUI
       b./CodeUI/src/com/credream/codeUI/CodeUIActivity.java
        package com.credream.codeUI;

    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.LinearLayout;
    import android.widget.TextView;

    public class CodeUIActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           //①. 新建一个线性布局对象,传入上下文对象
            LinearLayout linearLayout = new LinearLayout(this);
            /*LinearLayout的父类是ViewGroup
             * ViewGroup是一个view容器:用来装一些子控件,只有继承ViewGroup才有
             * 容纳子控件的功能,ViewGroup又继承了View,在android中,不管是控件还是
             * 容器,最后都继承自View类
             *
             * *
             */
            //垂直布局
            linearLayout.setOrientation(LinearLayout.VERTICAL);
            //①.1 新建TextView
            TextView textView = new TextView(this);
           //设置TextView显示内容
            textView.setText(R.string.hello);
           //指定textView的布局参数:宽高什么的。
            //这里指定宽填充父元素,高WRAP_CONTENT包裹内容
            ViewGroup.LayoutParams textViewParams = new ViewGroup.LayoutParams(
              ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            //①.2把textView控件添加到线性布局中。textView布局控件,textViewParams全局参数
            linearLayout.addView(textView, textViewParams);
         // ③ 得到part.xml中的布局view
            View partView = getPartUI();
            //③.1 把part.xml部分的布局添加到线性布局中
            linearLayout.addView(partView);
           
            ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(
              ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT);
            setContentView(linearLayout, layoutParams);
        }
        //② 用来得到某个部分的界面
        private View getPartUI(){
         //这里用到了布局填充服务LayoutInflater,是android系统内置的服务
         LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         return inflater.inflate(R.layout.part, null);
         //inflater.inflate(R.layout.part, null);返回View,
         //第一个参数是资源ID,可以根据界面ID这里是part.xml中,生成对应的View对象
         //第二个参数是:指定是否把生成的view对象挂接到某个父元素上面
        }
    }
    ------------------------------------------------------------------------------------
    c./CodeUI/res/layout/part.xml
      <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >
    <!-- 这个xml是控制的界面中不变的部分 ,这里添加了一个EditText控件-->
        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
           />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"  
            android:text="添加"    
            />
    </LinearLayout>
    ------------------------------------------------
    d./CodeUI/res/values/strings.xml
      <?xml version="1.0" encoding="utf-8"?>
    <resources>

        <string name="hello">Hello World, CodeUIActivity!</string>
        <string name="app_name">CodeUI编码实现软件界面</string>

    </resources>
    ------------------------------------------------------------------------

  • 相关阅读:
    获取本机IP,用户代理
    10 种机器学习算法的要点(附 Python)(转载)
    怎么查找执行比较慢的sql语句-DBA给的建议
    .net 调度器怎么实现心跳(socket除了他,没选择吧)
    分布式多计算机调度平台
    续【C# 以管理员方式启动Winform,进而使用管理员控制Windows Service】
    C# 以管理员方式启动Winform,进而使用管理员控制Windows Service
    SqlServer2008根据现有表,获取该表的分区创建脚本
    SqlServer常用命令
    创建分区表过程
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3074178.html
Copyright © 2011-2022 走看看