Android中代码创建视图的好处
所谓用代码创建视图,是指不是通过XML来构造Activity的视图或者ListView的中的每隔ItemView(如下所示),
publicclass HelloWorld extends Activity {
private TextView mTextView;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView)findViewById(R.id.textView);
}
}
private TextView mTextView;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView = (TextView)findViewById(R.id.textView);
}
}
而是直接用代码来创建控件以及整个视图(如下说是),
publicclass HelloWorld extends Activity {
private TextView mTextView;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout =new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
mTextView =new TextView(this);
mTextView.setText("Hello World");
layout.addView(mTextView);
setContentView(layout);
}
}
private TextView mTextView;
@Override
publicvoid onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout =new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
mTextView =new TextView(this);
mTextView.setText("Hello World");
layout.addView(mTextView);
setContentView(layout);
}
}
其好处:
1.效率高。
因为findViewById这个函数的效率是很低的.
2.还能减小应用程序开发包(APK文件)的大小。
3.混淆后,还不容易被人破解布局。
后记:
1.当项目的工程比较大时,或者说界面比较多时,就会发现有很多重复的代码,所以,项目开始的时候,就应该考虑
大到Activity 小到一个View的创建都需要考虑重用或者把抽象的部分抽出来封装下。
2.如果是UI变化的可能性很大或者位置经常调整的或者是项目开始的时候,需要考虑先用XML来写,等待稳定或者项目后掐,由于性能需要再考虑用代码
来写布局。