首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

【Android开发坑系列】之事件

总结一下: 1.Touch事件分发中只有两个主角: ViewGroup和View。 ViewGroup包含onInterceptTouchEvent、dispatchTouchEvent、onTouchEvent三个相关事件。View包含dispatchTouchEvent、onTouchEvent两个相关事件。其中ViewGroup又继承于View。 2.触摸事件由Action_Down、Action_Move、Aciton_UP组成,其中一次完整的触摸事件中,Down和Up都只有最多一个,Move有若干个,可以为0个。定律:当dispatchTouchEvent在进行事件分发的时候,只有前一个action返回被处理(消费)掉,才会触发后一个action。 3.事件传递的两种方式:隧道方式:从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递;冒泡方式:从最内层子元素依次往外传递直到根元素或在中间某一元素中由于某一条件停止传递。 dispatchTouchEvent是隧道方式,onTouchEvent是冒泡方式(若返回true,则上层不再处理)。 4.onInterceptTouchEvent有两个作用: 拦截Down事件的分发; 中止Up和Move事件向目标View传递,使得目标View所在的ViewGroup捕获Up和Move事件。 参考:http://blog.csdn.net/liutao5757124/article/details/6097125 本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/p/4788625.html,如需转载请自行联系原作者。

优秀的个人博客,低调大师

【Android开发坑系列】之PopupWindow

PopupWindow在4.0之前的版本有个系统级别的BUG,必须借助一段自定义的fix代码来修复。其中mPopPm就是PopupWindow实例。java.lang.NullPointerExceptionat android.widget.PopupWindow$1.onScrollChanged if (Build.VERSION.SDK_INT < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { try { final Field fAnchor = PopupWindow.class.getDeclaredField("mAnchor"); fAnchor.setAccessible(true); Field listener = PopupWindow.class.getDeclaredField("mOnScrollChangedListener"); listener.setAccessible(true); final ViewTreeObserver.OnScrollChangedListener originalListener = (ViewTreeObserver.OnScrollChangedListener) listener .get(mPopPm); ViewTreeObserver.OnScrollChangedListener newListener = new ViewTreeObserver.OnScrollChangedListener() { public void onScrollChanged() { try { View mAnchor = (View) fAnchor.get(mPopPm); if (mAnchor == null) { return; } else { originalListener.onScrollChanged(); } } catch (Exception e) { e.printStackTrace(); } } }; listener.set(mPopPm, newListener); } catch (Exception e) { e.printStackTrace(); } 在生成popupWindow的父Activity销毁之前,需要销毁popupWindow。否则会报内存泄露(leak)。也即在Activity的onDestroy()执行如下代码: if (mPopupWindow != null) { mPopupWindow.dismiss(); mPopupWindow = null; } 在<=2.3的系统上,慎用setFocusable(boolean),一般设为mPopPm.setFocusable(false) 本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/p/3160897.html,如需转载请自行联系原作者。

优秀的个人博客,低调大师

【Android开发坑系列】之Fragment

这个东西有顾名思义是碎片,和之前的Activity对应。 坑1:一般情况都会想当然的以为进程被杀掉之后,Fragment也会被回收 其实,Fragment有自己的生命周期,有自己的管理器(FragmentManager),也即:包含Fragment的进程被干掉,Fragment不一定会被回收,而是由FragmentManager来决定生死。 Q:如何验证上面的说法?A:如果是一般正常的流程“打开-关闭”软件,Fragment的确被回收了。但是如果使用“腾讯手机管家”之类的内存清理工具,清理内存(实际上是杀死进程),会发现Fragment没有被回收,一直缓存着。验证方法如下:缓存Fragment的Tag到本地数据库(可以是xml/sqlite等),然后用FragmentManager.findFragmentByTag(...)是否为Null来验证Framgent是否被回收了。 有个奇怪的现状是:在上面蓝色的情况发生后,Framgent和包含他的Activity的生命周期顺序都乱套了,原本是: Activity.onCreate-->Fragment.onCreate-->Fragment.onCreateView 变成:Fragment.onCreate-->Activity.onCreate-->Fragment.onCreateView 猜测是因为直接用的Frament缓存,其onCreate先于父Activity.onCreate执行了。 坑2:添加Fragment注意事项,阅读:http://www.tuicool.com/articles/qaA7ry 本文转自Kai的世界,道法自然博客园博客,原文链接:http://www.cnblogs.com/kaima/p/3178442.html,如需转载请自行联系原作者。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册