240 发简信
IP属地:浙江
  • 120
    【Android】在任意位置弹出PopupWindow

    前言 在日常的开发中,经常会有弹框的操作。实现弹框有两种选,PopupWindow或者Dialog,这里就先忽略Dialog。弹框可能会在各种位置出现,在指定View的上、下...

  • 120
    散户选哪个证券公司好,股票如何开户以及如何获得华泰证券最低交易佣金

    近期 A 股市场频繁上各平台热榜,两市交易量已连续多日突破万亿。与此同时,周围许多人也都纷纷开始聊起了股票、基金相关的,一时间好不热闹啊。更有家里亲戚,来询问我开户的事情,认...

  • 打造一款 ZoomLayout

    1. ZoomLayout 需要实现的功能 1.1 需求列表 触摸滑动及惯性滑动 多指缩放 双击缩放 除了实现这些主要功能外,还需要处理一下的细节 ZoomLayout的宽高...

  • 120
    Android 根据View生成图片简易参考

    一、分类 开发中,我们有时候需要根据View生成图片。 本文根据不同情况的View生成图片进行了一些示例,分类如下第一种,普通View生成图片(view已经渲染加载到界面上)...

  • 120
    数据化选题利器——Distill Web Monitor

    本文系半撇私塾新媒体内容营销项目里程碑作品。 新媒体内容营销的工作流大致可分为:1、选题2、选题讨论3、内容生产4、推送归档。 俗话说“万事开头难”,在做新媒体内容营销最重要...

  • 自定义Dialog之旅程(二)理解Dialog大小

    要玩好Dialog,首先我觉得先要搞清一件事情,那就是弄清范围和设置大小。这篇文章这次主要讲这个内容。 一、默认情况下的dialog大小普通情况下,自定义dialog的父布局...

  • 120
    Android使用Glide加载超长图

    app项目开发过程中,大都有查看图片详情的功能模块。实现的方式一般都是通过viewpager+photoView+Glide的方式。这种方式下,如果碰到加载超长图,比如说...

  • @请叫我大苏 非常感谢,文章分析非常精彩!同时我反复看这篇文章时,也引发出好几个问题的思考。其中一个既然 display 是每一帧画面渲染上去的,那比如自定义 ViewGroup (extends RelativeLayout ) 下 自定义 View1 和自定义 View2 ,设置 View1 width 和 margin 发生变化, view1.requestLayout(),最后打印的结果是:
    ViewGroup .onMeasure()
    View1.onMeasure()
    ViewGroup.onLayout()
    View1.onLayout()
    View2.onMeasure()
    View2.onLayout()
    ViewGroup.onDraw()
    View1.onDraw()
    界面效果是:View1 大小和父布局相对位置也变化,View2 的layout_alignRight= View1的 id,因此有联动效果。
    对于打印结果和界面效果结合,View2 的 onDraw() 没有调用,这可能是源码判断某些标志位没有发生变化,所以导致它可以不用重绘。但是重点是,界面中 View2 位置发生了变化,难道不会导致下一帧画面绘制的 View2 像素点位置也发生变化,所以前提应该也要重新在对应 View2 新位置再 draw 一次才行吗?难道底层是将 View2 当初的像素数据直接移到对应的新位置吗?应该是我对底层一无所知造成的误会。

    Android 屏幕刷新机制

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 这次就来梳理一下 Android 的屏幕刷新机制,把我这段时间因为研究动画而梳理出来的一些关于屏幕刷新方面...

  • 关于「Q3 :CPU 绘制视图树来计算下一帧画面数据的工作是在屏幕刷新信号来的时候才开始工作的,而当这个工作处理完毕后,也就是下一帧的画面数据已经全部计算完毕,也不会马上显示到屏幕上,而是会等下一个屏幕刷新信号来的时候再交由底层将计算完毕的屏幕画面数据显示出来。�」
    请教下:
    如果在页面不刷新后的一段时间,在某一帧内某个时刻去 invalidate,然后等到下一帧 Vsync 信号过来,ChoreoGrapher 取出 Runnable 去触发 performTraversals,然后继续下一帧才被 display 到屏幕吗?这是隔了两帧的意思吗?

    Android 屏幕刷新机制

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 这次就来梳理一下 Android 的屏幕刷新机制,把我这段时间因为研究动画而梳理出来的一些关于屏幕刷新方面...

  • 120
    Android 屏幕刷新机制

    本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 这次就来梳理一下 Android 的屏幕刷新机制,把我这段时间因为研究动画而梳理出来的一些关于屏幕刷新方面...

  • @AndroidBrave 赞哦,我感觉敢于提出非常好。因为我常常发现有些文章评论的交流才是点睛之笔。文章内容大部分都差不多,经常是评论的交流解答了我最重要的疑惑。

    Android异步通信:手把手带你深入分析 Handler机制源码

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 今天,我将手把手带你深入分析 Handler机制的源码,希望你们会喜欢 Anroid异步通信Hand...

  • @DevCW 我对这个划分也经常难以取舍,比如输入账号,xx@ 时提示一列可能相关的邮箱,如果写在 P 层感觉绕了一层弯路,从 V 层 监测了字符变化,然后传入 P 层做处理,然后又回传给 V 层做显示。感觉写在 P 层确实复杂了,有时候需要配合 V 层的其他 View 做判断时,简直头疼。

    一步步带你精通MVP

    从MVP开发模式至今,其实已经过了好久;很多开发者也已经轻车熟路的运用到了项目中,本来犹豫要不要写这篇文章,后来发现还是有人在问MVP怎么用,于是有了这篇文章。 MVP模式本...

  • @我可能是一只假程序猿 主要是 ThreadLocal 这个类是可以用来保存线程隔离的数据,看下内部实现都是根据当前所在线程进行判断的。因此 if (sThreadLocal.get() != null) 中的 get() 会根据当前所在线程去找存储的 looper,所以会存在当前线程还没有创建 looper。主线程中运行 if (sThreadLocal.get() != null) 确实会不为空,因为 AcitivityThread 里就创建了 looper,但是到了子线程里去 if (sThreadLocal.get() != null),此时子线程确实没有值的,因为没有手动创建哦。

    Android异步通信:手把手带你深入分析 Handler机制源码

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 今天,我将手把手带你深入分析 Handler机制的源码,希望你们会喜欢 Anroid异步通信Hand...

  • 你的 1 和 2 观点都是错的,首先最起码你可以打印出来验证是不是同一个再说,其次你没有看 sThreadLocal.get() 内部实现吗,对线程做判断了。

    Android异步通信:手把手带你深入分析 Handler机制源码

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 今天,我将手把手带你深入分析 Handler机制的源码,希望你们会喜欢 Anroid异步通信Hand...

  • 120
    Android事件机制(二)

    关于Android事件机制,很多大神都做了分析,我也是通过他们的帖子进行学习,在此特向他们表达谢意。Android事件机制(一)从代码演示的角度整理了一下我对Android事...