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

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

时间: 2024-12-17 09:02:40

Touch事件or手机卫士面试题整理回答(二)的相关文章

python面试题整理(二)

1.进程,线程,协程定义,有什么区别 进程是操作系统分配资源的最小单位,一个进程对应一块CPU 线程是进程中的某一个控制单元,是CPU调度的最小单元,线程之间相互独立,进程结束线程也会结束,一个进程至少要有一个线程 协程是更加轻量级的存在,不是由CPU进程管理而是由程序员管理,在执行一个函数过程中可以中断执行另一个函数,执行一个函数过程就叫协程,python3以前使用yield表示协程,yield关键字一般用于做生成器,实现在函数中暂停的效果,python3.3以后出现yield from后面跟

myBatis+Spring+SpringMVC框架面试题整理

myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_41541619/article/details/82459873 目录 ■ SpringMVC 的工作原理 ■ 谈谈你对SpringMVC的理解 ■ SpringMVC

H5_0038:父元素有touch事件,子元素有点击事件,如何实现点击事件

移动端父元素绑定touch事件,子元素绑定click事件 一.问题描述 碰到一个非常头疼的问题,为了做一个滑动效果,给li标签绑定了touch事件.滑动之后,li标签的末尾会出现一个删除按钮,然后点击该删除按钮,删除整个li标签. 看起来没什么问题吧,实际上暗藏杀机啊.给删除按钮绑定点击事件的时候,并没有执行点击事件,而是先执行了父元素,也就是li标签的touch事件. 那怎么解决呢? 最开始想到的是,click事件应该设置成冒泡阶段执行,在设置个阻止冒泡,这样不就不会触发父元素的touch事件

手机touch事件

touchstart:触摸开始的时候触发 touchmove:手指在屏幕上滑动的时候触发 touchend:触摸结束的时候触发 而每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点(用来实现多点触控): touches:当前位于屏幕上的所有手指的列表. targetTouches:位于当前DOM元素上手指的列表. changedTouches:涉及当前事件手指的列表. 每个触摸点由包含了如下触摸信息(常用): identifier:一个数值,唯一标识触摸会话(touch ses

手机站建设HTML5触摸屏touch事件使用介绍

手机站建设HTML5触摸屏touch事件使用介绍技术 maybe yes 发表于2015-01-05 14:42 原文链接 : http://blog.lmlphp.com/archives/56  来自 : LMLPHP后院 市面上手机种类繁多,在触屏手机上运行的网页跟传统PC网页相比还是有很大差别的.由于设备的不同浏览器的事件的设计也不同.传统PC站的 click 和 onmouseover 等事件在一般触屏的手机上也可以使用,但是效果不够好.PC上还没有哪个事件是可以与触屏手机的触摸事件对

手机的touch事件(基于jquery)

javascript代码: $.swipe=function(opt){  var o = $.extend({    mainSelector:"",    swipeLeft:function(e,v){},    swipeRight:function(e,v){},    swipeEnds:function(v,e){}}, opt || {});  var startX=0,startY=0;var obj={    touchStart: function (e){   

手机触摸touch事件

1.Touch事件简介 pc上的web页面鼠 标会产生onmousedown.onmouseup.onmouseout.onmouseover.onmousemove的事件,但是在移动终端如 iphone.ipod Touch.ipad上的web页面触屏时会产生ontouchstart.ontouchmove.ontouchend.ontouchcancel 事件,分别对应了触屏开始.拖拽及完成触屏事件和取消. 当按下手指时,触发ontouchstart: 当移动手指时,触发ontouchmov

19、android面试题整理(自己给自己充充电吧)

(转载,出处丢失,请原作者原谅,如有意见,私信我我会尽快删除本文) JAVA 1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法. 2.XML包括哪些解释技术,区别是什么?DOM和SAXDOM将文档解析成一颗文档树,可在节点上进行遍历

手机卫士-09

手机卫士-09 课1 回顾高级工具的短信备份 ToolsActivity.java(前台界面) smsBackupparser.java(后台逻辑) 备份短信是一个很耗时的操作,可能需要很长的时间 修改activity_tool.xml的进度条progressBar <!-- <ProgressBar android:id="@+id/pb" style="?android:attr/progressBarStyleHorizontal" android