- 博客(18)
- 收藏
- 关注
原创 View源码分析之事件分发机制
前言事件分发机制主要是为了处理用户触摸屏幕产生的事件,因为每个页面都是由多个View组合而成的,那么具体由谁来处理这个事件呢,接下来我们来分析一下。概念触摸事件也就是对MotionEvent事件的分发过程,即当一个MotionEvent产生以后,系统需要把这个事件传递给具体的view。MotionEvent包含触摸的动作、位置等;这个类里包含了一系列的事件,事件的类型有触摸状态具体动作ACTION_DOWN按下 手势开始ACTION_UP抬起 手势结束ACTION
2021-02-20 13:38:00 104
原创 View源码分析之绘制流程
目录View的绘制流程View的事件分发View的绘制流程View 的绘制流程是 measure -> layout -> draw,这个大家都非常熟悉。接下来带领大家来分析下源码(基于SDK 30)既然开始说到了 View 的绘制流程,那这个流程是什么时候触发的呢?其实是在ActivityThread.handleResumeActivity中开始的。这里会调用wm.addView 来添加 DecorView,其中wm 是 WindowManagerImplWindowMana
2021-02-20 13:37:26 229
原创 Handler源码分析及问题解答
源码分析Handler是Android中的消息处理机制,是一种线程间通信的解决方案。下面带领大家来分析下源码(基于SDK 30)。我们知道程序的入口是ActivityThread的main方法,这里做了什么呢我们可以看到先调用了Looper.prepareMainLooper()方法,然后获取当前线程的Handler,最后调用Looper.loop()。让我们先来看下Looper.prepareMainLooper()。可以看到先是调用prepare方法创建当前线程的Looper并存放到线
2021-02-20 09:26:58 144
原创 Android 9.0系统适配
最近在开发中碰到一个问题,APP里的图片有的能显示出来,有的不行,然后开始排查原因,发现9.0以下手机都没问题,就是9.0系统的有问题,并且图片显示不出来的那些路径都是http请求的,这才找到原因,原来是9.0系统默认不支持http请求;解决方案如下:在AndroidMannifest文件下application标签中加上android:usesCleartextTraffic...
2019-04-11 15:55:02 672
原创 国际化小数点适配
最近在做公司的项目的时候,突然发现线上有一个奔溃的错误很频繁,查了一下原来是在德语手机上DecimalFormat转出来的小数.变成了,;好大一个坑,最后查了一下,原来是在德语,法语等手机上默认用,代替.解决方案如下:DecimalFormat df = new DecimalFormat("0.00");DecimalFormatSymbols dfs = new Decimal...
2019-04-11 15:47:40 583
原创 列表加头之后不能横向全屏
之前做项目的时候遇到一个问题,recycleview添加头部之后,头部没有全屏,最后发现是布局文件中有一个布局的宽度没有占满屏幕,改了之后就好了,特此记录一下。...
2019-02-01 14:26:26 130
原创 报错Fatal Exception: java.lang.IllegalStateException: The specified child already has a parent.
前段时间发现线上报了这个错,去看日志就这么点东西,可算是折腾我啊 Fatal Exception: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. at androi...
2018-11-05 14:59:23 1063 2
原创 Android BitmapDrawable()的使用
前段时间项目中碰到一个问题,界面绘制闪了一下,最后分析代码感觉可能是创建BitmapDrawable对象出了问题,然后查看源码BitmapDrawable.java。BitmapDrawable有若干个构造方法。New BitmapDrawable(Bitmap bitmap)是早期的一个构造方法,在android 4.0已经过时,部分代码如下:this(new Bitma
2017-11-07 09:40:26 2940
原创 Android 6.0以上 解决recyclerview 在 scrollview 中不能全部显示,高度不正常的问题
这个问题困扰了我半天,国内百度上的资料非常的烂。根本无法解决问题。在android 4 / 5 版本中 scrollview 包含了一个recyclerview 滚动一切正常。在6.0中不能全部显示。原来是一个BUG最终 stackoverflow 找到了解决办法:http://stackoverflow.com/questions/27083091/recycle
2017-09-06 16:08:17 507
原创 Android开发规范和架构总结
前言在开发中,一个良好的开发习惯以及一个开发规范可能会让你少走很多弯路,也会一定程度上的提高代码的可读性,可维护性和可拓展性。当随着需求的不断变更,需要维护项目的时候。当随着项目的代码量的提升,需要重构的时候。你会明白一个好的开发规范多么多么的重要。这里整理一下自己android开发中的一些规范。希望对各位有帮助。命名规范包命名规范
2017-06-01 15:17:04 286
原创 小米手机调试运行报错Installation failed with message Failed to establish session
小米手机运行报Installation failed with message Failed to establish session. It is possible that this issue is resolved by uninstalling an existing version of the apk if it is present, and then re-installing.
2017-05-12 10:03:19 394
原创 Android SwipeRefreshLayout结合WebView使用实现以及可能遇到的问题
最近一直在整理以前做项目遇到的一些问题,今天正好项目需求要加这个,就给加上了,实现的过程中还遇到一些不大不小的坑,怕到时候忘了,就抽空记录下来,好了,闲话不多说,该进入正题了。 首先我自定义了一个webview类public class SwipeWebView extends WebView { private MySwipeRefreshLayout swipeRefre
2017-03-23 22:26:55 457
原创 Android 7.0调用系统相机报错Caused by: android.os.FileUriExposedException: file:///storage/emulated/0/rpms/14
原因:Android N对访问文件权限收回,按照Android N的要求,若要在应用间共享文件,您应发送一项 content://URI,并授予 URI 临时访问权限。 而进行此授权的最简单方式是使用 FileProvider类。解决方法:1.在manifest中定义FileProvider<provider android:au
2017-03-23 16:40:23 17085
转载 Android项目重构之路:实现篇
转载自Keegan小钢前两篇文章Android项目重构之路:架构篇和Android项目重构之路:界面篇已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码。IDE采用Android Studio,Demo实现的功能为用户注册、登录和展示一个券列表,数据采用我们现有项目的测试数据,接口也是我
2016-06-24 16:02:50 295
转载 Android项目重构之路:界面篇
转载自Keegan小钢在前一篇文章《Android项目重构之路:架构篇》中已经简单说明了项目的架构,将项目分为了四个层级:模型层、接口层、核心层、界面层。其中,最上层的界面,是变化最频繁的一个层面,也是最复杂最容易出问题的一个层面,如果规划不好,很容易做着做着,又乱成一团了。要规划好界面层,至少应该遵循几条基本的原则:保持规范性:定义好开发规范,包括书写规范、命名规范、注释
2016-06-24 15:58:28 272
转载 Android项目重构之路:架构篇
转载自Keegan小钢我将项目分为了四个层级:模型层、接口层、核心层、界面层。模型层定义了所有的模型;接口层封装了服务器提供的API;核心层处理所有业务逻辑;界面层就处理界面的展示。几个层级之间的关系如下图所示:下面展开说明具体的每个层次:接口层接口层封装了网络底层的API,并提供给核心层调用。刚开始,为了简单,该层的核心类我只定义了4个:Pos
2016-06-24 14:28:44 360
转载 Glide使用详解(一)
请标明出处:http://blog.csdn.net/shangmingchao【商明超的博客】目录(?)[+]一. 下载在build.gradle中添加依赖: compile 'com.github.bumptech.glide:glide:3.7.0'11需要support-v4库的支持,如果你的项目没有support-v4库(
2016-06-12 10:24:58 626
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人