Android学生空间界面设计涉及到的常用基本控件有TextView,EditText,Button,ImageView,CheckBox,RadioButton,基本事件有触屏和键盘事件,包括onTouchEvent,View.OnKeyListener等,菜单包括选项菜单和上下文菜单,消息通知Notification
近一个月的学习,让我对Android有了一个初步的认识,学习Android从基础知识学起。这一章学的为基本的界面设计,其中有着界面布局,控件,事件,消息通知。在学习中我学会了如何跟着老师的思路,再通过课后的学习和练习来巩固自己在课上学到的知识。这当中也遇到了许多基本的Android问题,包括如何建立一个layout布局,以及界面控件中TextView,EditText中layout的设计和居中,居右,居左问题,以及layout的完整性。
基本控件很简单,有些组件需要在Java中定义它们,如
private ImageView image;
private RadioButton cmh;
private ImageView image;
private RadioButton cmh;
还需用findViewById获取组件的ID,如:
image = (ImageView) findViewById(R.id.image);
chkchinese=(CheckBox)findViewById(R.id.chb_Chinese);
image = (ImageView) findViewById(R.id.image);
chkchinese=(CheckBox)findViewById(R.id.chb_Chinese);
组件按钮需设置监听,在按钮的onClick重获取组件并显示
btnConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
String name=edtname.getText().toString();
btnConfirm.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
String name=edtname.getText().toString();
我觉得Java中的代码是需要一步一步来编写的,这其中需要思考的,不能按部就班的写代码。在学习中解决问题,复习学过的知识。
控件所遇到的问题,以及解决的方法:
控件要设置ID的需要设置,需要获取的必须写上。在写RadioButton时需要一个Radiogroup来写时,不能在其中设置linerlayout,否则会破坏group中只能单选按钮的规则。
在imageView中用图时需要从drawerable中把图片放进去。
TextView中跑马灯的效果需要用android:ellipsize="marquee";
触屏中的问题比较难理解,反正就是当按钮被点击时,方法的调用,处理触屏事件:
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
float x=event.getX();
float y=event.getY();
String pos="x坐标:"+x+",y坐标:"+y;
Toast.makeText(this,pos,Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_DOWN) {
float x=event.getX();
float y=event.getY();
String pos="x坐标:"+x+",y坐标:"+y;
Toast.makeText(this,pos,Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
}
菜单以及通知
public boolean onCreateOptionsMenu(Menu menu){
//1.动态菜单
menu.add(Menu.NONE,Menu.FIRST+1,1,"保存").setIcon(android.R.drawable.ic_menu_save);
menu.add(Menu.NONE,Menu.FIRST+2,3,"删除").setIcon(android.R.drawable.ic_menu_delete);
menu.add(Menu.NONE,Menu.FIRST+3,2,"打开").setIcon(android.R.drawable.ic_menu_add);
//2.子菜单
SubMenu subMenu=menu.addSubMenu("子菜单");
subMenu.add(0,101,0,"子菜单1");
subMenu.add(0,102,0,"子菜单2");
//3.从xml加载
getMenuInflater().inflate(R.menu.main,menu);
MenuInflater inflater=getMenuInflater();//获取菜单加载器
inflater.inflate(R.menu.main,menu);//加载菜单的xml到menu对象
return true;
}
public boolean onCreateOptionsMenu(Menu menu){
//1.动态菜单
menu.add(Menu.NONE,Menu.FIRST+1,1,"保存").setIcon(android.R.drawable.ic_menu_save);
menu.add(Menu.NONE,Menu.FIRST+2,3,"删除").setIcon(android.R.drawable.ic_menu_delete);
menu.add(Menu.NONE,Menu.FIRST+3,2,"打开").setIcon(android.R.drawable.ic_menu_add);
//2.子菜单
SubMenu subMenu=menu.addSubMenu("子菜单");
subMenu.add(0,101,0,"子菜单1");
subMenu.add(0,102,0,"子菜单2");
//3.从xml加载
getMenuInflater().inflate(R.menu.main,menu);
MenuInflater inflater=getMenuInflater();//获取菜单加载器
inflater.inflate(R.menu.main,menu);//加载菜单的xml到menu对象
return true;
}
消息通知用toast定义,如
Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show();
}
});
Toast.makeText(MainActivity.this,info,Toast.LENGTH_LONG).show();
}
});
这之上的基本就是这章的全部内容,在Android中的学习不局限于课上的学习,课后学习和练习也是很重要的。在练习中遇到的问题大都可以通过Internet解决,所以大都来自前辈的经验,他们也是不断地练习来总结的。不过Java代码中的编写是我的难点,Java没学到位是我的痛,所以在activity中Java代码需要记住如何实现一个一个程序的功能,通过模仿学习,不断总结,不断解决所遇到的问题来完成学习。