Android的APP的是用Java写的,运行在Dalvik虚拟机上,还有,Android的系统是基于Linux Kernel 2.6的。一个Android应用程序,用户界面是由View和ViewGroup对象构成的。
1} View
任何一个View对象都将继承android.view.View类,它是一个存储在屏幕上特定的一个矩形布局和内容属性的数据结构。一个View对象可以处理测距、布局、绘图、焦点变换、滚动条以及屏幕区域表现的按键和手势。View类为Widget服务,Widget是一组用于绘制交互屏幕元素的完全实现子类。Widget包括Text,EditText,Button,RadioButton,Checkbox,ScrollView等。
2}ViewGroup
ViewGroup是android.view.Viewgroup类的对象,它的功能是装载和管理一组View和其它ViewGroup.ViewGroup为Layout服务,Layout则是一组提供屏幕界面通用类型的完全实现子类。
在Android下,View可以响应按键和触屏两种事件:
1> boolean onKeyDown(int keyCode,KeyEvent event) 用于响应按键按下
2> boolean onKeyMultiple(int keyCode,int repeatCount,KeyEvent event) 用于响应按键重复点击。
3> boolean onKeyUp(int keyCode,KeyEvent event) 用于响应按键释放
4> boolean onTouchEvent(MotionEvent event) 用于响应触屏事件
1、RadioGroup、RadioButton
RadioButton在放在RadioGroup中,一组RadioGroup中只有一个RadioButton被选中。
genderGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
if(femaleButton.getId() == checkedId){
System.out.println("famale");
Toast.makeText(RadioTest.this, "famle", Toast.LENGTH_SHORT).show();
}
else if(maleButton.getId() == checkedId)
{
System.out.println("male");
}
}
});
2、
CheckBox
wimBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// TODO Auto-generated method stub
if(isChecked)
{
System.out.println("swim is checked");
}
else
{
System.out.println("swim is unchecked");
}
}
});
3、
Toast
Toast是一个非常小巧但很实用的东西,它的作用是弹出一些信息 提示用户。
Toast.makeText(RadioTest.this, "famle", Toast.LENGTH_SHORT).show();
4、
ProgressBar
1)在xml中可以设置样式:
style="?android:attr/progressBarStyleSmallTitle" --------小圆形进度条
style="?android:attr/progressBarStyleLarge"-----------大型圆形进度条
2)进度条的操作
class ButtonListener implements OnClickListener{
@Override
public void onClick(View v) {
if(i == 0)
{
//设置进度条处于可见的状态
firstBar.setVisibility(View.VISIBLE);
firstBar.setMax(150);
secondBar.setVisibility(View.VISIBLE);
}
else if ( i < firstBar.getMax()){
//设置主进度条的当前值
firstBar.setProgress(i);
//设置第二进度条的当前值
firstBar.setSecondaryProgress(i + 10);
//因为默认的进度条无法显示进行的状态
//secondBar.setProgress(i);
}
else{
//设置进度条处于不可见状态
firstBar.setVisibility(View.GONE);
secondBar.setVisibility(View.GONE);
}
i = i + 10 ;
}
}
5、
ListView
public class Activity01 extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map1 = new HashMap<String, String>();
HashMap<String, String> map2 = new HashMap<String, String>();
HashMap<String, String> map3 = new HashMap<String, String>();
map1.put("user_name", "zhangsan");
map1.put("user_ip", "192.168.0.1");
map2.put("user_name", "zhangsan");
map2.put("user_ip", "192.168.0.2");
map3.put("user_name", "wangwu");
map3.put("user_ip", "192.168.0.3");
list.add(map1);
list.add(map2);
list.add(map3);
MyAdapter listAdapter = new MyAdapter(this, list,
R.layout.user, new String[] { "user_name", "user_ip" },
new int[] { R.id.user_name,R.id.user_ip});
setListAdapter(listAdapter);
}
}
可以看到,它继承的是ListActivity,它采用Adapter(适配器)模式,最后要设置用哪个适配器:setListAdapter(listAdapter);
这个Adapter是什么呢?
它里面主要是用来添加一些数据。来看下它的参数
this:指这个ListActivity对象。list:就是ArrayList ,里面放的是hashMap. R.layout.user是这个ListActivity采用的布局文件。
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
// TODO Auto-generated method stub
super.onListItemClick(l, v, position, id);
System.out.println("id----------------" + id);
System.out.println("position----------" + position);
}