一般情况下对于Android程序布局我们往往使用XML文件来编写,这样可以提高开发效率,但是考虑到代码的安全性以及执行效率,可以通过Java代码执行创建,虽然Android编译过的xml是二进制的,
但是加载xml解析器的效率对于资源占用还是比较大的
,一般一个简单的TextView,比如
<TextView
android:id="@+id/textControl "
android:layout_width="100px"
android:layout_height="wrap_content" />
可以等价于下面的Java代码:
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(100, LayoutParams.WRAP_CONTENT); //宽度为100px,高为自适应最小的高度
// setOrientation(VERTICAL); 设置布局为垂直
TextView textControl = new TextView(this);//如果从一个XXXLayout.,比如LinearLayout为View的基类时这里this应该换成为创建改类的Context
textControl.setText("欢迎您");
addView( textControl, textParams );
<TextView
android:id="@+id/textControl "
android:layout_width="100px"
android:layout_height="wrap_content" />
可以等价于下面的Java代码:
LinearLayout.LayoutParams textParams = new LinearLayout.LayoutParams(100, LayoutParams.WRAP_CONTENT); //宽度为100px,高为自适应最小的高度
// setOrientation(VERTICAL); 设置布局为垂直
TextView textControl = new TextView(this);//如果从一个XXXLayout.,比如LinearLayout为View的基类时这里this应该换成为创建改类的Context
textControl.setText("欢迎您");
addView( textControl, textParams );
当然Java处理效率比XML快得多,但是对于一个复杂界面的编写,可能需要一些套嵌考虑,如果你思维灵活的话,使用Java代码来布局你的Android应用程序是一个更好的方法。
知道activity总要有一个xml的布局文件相对应,但如果没有这个xml 而用Java直接在代码中简单实现,也就是说,这个负责布局的xml 现在我不在写他。而是直接有java帮助我们生成,有些朋友会问,有这个必要么,自己单写个java 类实现不和xml 布局是同样的功能。但实际上,很多时候我们的界面不是完全不变的,如果一个view 中出现了大量的变化,那原来的xml 也就成了鸡肋。而且一旦我们想要将写好的一个activity自己封装成JAR包,这时多余的xml 很可能就变成了累赘。为解决这个问题,自己做了一点测试。感觉效果能简单的解决这个问题,所以发出来,大家权当参考。
在一个activity中在重写的 onCreate 方法里,我们必须将布局文件指定进来 setContentView(R.layout.XXXX ); 现在我们将这个指定的xml 放弃。
java代码:
01 |
importandroid.app.Activity; |
02 |
importandroid.content.Context; |
03 |
importandroid.content.res.Resources; |
04 |
importandroid.graphics.Bitmap; |
05 |
importandroid.graphics.BitmapFactory; |
06 |
importandroid.graphics.drawable.BitmapDrawable; |
07 |
importandroid.os.Bundle; |
08 |
importandroid.view.View; |
09 |
importandroid.widget.ImageView; |
10 |
importandroid.widget.LinearLayout; |
11 |
importandroid.widget.TextView; |