您的位置:首页 > 移动开发 > Android开发

android学习笔记---51_编码实现软件界面,把固定不变的界面写到xml中,逻辑改变的写到程序中,

2013-05-12 16:28 387 查看
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>
------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: