Touch事件or手机卫士面试题整理回答(二)
Touch
事件or手机卫士面试题整理回答(二)
自定义控件
1. Touch
事件的传递机制
顶级
View
->父View
->子View
,不处理逆向返回
OnInterceptTouchEvent()
,返回值控制Touch
是否向下传递.true
中断事件,false
不中断事件。
onTouchEvent()
返回值决定否处理事件。True
消耗事件,False
不处理事件向上传递。
2. 轮播动画的实现原理
ViewPage
和TextView
组合实现图片和标题的效果
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
自定义可改变mData
的Adapter
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手机卫士面试题整理回答(二)的更多相关文章
- 【IT笔试面试题整理】二叉搜索树转换为双向链表
[试题描述] 将二叉搜索树转换为双向链表 对于二叉搜索树,可以将其转换为双向链表,其中,节点的左子树指针在链表中指向前一个节点,右子树指针在链表中指向后一个节点. 思路一: 采用递归思想,对于二叉搜索 ...
- iOS开发面试题整理(二)
8 类别的作用?继承和类别在实现中有何区别? 答案:category 可以在不获悉,不改变原来代码的情况下往里面添加新的方法,只能添加,不能删除修改. 并且如果类别和原来类中的方法产生名称冲突,则类别 ...
- php面试题整理(二)
索引,desc 和explain unset只是删除了变量名
- python面试题整理(二)
1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至 ...
- Android Touch事件之二:dispatchTouchEvent()和onTouchEvent()篇
2015-12-01 15:06:14 Android Touch事件第一篇:Touch事件在父ViewGroup和子View之间的传递简单分析了事件的传递流程,这次深入了解下dispatchTouc ...
- myBatis+Spring+SpringMVC框架面试题整理
myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章 ...
- 简易封装手机浏览器touch事件
做手机开发时候,简单想用一些动作,如touchLeft,touchRight等, 使用其他库文件就要加载很多不必要的东西,流量的浪费 今天简单写了封装touch的库,简单的监听一些逻辑 onTouch ...
- 手机touch事件及参数【转】(自己懒得写了,找了一篇摘过来)
[html5构建触屏网站]之touch事件 前言 一个触屏网站到底和传统的pc端网站有什么区别呢,交互方式的改变首当其冲.例如我们常用的click事件,在触屏设备下是如此无力. 手机上的大部分交互都是 ...
- 手机触摸touch事件
1.Touch事件简介 pc上的web页面鼠 标会产生onmousedown.onmouseup.onmouseout.onmouseover.onmousemove的事件,但是在移动终端如 ipho ...
随机推荐
- [Bhatia.Matrix Analysis.Solutions to Exercises and Problems]ExI.2.4
(1). The singular value decomposition leads tot eh polar decomposition: Every operator $A$ can be wr ...
- NOIP2013 花匠 DP 线段树优化
网上一堆题解,我写的是N^2优化的那种,nlogn,O(n)的那种能看懂,但是让我自己在赛场写,肯定没戏了 #include <cstdio> #include <iostream& ...
- (转)使用pth文件,让python方便的import自己写的模块
转自:http://www.elias.cn/Python/PythonPath 文章简单易懂,有理有据. 有时候我们正在修改或调试的程序会是一个库,为修改方便,我们可能不大希望把它放到 site-p ...
- FlexSlider插件的详细设置参数 http://www.woothemes.com/flexslider/
http://www.woothemes.com/flexslider/ FlexSlider插件的详细设置参数 $(window).load(function() { $('.flexslider' ...
- bzoj 1877 [SDOI2009]晨跑(最小费用最大流)
Description Elaxia最近迷恋上了空手道,他为自己设定了一套健身计划,比如俯卧撑.仰卧起坐等 等,不过到目前为止,他坚持下来的只有晨跑. 现在给出一张学校附近的地图,这张地图中包含N个十 ...
- node系列1
NodeJS基础 JS是脚本语言,脚本语言都需要一个解析器才能运行,NodeJS就是一个解析器.nodejs.org 打开终端,键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果 ...
- linux shell 中"2>&1"含义
脚本是: nohup /mnt/Nand3/H2000G >/dev/null 2>&1 & 对于& 1 更准确的说应该是文件描述符 1, ...
- leetcode—Populating Next Right Pointers in Each Node
1.题目描述 Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLink ...
- Linux内核结构分析与移植
Linux内核主要的5个部分是:进程调度,内存管理,虚拟文件系统,网络接口,进程通信. 这5个部分之间的关系如下: (1)进程调度部分负责控制进程对CPU的访问. (2)内存管理允许多个进程安全地共享 ...
- Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynamics CRM 2011 2013 解决办法
Error message “Assembly must be registered in isolation” when registering Plugins in Microsoft Dynam ...