码迷,mamicode.com
首页 > 移动开发 > 详细

Touch事件or手机卫士面试题整理回答(二)

时间:2015-10-03 15:40:34      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

Touch事件or手机卫士面试题整理回答(二)

自定义控件

1. Touch事件的传递机制

顶级View->父View->子View,不处理逆向返回

OnInterceptTouchEvent()返回值控制Touch是否向下传递. true中断事件,false不中断事件。

onTouchEvent() 返回值决定否处理事件。True消耗事件,False不处理事件向上传递。

2. 轮播动画的实现原理

ViewPageTextView组合实现图片和标题的效果

ViewPage设置setOnPageChangeListener监听变换图片和对应文字内容。

Handler发送handler.sendEmptyMessageDelayed(0, 200)延时消息,实现自动变换图片。

ViewPage设置setOnTouchListener清空handler Message消息队列,停止图片轮播

3.自定义ViewPage组合控件实现原理

继承ViewGroup容器类MyViewPage 动态向容器添加控件。也可以是布局组合控件等等

重写onMeasure()设置控件的宽高,子控件必须手动设置
getChildAt(i).measure(widthMeasureSpec,heightMeasureSpec);

重写onLoayout()设置控件的绘制的位置。这里动态设置子控件绘制成字状,
getChildAt(i).layout(getWidth() * i, 0, getWidth() * (i + 1), getHeight());

定义GestureDetector设置手势滑动回调监听

重写onTouchEvent(MotionEvent)委托GestureDetector手势识别器来处理滑动触摸事件, onScroll(...)的回调。设置View scrollBy()水平方向滑动的距离。scrollTo(...)设置滑动到的具体位置

定义Scroller,控制滑动滑动效果。

重写 computeScroll()View在滑动时不断回调该方法,控制更新Page页面页面

定义OnPageChangeListener接口,设置页面改变回调监听onPageChange(...)

整理手机卫士功能点的实现思路

1. 手机防盗功能设置原理

SharedPreferences保存设置密码。是否进行过Guride导向页设置。SIM卡串号。

ViewPage+Fragement实现滑动替换页面逻辑,getSystemService(Context.TELEPHONY_SERVICE);获取到系统电话发素

获取到手机sim卡串号,绑定手机号码。 注册广播。电话卡改变发送短信个指定安全联系人。

注册短信广播。intent.getExtras().get("pdus");得到不断发送过来的消息。截取短信内容实现对相应指令功能的操作。

2. 电话拦截功能

ListView自定义可改变mDataAdapter
AlartDialog添加黑名单,设置拦截模式
AsyncTask异步加载查询黑名单。扉页查询黑名单
通过是否开启一个服务,获取到电话号码,挂断电话,并销毁通话记录。

3.软件管家

ViewUtils注解事件,注解控件问题,

通过 context.getPackageManager()获取PackageManage 手机安装的所有软件管理器。并自定义Adapter``ListViwe展示软件列表。

ListView设置setOnItemClickListener监听弹出PopupWindow事项设置相应的Intent来实现对该列表项软件的操作

4.进程管理。

获取到系统服务 得到运行的进程信息

// 通过AcitvityManager 取得想应的进程信息;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
// 获取到包管理器
PackageManager pm = context.getPackageManager();
// 获取系统运行的程序信息
List<RunningAppProcessInfo> runningAppProcesses = am.getRunningAppProcesses();

AsyncTask异步加载, ListView展示进程列表。并分辨是系统进程or用户进程。

通过ActivityManager通过killBackgroundProcesses(...)杀死用户进程。

为了防止Service后台线程被杀死。动态注册registerReceiver一个广播,重启杀死Service

Touch事件or手机卫士面试题整理回答(二)

标签:

原文地址:http://www.cnblogs.com/ganwei/p/4853434.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!