Android移动开发技术(慕课版)习题集题库及答案

填空题

1.在Android开发环境中,SDK组件的作用是用于(   开发    )Android应用。

2.在Android开发环境中,(   Dalvik    )组件的作用是虚拟机管理。

二、判断题

1.电子邮件客户端属于Android平台体系结构的应用程序框架层。(  F  )

2.Android 中使用AVD Manager工具进行SDK版本控制。(  F  )

3.Android 只能在Windows环境下开发。(  F  )

三、问答题

  1. 写出2种当前比较流行的移动操作系统并介绍其作用和特点。

  1. 简述Android平台体系结构的层次划分,并说明各个层次的作用。

第一层Linux内核,提供有操作系统内核管理的底层基础功能;第二层中间层,由函数库和Android运行时构成;第三层应用程序框架层,提供了Android平台的管理功能和组件重用机制;第四层应用程序层,提供了一系列核心应用程序。

习题

填空题

1.Android项目打包后生成一个(   apk     )文件。

2.Logcat日志信息按照等级由低到高划分为五个等级,分别是(  verbose    )、(   debug    )、(     info  )、(     warn    )、(   error     )。

3.如果想根据日志信息的标签进行日志信息的过滤,需要添加的过滤条件是(   tag     )。

二、问答题

1.简述签名的意义。

a) 为了保证每个应用程序开发商合法ID

b) 防止部分开发商可能通过使用相同的Package Name来混淆替换已经安装的程序

c) 保证我们每次发布版本的一致性(如自动更新不会因为版本不一致而无法安装)

2.简述Release版本和Debug版本打包生成的文件的区别。

debug模式:系统自动生成debug签名;

debug签名的应用程序不能在Android Market上架销售,它会强制你使用自己的签名;Debug模式下签名用的证书(默认是Eclipse/ADT和Ant编译)自从它创建之日起,1年后就会失效。

debug.keystore在不同的机器上所生成的可能都不一样,就意味着如果你换了机器进行apk版本升级,那么将会出现上面那种程序不能覆盖安装的问题,相当于软件不具备升级功能

通过在Android studio上运行直接在模拟机或手机上启动程序,只是调试程序而已;

release模式:用自己生成的key文件来签名;

release通常被称为发布版本。

3.简述APK文件反编译得到的几个文件的作用。

AndroidManifest  全局配置文件;

Classes.dex   java核心代码文件;

Resource  记录了资源文件的位置和id之间的映射关系;

Res文件夹  资源文件;

META-INF文件夹  用于保证apk文件的完整性和安全性;

  Mf 包含所有文件的文件名的编码值,保证apk的完整性;

  Rsa 非对称加密,被称为公钥加密标准;算法自己看;公钥加密;

  Sf 同manifest的结构,私钥加密;

习题

选择题

通过特定的接口类进行事件处理的是(   C )。

A.事件 B.事件源 C.事件监听器 D.事件处理器

二、填空题

Android的事件处理模型常用的有(   基于监听接口     )和(   基于回调接口     )。

三、问答题

1.简述基于监听接口的事件处理模型的编程步骤。

1)获取普通界面组件;

2)实现事件监听类,该监听类是一个特殊的java类,必须实现一个XXXListener接口;

3)调用事件源的setXXXListener方法注册事件监听器

2.简述Android中点击事件、长按事件、键盘事件、触摸事件、焦点改变事件、选择改变事件对应的事件监听接口。

单击事件:onClickListener;

长按事件:onLongClickListener;

键盘事件:onKeyListener;

触摸事件:onTouchListener;

焦点改变事件:onFocusChangeListener;

选择改变事件:onCheckedChangeListener

3.哪些监听方法的返回值为布尔值?其意义有何不同?

布尔值用来表示您是否已经处理完事件,以及是否应该将他继续传下去。也就是说,返回true表示已经处理事件并且事件应该就此停止;如果返回值为false表示您尚未处理事件或者事件应该继续传递给其他任何点击监听器。

四、编程题

写一个输入框,当对输入框进行触摸操作时可以获取触控行为的抬起、滑动、按下的状态,以及触摸操作的位置坐标。

   页面代码如下:

<EditText
    android:id="@+id/et_touch"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

<TextView
    android:id="@+id/tv_action"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

   其中,在输入框中显示当前坐标,在文本框中显示当前的鼠标状态值。

public class OnTouchActivity extends Activity {

    EditText et_touch;
    TextView tv_action;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ontouch_layout);

    et_touch = (EditText) findViewById(R.id.et_touch);
    tv_action = (TextView)findViewById(R.id.tv_action);

    et_touch.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int iAction = event.getAction();
            switch (iAction){
                case MotionEvent.ACTION_DOWN:
                    Log.i("tag","按下");
                    break;
                case MotionEvent.ACTION_MOVE:
                    Log.i("tag","滑动");
                    break;
                case MotionEvent.ACTION_UP:
                    Log.i("tag","抬起");
            }
            double x = event.getX();
            double y = event.getY();

            et_touch.setText("点的坐标为:("+x+","+y+")");
            tv_action.setText("action=="+iAction);
            return true;
        }
    });

习题

一、填空

1.设置Toast消息居中显示的方法是(   setGravity(Gravity.CENTER)     )。

2.创建Notification对象需要使用的是(    NotificationManager    ),发送通知栏信息使用的方法是(    notify()    ),取消发送通知栏信息的方法是(    cancel()    )。

3.创建一个AlertDialog对话框需要使用的对象类是(    AlertDialog.Builder    )。

二、简答题

1.简述Toast消息提示框的特点。

一种快速的即时消息。

消息内容简短。

悬浮于应用程序的最上方

不获得焦点

用于提示任务是否完成的消息提示机制

2.简述Notification通知栏的适用情况。

某些信息不需要用户马上处理,可以利用通知。即延迟消息,比如软件的更新、短信、新闻之类的。

3.简述一个对话框包含的内容。

图标、标题、内容、选择按钮

三、编程

编写Android程序,模拟实现用户注册功能。如果用户名是张三,密码是123,点击“登录”按钮,触发点击事件,使用Toast提示“登录成功”,否则提示“登录失败”。效果如图5.8所示。

图5.8  显示效果

activity_main.xml代码如下。

<?xml version="1.0" encoding="utf_8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

   (1)         请补全代码

    <EditText

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:id="@+id/login_password"

        android:hint="请输入您的密码"/>

   (2)         请补全代码

</LinearLayout>

MainActivity代码如下。

public class MainActivity extends AppCompatActivity {

    //声明

     (3)         请补全代码

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

     (4)         请补全代码

}

代码如下:

(1)

<EditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:id="@+id/login_username"
       android:hint="请输入您的用户名"/>(2分)

       (2)

<Button
       android:layout_gravity="center"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:id="@+id/login"
       android:text="登录" />(2分)

       (3)

        private EditText et_name,et_pass;(0.5分)
 private Button btn_login;(0.5分)

(4)

setContentView(R.layout.activity_main);(1分)
//初始化
et_name=(EditText) findViewById(R.id.login_username);(0.5分)
et_pass=(EditText) findViewById(R.id.login_password);(0.5分)
btn_login=(Button) findViewById(R.id.login);(1分)
//创建适配器
btn_login.setOnClickListener(new View.OnClickListener() {
     @Override
    public void onClick(View v)(1分)
        String name= et_name.getText().toString();
        String pass=et_pass.getText().toString();(2分)
         if("张三".equals(name)&&"123".equals(pass)){
             Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();   (2分)
         }else {
             Toast.makeText(MainActivity.this, "登录失败", Toast.LENGTH_SHORT).show();    (2分)
         }
     }
});

习题

一、填空

  1. 图片资源的存放路径(  res/drawable  )、字符串资源的存放路径(  res/strings   )、颜色资源的存放路径(  res/colors   )、尺寸资源的存放路径(  res/dimens  )。

2. 资源文件一般存放在(   xml   )格式的文件中。

3. 引用一个自定义的颜色资源,通过什么属性进行引用(  name      )。

4. 常用的数组资源中包含的子元素有(  array  )、(   integer-array  )、(string-array)

二、简答题

简述资源文件的引用方式。

自定义资源文件:@[pachage]type/name

系统资源文件:@android:type/name

R.java文件访问资源文件:R.type.name

三、编程

使用StateListDrawable资源编写一个资源文件,要求输入框在获得焦点和失去焦点时输入框中的字体分别呈现不同的颜色状态。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 获得焦点时的颜色 -->
    <item android:state_focused="true"
        android:color="@color/c4"></item>
    <!-- 失去焦点时的颜色 -->
    <item android:state_focused="false"
        android:color="@color/c6"></item>
</selector>

习题

一、选择题

如果将一个TextView的android:layout_height属性值设置为wrap_content,那么该组件的展示效果为(  D  )。

A.该文本域的宽度将填充容器的宽度

B.该文本域的宽度仅占该控件的实际宽度

C.该文本域的高度将填充容器的宽度

D.该文本域的高度仅占该控件的实际高度

二、简答题

简述TextView组件和EditText组件的区别。

TextView是一种用于显示字符串的控件

EditText则是用来输入和编辑字符串的控件

EditText是一个具有编辑功能的TextView

三、编程

编写Android程序,利用ArrayAdapter数组适配器实现图7.15的效果(注意:列表项布局使用android.R.layout.simple_list_item_1)。

图7.15  利用ArrayAdapter数组适配器实现的效果

activity_main.xml代码如下。

<?xml version="1.0" encoding="utf_8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

     (1)         请补全代码

</RelativeLayout>

MainActivity代码如下。

public class MainActivity extends AppCompatActivity {

    //声明

     (2)         请补全代码

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

     (3)         请补全代码

    }

}

代码如下:

(1)

<ListView

        android:id="@+id/listView"

        android:layout_width="match_parent"

        android:layout_height="wrap_content">

</ListView>

(2)

ListView listView; 

ArrayAdapter arrayAdapter;

(3)

setContentView(R.layout.activity_main); 

listView = (ListView)findViewById(R.id.listView); 

String[] arr_data = {"item1","item2","item3","item4"};

arrayAdapter=new ArrayAdapter(MainActivity.this,android.R.layout.simple_list_item_1,arr_data); 

listView.setAdapter(arrayAdapter);

习题

一、填空

1.通过(    TableRow    )标签划分TableLayout中的行。

2.通常使用(    layout_height    )和(   layout_weight     )常量来设置宽度或高度。

3.布局中的所有元素均使用(    View    )和(   View Group     )对象的层次结构进行构建。

二、简答题

简述Android开发过程中常用的五种布局的特点。

线性布局(LinearLayout),实现垂直或水平布局;

相对布局(RelativeLayout),根据控件之间的相对位置进行布局;

表格布局(TableLayout),将整个页面划分为行列表格进行布局;

帧布局(FrameLayout)控件只能放在页面的左上角,新添加的控件会覆盖已存在的控件;

绝对布局(AbsoluteLayout),控件的位置根据x,y坐标进行设定。

三、编程

使用RelativeLayout实现图8.16所示的布局。

图8.16  要求实现的布局

代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/tv_name"
        android:text="用户名"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <EditText
        android:id="@+id/et_name"
        android:layout_below="@+id/tv_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/btn_cancel"
        android:text="cacel"
        android:layout_below="@+id/et_name"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/bn_ok"
        android:text="ok"
        android:layout_toLeftOf="@+id/btn_cancel"
        android:layout_alignTop="@+id/btn_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

</RelativeLayout>

习题

一、填空题

1.Activity的生命周期包括运行状态、暂停状态、停止状态和( 死亡状态 )。

2.当处于暂停状态(Paused)的Activity由被覆盖状态回到前台或解锁屏时,系统会调用(  restart  )方法,再次进入( onResume   )。

3.Intent常用属性主要有(  组件  )、动作、动作的类别、数据、数据MIME类型以及附加信息等。

4.启动一个Activity并从新的组件获得返回值所需方法为(  onActivityResult()  )。

5.Intent调用可以分为(  显式  )和(  隐式  )两种类型。

6.广播接收端使用  OnReceive  )告知系统其可以接收的广播类型。

7.在Intent的Action属性中,用来标识应用程序入口的是(  ACTION_MAIN  )。

8.Android组件中运行于后台,没有界面交互的是(  Service  )。

9.使用Context的(  startActivity  )方法可以启动Activity。

10.在Android提供的通讯录数据库contact2.db中,用于存储联系人详细信息的表是(  contacts  )。

二、选择题

1.关于Activity生命周期的onCreate()和onStart()方法说法正确的是( D   )。

A.当第一次启动的时候先后调用onStart()和onCreate()方法

B.当第一次启动的时候只会调用onCreate()方法

C.如果Activity已经启动,将先后调用onCreate()和onStart()方法

D.如果Activity已经启动,将只调用onStart()方法

2.下面不是退出Activity方法的是(  C  )。

A.finish() B.System.exit() C.onStop() D.异常强制退出

3.下面在AndroidManifest.xml文件中设置访问网络权限正确的是(  A  )。

A.<uses-permission android:name="android.permission.INTERNET">

B.<uses-permission name="android.permission.INTERNET">

C.<uses-permission android:id="android.permission.INTERNET">

D.<uses-permission permission ="android.permission.INTERNET">

4.对一些资源以及状态的操作保存,最好是保存在生命周期的(  A  )函数中进行。

A.onPause() B.onCreate() C.onResume() D.onStart()

5.Android中属于Intent的作用的是(  C  )。

A.实现应用程序间的数据共享

B.Intent是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会因为切换页面而消失

C.可以实现界面间的切换,可以包含动作和动作数据,连接四大组件的纽带

D.处理一个应用程序整体性的工作

6.(  A  )通常就是一个单独的窗口界面。

A.Activity B.Intent C.Service D.Content Provider

7.关于Service生命周期的onCreate()和onStart(),说法正确的是(  D  )。

A.当第一次启动的时候先后调用onStart()和onCreate()方法

B.当第一次启动的时候只会调用onCreate()方法

C.如果Service已经启动,将先后调用onCreate()和onStart()方法

D.如果Service已经启动,只会执行onStart()方法,不在执行onCreate()方法

8.下列关于ContentProvider,说法错误的是(  C  )。

A.ContentProvider的作用是实现数据共享和交换

B.要访问ContentProvider,只需调用ContentProvider增、删、改、查的相关方法

C.Content Provider提供的URI必须以“content://”开头

D.Android对于系统里的音视频、图像、通讯录提供了内置的ContentProvider

三、简装题

描述Android中ContentProvider的作用。

内容提供者组件通过请求从一个应用程序向其他的应用程序提供数据。这些请求由类 ContentResolver 的方法来处理。内容提供者可以使用不同的方式来存储数据。数据可以被存放在数据库,文件,甚至是网络。

有时候需要在应用程序之间共享数据。这时内容提供者变得非常有用。

内容提供者可以让内容集中,必要时可以有多个不同的应用程序来访问。内容提供者的行为和数据库很像。你可以查询,编辑它的内容,使用 insert(), update(), delete() 和 query() 来添加或者删除内容。多数情况下数据被存储在 SQLite 数据库。

四、程序设计

设计一个应用,界面中有一个EditText控件和一个Button控件,当点击按钮时,能够打开在EditText中输入的网址。

习题

一、填空题

1.SharedPreferences最终的存储形式是(    xml    )文件。

2.使用SharedPreferences方式操作数据时,首先要通过Context的(   getDefaultSharedPreferences()     )函数获得SharedPreferences类对象。

二、选择题

1.下面关于SharedPreferences的表述正确的是(  D  )。

A.SharedPreferences pref=new SharedPreferences()

B.Editor editor=new Editor()

C.SharedPreferences.apply()操作会马上将数据写入磁盘文件

D.Editor对象存储数据最后都要调用commit()方法

2.下面关于Android数据存储方式描述错误的是(  B  )。

A.Android可以采用SharedPreferences数据存储

B.Android文件存储形式中,用户只能访问外部存储

C.Android可以使用数据库存储

D.Android可以采用ContentProvider存储数据

3.关于Android中文件操作描述正确的是(  C  )。

A.Android应用只能访问本应用程序的文件

B.Android应用可以获得图片、音频等公共存储空间中的文件

C.Android应用能够读取其他应用程序空间中的文件

D.Android应用能够修改其他应用程序空间中的文件

三、编程题

根据所学的Android文件操作知识,实现一个记事本功能的App。

习题

一、填空题

1.SQLite数据库中用于获取帮助的命令是( .help   )。

2.在用游标操作SQLite数据表时,获取数据表中记录数的方法是(  query()  )。

3.用SQLiteOpenHelper类操作数据库时,数据库表建立语句一般在(  onCreate()  )方法中执行。

4.SQLiteOpenHelper类操作数据库时,当数据库版本发生改变时,会自动调用( onUpdate()   )方法。

二、选择题

1.下面关于SQLite数据库描述正确的是(  D  )。

A.SQLite数据库中数据类型是强数据类型

B.SQLite数据库操作时,如果插入的数据类型与字段数据类型不一致,则一定不能插入

C.SQLite数据库只能应用在Android系统中

D.SQLite中能够使用事务操作

2.下面关于SQLite操作描述不正确的是(  C  )。

A.SqliteOpenHelper类主要用来创建数据库和更新数据库

B.SqliteDatabase类可以用来操作数据库

C.在每次调用SqliteDatabase类的getWritableDatabase()方法时,会执行SqliteOpenHelper类的onCreate()方法

D.当数据库版本发生变化时,可以自动更新数据库结构

三、论述题

简要论述在Android项目中,用MVC开发数据库系统的基本操作步骤。

视图层(View) 对应于xml布局文件和java代码动态view部分。

控制层(Controller) MVC中Android的控制层是由Activity来承担的,Activity本来主要是作为初始化页面,展示数据的操作,但是因为XML视图功能太弱,所以Activity既要负责视图的显示又要加入控制逻辑,承担的功能过多。

模型层(Model) 针对业务模型,建立的数据结构和相关的类,它主要负责网络请求,数据库处理,I/O的操作。

习题

简答题

简述android:visibility属性对应的属性值及区别。

可见(visible)

XML文件:android:visibility=“visible”

Java代码:view.setVisibility(View.VISIBLE);

不可见(invisible)

XML文件:android:visibility=“invisible”

Java代码:view.setVisibility(View.INVISIBLE);

隐藏(GONE)

XML文件:android:visibility=“gone”

Java代码:view.setVisibility(View.GONE)

二、编程题

编程实现图12.9所示的效果。当点击第1个按钮时,实现图12.10所示的效果;当点击第3个按钮时,实现图12.11所示的效果。

           

图12.9  实现效果1                               图12.10  实现效果2

图12.11  实现效果3 

代码如下:

Java代码:

public class MainActivity extends Activity {

private TextView txt222 = null;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

txt222 = (TextView)findViewById(R.id.txt2222);

findViewById(R.id.btn1).setOnClickListener(listener);

findViewById(R.id.btn2).setOnClickListener(listener);

findViewById(R.id.btn3).setOnClickListener(listener);

}

View.OnClickListener listener = new View.OnClickListener() {

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.btn1:

txt222.setVisibility(View.VISIBLE);

break;

case R.id.btn2:

txt222.setVisibility(View.INVISIBLE);

break;

case R.id.btn3:

txt222.setVisibility(View.GONE);

break;

}

}

};

}

Xml代码:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical" >

    <LinearLayout

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:layout_marginBottom="20dip"

        android:orientation="horizontal" >

        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_weight="1"

            android:background="#F00"

            android:text="1111"

            android:visibility="visible" />

        <TextView

            android:id="@+id/txt2222"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_weight="1"

            android:background="#0F0"

            android:text="2222"

            android:visibility="visible" />

    </LinearLayout>

    <Button

        android:id="@+id/btn1"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="2222 VISIBLE" />

    <Button

        android:id="@+id/btn2"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="2222 INVISIBLE" />

    <Button

        android:id="@+id/btn3"

        android:layout_width="fill_parent"

        android:layout_height="wrap_content"

        android:text="2222 GONE" />

</LinearLayout>

  • 18
    点赞
  • 119
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高校知识店铺合集汇总

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值