Android经典面试题目及解答(三)
来源:互联网 发布:孙俪淘宝网店 编辑:程序博客网 时间:2024/05/18 02:19
1、Android支持的容器组件?
ViewGroup的子类都支持,五大布局。
2、如何让容器内组件可以水平横向都能滑动?
ScrollView和HorizontalScrollView的综合使用。
3、如何让Gallery循环显示图像?
BaseAdapter的getCount返回一个较大值,如Integer.MAX_VALUE,在getView里当position的值大于图片的个数时用position对图片个数求余即可。
4、静态引用和动态引用的区别及支持的类型?
静态引用:组件连同主程序一起封装在编译后的目标文件中,如包含.class的jar文件、NDK Librarie(.so文件)、另一个Eclipse Java或Android工程。
动态引用:主程序和组件是分离的,组件可以单独升级或卸载。如未安装的apk文件,Service,Activity、JavaScript脚本、包含classes.dex文件的jar文件
5、如何将可视组件封装在jar文件中以及如何通过Java代码适应不同的屏幕?
直接将可视组件的.class文件放到jar文件中即可,不过组件使用的资源文件要放到主工程的res目录的相关子目录中。在xml布局文件中使用组件要指定全名。
6、如何编写自定义可视化组件?
三种模式:扩展现有控件,如直接继承TextView,重写onDraw;组合多种控件;直接从View继承。
DisplayMetrics dm = new DisplayMetrics();
dm.setToDefaults();
int pixel = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, dm);
textView1.append("" + pixel);
上面的代码可以将20dip转换为像素px为单位。但这种方法和http://blog.csdn.net/yanzi1225627/article/details/17199323说的还不是一回事。
7、如何动态装载apk文件(未安装)中的类,写出核心代码?
android程序运行在daivik虚拟机上,而不是传统的JVM上,因此andoid不能动态装载传统的jar文件,而apk文件是被编译成Dalivk虚拟机格式,因此可以动态装载。
DexFile dexFile = dalvik.system.DexFile.loadDex(
"storage/sdcard0/test.apk", "storage/sdcard0/test_1.apk", 0);
Object obj = dexFile.loadClass("com.android.my.widget.TEST", null).newInstance()
Method method = obj.getClass().getDeclaredMethod("getName", null);
String result = String.valueOf(method.invoke(obj, null));
从上可以看到反射的三步走战略,先是获得Object 类的对象,然后获得某个方法Method,通过method再去invoke对象obj。
8、如果一个类里带Interface接口,要反射接口里的方法如何?
除了要dexFile.loadClass那个类外,还要loadClass那个Interface,且得到obj时将其强制转为接口类型,然后用它调用接口里的方法。
9、Android应用程序是否可以动态引用jar文件?
传统的jar文件(包含.class文件)由于是基于JVM格式的,因此无法由Android应用程序动态调用。不过jar文件中只要包含Dalivk虚拟机格式的二进制代码就可以被Android应用程序动态调用。apk文件中的class.dex就是Dalivk虚拟机格式格式的二进制文件。jar cvf my.jar classes.dex将.dex文件打包成jar文件。
10、如何判断包含某个Activity Action的Android应用程序是否安装?
- Android经典面试题目及解答(三)
- Android经典面试及解答(四)
- 面试题目及解答1
- 笔试面试经典题目及解答——持续更新中
- linux驱动面试题目汇总及解答
- Android面试常见问题及解答
- 华为面试题目解答
- C#,.Net经典面试题目及答案
- C#经典面试题目及答案
- C#,.Net经典面试题目及答案
- C#,.Net经典面试题目及答案
- C#、.Net经典面试题目及答案
- C#,.Net经典面试题目及答案
- C#,.Net经典面试题目及答案
- C#,.Net经典面试题目及答案
- c#经典面试题目及答案
- C#、.Net 经典面试题目及答案
- C#.Net经典面试题目及答案
- 素数判定 因子之和
- python学习笔记五(python多线程)
- android adb 命令
- 使用VS2010开发ActiveX(MFC)控件(1)——创建
- 段寄存器(8086CPU)和代码段
- Android经典面试题目及解答(三)
- 【C#】格式化时间
- Java 反射学习笔记(一)
- 使用VS2010开发ActiveX(MFC)控件(2)——界面显示
- C++类对象内存模型与成员函数调用分析(上)
- ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'mysql'
- zoj 1041 水题
- canvas的画文字方法参数的意义?
- php apache : Fatal error: Call to undefined function mysql_connect()