Android面试题二
2016-06-06 08:28
295 查看
Android面试题二
自定义一个不带系统边框的Dialog
自定义style样式,其中windowFrame设置为@null<?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="add_dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item><!-- 边框 --> <item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 --> <item name="android:windowIsTranslucent">false</item><!-- 半透明 --> <item name="android:windowNoTitle">true</item><!-- 无标题 --> <item name="android:windowBackground">@drawable/bg_search_end</item><!-- 自己想要的背景 --> <item name="android:backgroundDimEnabled">false</item><!-- 模糊 --> </style>
自定义Dialog,继承自Dialog,重写构造方法。
public class MyDialog extends Dialog{ public MyDialog(Context context, int theme) { super(context, theme); } public SelectDialog(Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.slt_cnt_type); } }
3.显示Dialog 创建时不必采用建造者模式,直接new出对象,把style赋给dialog就可以。
MyDialog selectDialog = new MyDialog(this,R.style.dialog);//创建Dialog并设置样式主题 Window win = dialog.getWindow(); LayoutParams params = new LayoutParams(); params.x = -80;//设置x坐标 params.y = -60;//设置y坐标 win.setAttributes(params); dialog.setCanceledOnTouchOutside(true);//设置点击Dialog外部任意区域关闭Dialog dialog.show();
图片的异步加载的方法
利用软引用来缓存图片,用图片的URL经过MD5加密之后的数值作为缓存查找的key。设两级缓存,一级是内存,二级是本地磁盘
如果两级缓存都没有取到图片,则从服务器获取,并加入缓存。
夹杂完成后通过接口回调的方式来通知UI更新。
瀑布流的实现方式
自定义ScrollView,动态代码添加LinearLayout及ImageView。1. 自定义ScrollView,并使用监听器模式,对其滚动到最顶部,最底部进行监听操作
2. 在Activity里对ScrollView的横向的LinearLayout动态添加列数,每一列是一个竖向的LinearLayout。
3. 根据列数及其List.size()对每一列的LinearLayout添加ImageView。
4. 根据监听器对其滚动到顶部(不做操作),滚动到底部(加载更多数据)。正在滚动进行操作(滚动超过两屏,回收两屏之前的图片)。
加载对话框动画效果问题
在日常开发中我们可能会使用动画效果的ProgressDialog。Dialog常用的方法有:show,hide,dismiss,cancel。一般在网络请求时候show,然后结束后dismiss,此刻如果再次请求的话,动画效果就不动了。
可以将dismiss改为hide。区别是前者是调用了对话框本身的onStop方法,并且从Activity上remove了,后者是仍然挂载在Activity上,只是隐藏了。动画线程还在运行,个人感觉这么写都不好,会多占用内存,而且还在在activity的退出的时候要记得dialog.cancel,否则机会内存泄漏,个人认为可以采用imageView的方式来呈现动画效果,而且更加方便可控制。
简述一下你了解的设计模式
设计模式就是一套呗反复使用的代码设计经验的总结,使用设计模式为了可重用代码,让代码更容易被他人理解,保证代码可靠性,设计模式使人们可以更加简单方便的复用的设计和体系结构。主要分三类(创建型[对类的实例化过程的抽象化],结构型[描述如何将类或对象结合在一起形成更大的结构],行为型[对不同的对象之间划分责任和算法的抽象化]),一共有二十三种设计模式包括:Abstract Factory(抽象工厂模式),Builder(建造者模式),FactoryMethod(工厂模式),Singleton(单例模式), Decorator(装饰模式),Adapter(适配器模式),Proxy(代理模式),Observer(观察者模式),State(状态模式),Strategy(策略模式)。。。。。未完待续。
简述一下面向对象的六原则一法则
单一责任原则:一个类自作它该做的事情。开闭原则 软件实体当对扩展开放,对修改关闭。
依赖倒转原则面向接口编程。(说的直白些就是声明方法的参数类型,方法的返回类型,变量的引用类型是,尽可能使用抽象类型而不用具体类型,因为抽象类型可以被它的任何一个子类型所替代)。
里氏替换原则:任何时候都可以用子类型替换掉父类型。
接口隔离原则: 接口要小而专,不能大而全。
合成聚合复用原则: 优先使用聚合或合成关系服用代码。
迪米特法则:又叫最少知识法则,一个对象应该对其他对象由尽可能少的了解。
Java中实现序列化,有什么意义
序列化就是一种用来处理对象流的机制,所谓对象流就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可将流化后的对象传输与网路之间,序列化是为了解决对象流读写操作时可能引发的问题。XML和JSON的优缺点
一般而言,配置文件用XML,传输数据用JSON。逐步解析用XML,整体解析用JSON。大规模传输用XML,小数据用JSON。XML:
- 优点:格式统一,符合标准。容易与其他系统进行远程交互,数据供需昂比较方便。
- 缺点:XML文件庞大,文件格式复杂,传输占带宽。 服务器端和客户端都需要大量代码来解析XML,导致服务端和客户端变得异常复杂和不易维护。客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码。服务端和客户端解析XML话费较多的资源和时间。
JSON:
- 优点:数据格式比较简单,易于读写,格式都是压缩的,占用带宽小。易于解析。支持多种语言
,便于服务端解析。因为JSON个数能直接为服务端代码使用,大大简化了服务端和客户端代码量,且任务不变易于维护。
- 缺点:没有XML深入人心和西永广泛,没有XML那么通用性。JSON格式目前在WebSerview中推广的还属于初级阶段。
相关文章推荐
- 程序员批注《语言学教程》——第三章 从语素到短语
- 脱颖而出! 面试英语的一些小技巧
- 程序员常会用到的软件有哪些
- js操作符类型转换大全(前端面试题之操作符)
- 总结前端面试过程中最容易出现的问题
- Freelancer自由工作离我们还有多远?
- 黑马程序员——Java基础---面向对象之多态抽象类接口
- 黑马程序员——Java基础---面向对象代码块和继承和this和super和重写和重载和final
- 面试题17:合并两个排序的链表
- Hibernate常见面试知识点
- JAVA程序员必看的15本书
- 软件工程师的职业规划
- 面试小问题
- 适合程序员的画图技法
- 适合程序员的画图技法
- 鸡汤君_一个老程序员的建议66
- 面试题——找单独数字
- 面试(一)
- 剑指Offer----面试题24:二叉搜索树的后序遍历序列
- Android面试题整理