1.如何使用AlertDialog显示一个列表?

  • 使用AlertDialog.Builder.setItems方法。
  • 在setItems中定义DialogInterface.OnClickListener监听器

2.如何使用AlertDialog实现单选按钮?

  • 定义一个字符串数组,用来填充选项
  • new一个AlertDialog.Builder对象
  • setSingleChoiceItems(数组,-1,new OnClickListener{})

3.如何使用AlertDialog实现多选?

  • 定义一个字符串数组,用来填充选项
  • new一个AlertDialog.Builder对象
  • setMultiChoiceItems(数组,new boolean[]{默认},new DialogInterface.OnMultiChoiceClickListener(){...})

4.如何修改对话框的位置?

  • 使用Window对象获取对话框在窗口位置的对象,Window window=alertDialog.getWindow();
  • 然后使用window.setGravity(Gravity.TOP|Gravity.LEFT)设置位置

5.如何改变对话框的透明度?

  • 使用Window对象获取对话框窗口位置的对象,Window window=alertDialog.getWindow();
  • 使用window.getAttributes获取WindowManager.LayoutParams布局参数
  • 然后将布局参数中的alpha设置为浮点数即可
  • 最后调用窗口对象window.setAttributes重新设置改写的属性即可

6.请写出显示一个Toast信息框的Java代码?

  • Toast textToast=Toast.makeText(this,"我的信息",Toast.LENGTH_LONG);
  • textToast.show();

7.如何自定义Toast显示的时长?

  • 需要用反射机制来实现
  • 调用Toast.TN.show来显示,调用Toast.TN.hide来关闭
  • 所以需要先从Toast对象中获得mTN变量(反射实现)
  • 然后从TN对象总获得show方法(反射实现)

8.请描述一下在状态栏上显示一个NotificationManager对象的步骤?

  • 先获取NotificationManager对象,getSystemService(NOTIFICATION_SERVICE)即可得到该对象
  • 直接创建一个Notification,new Notification(R.drawable.icon,"消息...",System.currentTimeMillis());
  • 建立一个关联应用程序的类,PendingIntent对象,PendingIntent.getActivity(this,0,getIntent(),0);保证程序关闭,对象不会释放
  • 设置通知详细信息,notification.setLatestEventInfo(this,"天气转凉,注意添加衣物",pendingIntent对象);
  • 展示通知,使用通知管理实例.notify(R.drawable.icon,notification)

9.如何做才能在单击Notification后弹出一个Activity?

  • 使用PendingIntent.getActivity方法获取一个PendingIntent对象,这个对象创建了一个关联应用程序的类。即时APP已经关闭,对象依旧存在。
  • 调用方式:notification.setLatestEventInfo(this,"消息标题","消息内容",上面pendingIntent对象)。
  • 如何发送广播:PendingIntent.getBroadcast(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT);
  • 如何开始服务:PendingIntent.getService(this,1,intent,PendingIntent.FLAG_UPDATE_CURRENT);

10.如何从状态栏清除Notification?

  • 使用NotificationManager.cancel方法

11.如何自定义Notification?

  • RemoteViews类来配合,常用于通知和桌面小组件
  • 使用方式:RemoteViews remoteViews=new RemoteViews(getPackageName(),R.layout.布局名);
  • 通知怎么关联:notification.contentView=remoteViews;

12.请描述一下如何为一个Activity添加选项菜单?

  • 实现Activity.onCreateOptionsMenu方法
  • 添加菜单即通过menu.add方式添加

13.如何自定义选项菜单?

  • 自定义选项菜单用PopupWindow对象来模拟选项菜单。
  • 通过重写onKeyDown来显示和关闭自定义选项菜单。

Android面试收集录 对话框、信息提示和菜单的更多相关文章

  1. Android面试收集录7 AsyncTask详解

    1.Android中的线程 在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,即线程不可能无限制地产生, 并且 **线程的创建和销毁都会有相应的开销.**当系统中存在大量的线 ...

  2. Android面试收集录 Android组件

    1.请说出Android SDK支持哪些方式显示富文本信息? 使用TextView组件可以显示富文本信息,如果要实现图文混排,需实现ImageGetter接口 使用WebView组件显示HTML页面 ...

  3. Android面试收集录1 Activity+Service

    1.Activity的生命周期 1.1.首先查看一下Activity生命周期经典图片. 在正常情况下,一个Activity从启动到结束会以如下顺序经历整个生命周期: onCreate()->on ...

  4. Android面试收集录 蓝牙与WiFi

    1.打开手机中的蓝牙功能有哪些方法? 法1:使用Intent  ==>new Intent(BluetoothAdaper.ACTION_REQUEST_ENABLE); startActivi ...

  5. Android面试收集录 网络与加密

    1.创建Socket对象需要至少指定哪些信息? IP(或域名)和端口号 Socket socket=new Socket("www.baidu.com",80); 2.如何使用So ...

  6. Android面试收集录18 Android Context详解

    Activity mActivity =new Activity() 作为Android开发者,不知道你有没有思考过这个问题,Activity可以new吗?Android的应用程序开发采用JAVA语言 ...

  7. Android面试收集录17 Android进程优先级

    在安卓系统中:当系统内存不足时,Android系统将根据进程的优先级选择杀死一些不太重要的进程,优先级低的先杀死.进程优先级从高到低如下. 前台进程 处于正在与用户交互的activity 与前台act ...

  8. Android面试收集录15 Android Bitmap压缩策略

    一.为什么Bitmap需要高效加载? 现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制,只有小几十M,如16M,这导致加载Bitmap的时候很容易出现内存溢出.如下异常信息, ...

  9. Android面试收集录13 Android虚拟机及编译过程

    一.什么是Dalvik虚拟机 Dalvik是Google公司自己设计用于Android平台的Java虚拟机,它是Android平台的重要组成部分,支持dex格式(Dalvik Executable)的 ...

随机推荐

  1. 一点一点学写Makefile(2)-自动搜所当前目录下的所有源文件

    上个博客我们使用的是笨方法添加源文件,本次我要实现的是遍历文件夹来获得所有的cpp文件 //makefile CROSS = CC = $(CROSS)gcc CXX = $(CROSS)g++ DE ...

  2. 【[HAOI2011]Problem c】

    好题啊 先考虑一些如何判掉无解的情况 我们开一个桶,存一下每个编号有多少个人必须选,之后做一个后缀和,之后我们扫一遍,如果一旦有一个后缀和\(pre[i]\)超过\(n-i+1\)就不合法了,因为我们 ...

  3. 2016 ACM/ICPC亚洲区大连站-重现赛 解题报告

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5979 按AC顺序: I - Convex Time limit    1000 ms Memory li ...

  4. [19/03/23-星期六] 容器_ 泛型Generics

    一.概念 生活中的容器不难理解,是用来容纳物体的,程序中的“容器”也有类似的功能,就是用来容纳和管理数据. 数组就是一种容器,可以在其中放置对象或基本类型数据. ---优势:是一种简单的线性序列,可以 ...

  5. 学习换脸:Switching Eds: Face swapping with Python, dlib, and OpenCV

    学习GitHub上比较火换脸博客,原英文版:https://matthewearl.github.io/2015/07/28/switching-eds-with-python/ 系统win10,x6 ...

  6. 【洛谷P1118】数字三角形

    数字三角形 题目链接 4 16 3 1 2 4 3 1 2 4 (3+1) (1+2) (2+4)(3+1+1+2) (1+2+2+4) (3+1+1+1+2+2+2+4)16=1*3+3*1+3*2 ...

  7. SuperSocket 学习

    http://www.cnblogs.com/Anaren/p/6382841.html https://www.assetstore.unity3d.com/en/#!/content/21721 ...

  8. java和c通信相关的数据类型转换

    利用socket进行网络传输的时候往往需要将int转换为bytes,将string转换为bytes以及一些其他类型的数据转换 java和c类型的区别: 变量类型 C中字节数 Java中字节数 int ...

  9. JavaScript高阶函数map/reduce、filter和sort

    map() 举例说明,比如我们有一个函数f(x)=x²,要把这个函数作用在一个数组[1,2,3,4,5,6,7,8,9]上. 由于map()方法定义在JavaScript的Array中,我们调用Arr ...

  10. Spring Boot应用的测试——Mockito

    Spring Boot应用的测试——Mockito Spring Boot可以和大部分流行的测试框架协同工作:通过Spring JUnit创建单元测试:生成测试数据初始化数据库用于测试:Spring ...