Quokka

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

任务目标:

  • 完成任务T2这一章的总结,可以使用思维导图说明整章的知识点结构,使用关键代码说明要点(但不能只有代码),以及对错误及其解决方案的总结。
    目标是让自己和同学都能对这一章的知识点有收获。

任务T2:学生空间APP的界面设计

  • T2-1:基本控件(一)
  • T2-2:基本控件(二)
  • T2-3:触屏与键盘事件
  • T2-4:菜单与消息通知

好了,下面我们来讲正文。

  • T2-1基本控件(一)

在为手机应用程序开发界面的时候会用到很多的控件,且控件的数量是非常之多的,我们不肯一个个的学完。但是他们之间的使用方法是大同小异的,所以我们需要学习一些很典型的,然后再去举一反三就好了,再不行不是还有度娘可以问嘛!~在这个标题下面我们主要学习的控件有三个。

1. TextView控件
Android的界面组件都是布局在<res/layout/main.xml>配置文件中的,最主要的功能是现实程序的布局。TwxtView控件的功能是像用户显示文本的内容,但不允许编辑复制。
TextView较常用的属性为android:layout_width;
android:layout_height表示组件的宽和高,android:text表示显示消息的内容。表示结束这个标签但是TextView并不是容器类的组件,所以可以在组件最后的“>”加上“/”结束标签。举个栗子

     <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="头   像"
       android:textSize="20sp"/>

2. EditText控件
EditText是TextView的子类具有TextView的属性特点,允许文本编辑在此就不再过多赘述。
EditText是一个非常重要的组件,她说用户和android引用进行数据传输的窗口,通过她用户可以把数据传给android应用然后得到用户想要的数据。
ps: 在EditText控件中输入数据,需要先获取焦点。如果希望程序一开始执行时就使EditText控件获得焦点,必须加入标签强制获取输入焦点。不过因为标签并不是属性,要把它包含在EditText标签中,必须使用完整的结束标签
3.Button控件
Button控件的功能是提供点击按钮,通过设置的监听事件,执行制定的动作。举个栗子

<Button
            android:id="@+id/sure"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="确   认"
            android:textSize="20sp"/>
  • T2-2基本控件(二)

1. ImageView控件
ImageView控件是用于展示图片 控件,可以展示两类图片:一类是普通的静态图片;一类是公告台的图片,如GIF格式的图片。其中关键属性android:src用于设置ImageView中展示什么图片可以通过XML或代码赋值。android中推荐使用PNG图片,要注意的是文件命名时无论文件名或扩展名都必须使用小写英文字母,否则执行时会产生应用程序的错误。举个栗子

 <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:src="@mipmap/ic_launcher"/>

PS: 需要主义的是图片存放的路径,图片存在drawable下,图标存在mipmap下。

2.CheckBox控件
CheckBox和Button一样,也是一种常见的控件,它是一个带有选中/未选中状态的按钮,可以用于多选的场景,也可以用于只有一个选项的情况,如注册时是否同意使用协议选项。
CheckBox的有点在于不用用户去填写具体的星系,朱需要需那种选择框;缺点是只有“选择”和“不选择”两种情况,但往往可以利用它的这特性来获取相信的信息。CheckBox的关键属性及方法如下:android:text用于这只CheckBox控件提示文字,android:checked=“true”用于设置此标签的初始状态为选中,isChecked(Boolean flag)通过传递一个布尔参数来设置按钮的状态。
PS: 改变CheckBox的选择状态哟扑三种:XML中声明,代码动态改变,用户触摸单击。举个栗子

 <CheckBox
            android:id="@+id/android1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Android"
            android:textSize="20sp"/>

还有: CheckBox可以并列写多个。

3.RadioGroup,RadioButton控件

RadioButton控件是一个单选按钮,需要跟RadioGroup控件一起使用才能实现单选效果。
RadioGroup是单选组合框,它用于把RadioButton框起来。在没有RadioGroup的情况下RadioButton可以全部选中;而在多个RadioButton被RadioGroup包含的情况下RadioButton只能选一个,也就实现了单选结果。
RadioGroup和RadioButton在使用过程中需要注意几点:

  • 不同的RadioGroup中的RadioButton互不相干,举个例子 RadioGroupA中有一个被选中了,RadioGroupB 中依然可以有一个被选中。
  • 通常,一个RadioGroup中至少有2个 RadioButton。
  • 一般而言,一个RadioGroup中的RadioButton默认有一个被选中(也可以不选),通常建议把它放到RadioGroup中的起始位置。
  • 在编程中,一般使用RadioGroup的getCheckedRadioButtonId方法来获取RadioGroup中具体哪一个RadioButton被选中。再举个栗子
<RadioGroup
            android:id="@+id/xingbie"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:orientation="horizontal">
            <RadioButton
                android:id="@+id/r_man"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"
                android:textSize="20sp"/>

PS: RadioButton和CheckBox的区别:

1.单个RadioButton在选中后,通过点击无法变为未选中

单个CheckBox在选中后,通过点击可以变为未选中

2.一组RadioButton,只能同时选中一个

 一组CheckBox,能同时选中多个

3.RadioButton在大部分UI框架中默认都以圆形表示

 CheckBox在大部分UI框架中默认都以矩形表示  
  • T2-3 触碰与键盘事件

1. android常见事件
当用户按下一个按键时,可能已经涉及若干个事件。例如,按数字“0”,会涉及按下事件和一个释放(松开)事件。另外,在android引用程序的使用过程中会可能会涉及触碰事件,所以在android系统中,事件是重要的常用功能之一。
在android系统中,可以使用监听器来监听事件的发生,并处理相应的按键相应事件和触屏相应事件,常见的事件说明如下:

  • onClick(View v)用来处理一个普通的按键事件
  • onTouchEven(MotonEvent event)触碰事件,当触屏上有动作发生时
  • boolean onKeyUp (int keyCode,KeyEven event)当长时间按时发生。

2.onTouchEvent 事件
onTouchEvent的手机屏幕事件的处理方法,重写Actibity的onTouchEvent方法后,当屏幕有touch事件时,此方法就会被调用。嗯,这个大概就是这样的吧……

3.键盘事件
要监听键盘事件,必须知道按下和释放两种不同的操作。键盘事件主要用于对键盘事件的监听,根据用户输入内容对键盘事件进行跟踪,键盘事件使用View.OnKeyListener借口进行事件处理。在具体使用时,可为控件设置OnKeyListener监听器。

  • T2-4 菜单与消息通知

1.菜单
菜单是许多应用程序中不可缺少的一部分,在android系统中也是如此。常用菜单分为两类,一类是选项菜单, 即为最常见的菜单,android中把它叫做option menu;另一类是上下文菜单,即android中长按视图控件后出现的菜单,window中右键弹出的快捷菜单即为上下文菜单。

  • 选项菜单
    选项菜单在2.3版本以及以下是按menu按键时弹出,4.0版本的android取消了菜单物理按键。一般每个activity都默认自带了一个menu,我们要做的就是为它加菜单项和响应菜单项的单击事件。android.view.MenuItem代表每个菜单项,android.viwe.SubMenu代表子菜单。activity包含一个菜单,一个菜单又能包含多个菜单项和多个子菜单,子菜单其实也是菜单,因为它实现了menu借口,因此子菜单也可以包含多个菜单项。举个栗子
 public boolean onCreateOptionsMenu(Menu menu) {
        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);  
        //add()方法的帝国参数依次如下  
        组别,如果不分组就写menu.NONE;  
        ID,android根据这个ID来确定不同的菜单;  
        顺序,哪个菜单此案在在前面由这个参数的大小决定;  
        文本,菜单的显示文本
        return true;
    }

使用onOptionsItemSelected(MenuItem item)为方法菜单项注册事件。举个栗子

public boolean onOptionsItemSelected(MenuItem item) {
       switch (item.getItemId()){
           case Menu.FIRST+1:
               //TODO
               Toast.makeText(this,"保存成功",Toast.LENGTH_LONG).show();
           case Menu.FIRST+2:
               //TODO
               Toast.makeText(this,"删除成功",Toast.LENGTH_LONG).show();
           case Menu.FIRST+3:
               //TODO
               Toast.makeText(this,"成功打开",Toast.LENGTH_LONG).show();

       }

       return super.onOptionsItemSelected(item);
   }
}

ps: case可以并排多个写一起

  • 上下文菜单
    上下文菜单不同于选项菜单,选项菜单服务于activity,而上下文菜单则是注册到某个view对象上的。当用户长按屏幕时,android系统会调用onCreateContextMenu()方法。在onCreateContextMenu()方法中可以利用add()方法,即可以加入指定的菜单项,它的基本格式与OptionMenu相同。然后再注册上下文菜单。关于栗子,大家上网查一查就好了!太难打了,我就不放了!

  • 对话框
    android中主要的对话框类如下所示。
    AlertDialog:一个可以拥有0,1,2,或3个按钮的对话框,它里面的内容可以是文本、checkbox,或radio的listview,它是一个进场被用到的dialog。

    progressdialog:一个窗体内部是progress的dialog,它继承了AlertDialog,所以它拥有的按钮和AlertDialog一样。

    datepickerdialog:一个提供选择日期功能的dialog

    timepickdialog:一个提供选择时间功能的dialog

    创建对话框的步骤如下:

  1. 创建一个builder对象。
  2. 设置要创建的dialog的参数,如几个按钮、显示什么内容等。
  3. 为按钮设置回调函数(因为android中的dialog都是异步的,所以需要回调函数)。
  4. 根据上上面几步的设置,使builder生成dialog对象。
  5. 使用show()方法将dialog显示出来。

3.消息通知
notification是一种使用户的应用程序在没有开启的情况下或在后台运行时警示用户,给用户消息提示的方式。notification一般用在电话,短信,邮件,闹钟铃声这邪恶场景中,当满足一定条件时,就会在手机的状态栏上出现一个小图标,提示用户处理这个通知,此时手从上方华东状态栏就可以展开并处理这个通知了。
notification使用步骤如下。

  1. 通过getSystemService()方法得到notificationmanager对象。
  2. 对notification的一些属性精心设置,如内容,图标,标题,相应的notification的动作处理等。
  3. 通过notificationmanager对象的notify()方法来执行一个notification的消息。
posted on 2017-03-26 11:53  Quokka  阅读(197)  评论(8编辑  收藏  举报