自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 View源码分析之事件分发机制

前言 事件分发机制主要是为了处理用户触摸屏幕产生的事件,因为每个页面都是由多个View组合而成的,那么具体由谁来处理这个事件呢,接下来我们来分析一下。 概念 触摸事件也就是对MotionEvent事件的分发过程,即当一个MotionEvent产生以后,系统需要把这个事件传递给具体的view。MotionEvent包含触摸的动作、位置等;这个类里包含了一系列的事件,事件的类型有 触摸状态 具体动作 ACTION_DOWN 按下 手势开始 ACTION_UP 抬起 手势结束 ACTION

2021-02-20 13:38:00 80

原创 View源码分析之绘制流程

目录View的绘制流程View的事件分发 View的绘制流程 View 的绘制流程是 measure -> layout -> draw,这个大家都非常熟悉。接下来带领大家来分析下源码(基于SDK 30) 既然开始说到了 View 的绘制流程,那这个流程是什么时候触发的呢? 其实是在ActivityThread.handleResumeActivity中开始的。 这里会调用wm.addView 来添加 DecorView,其中wm 是 WindowManagerImpl WindowMana

2021-02-20 13:37:26 201

原创 Handler源码分析及问题解答

源码分析 Handler是Android中的消息处理机制,是一种线程间通信的解决方案。下面带领大家来分析下源码(基于SDK 30)。 我们知道程序的入口是ActivityThread的main方法,这里做了什么呢 我们可以看到先调用了Looper.prepareMainLooper()方法,然后获取当前线程的Handler,最后调用Looper.loop()。 让我们先来看下Looper.prepareMainLooper()。 可以看到先是调用prepare方法创建当前线程的Looper并存放到线

2021-02-20 09:26:58 101

原创 Android 9.0系统适配

最近在开发中碰到一个问题,APP里的图片有的能显示出来,有的不行,然后开始排查原因,发现9.0以下手机都没问题,就是9.0系统的有问题,并且图片显示不出来的那些路径都是http请求的,这才找到原因,原来是9.0系统默认不支持http请求; 解决方案如下: 在AndroidMannifest文件下 application标签中加上 android:usesCleartextTraffic...

2019-04-11 15:55:02 623

原创 国际化小数点适配

最近在做公司的项目的时候,突然发现线上有一个奔溃的错误很频繁,查了一下原来是在德语手机上 DecimalFormat转出来的小数.变成了,;好大一个坑,最后查了一下,原来是在德语,法语等手机上默认用,代替. 解决方案如下: DecimalFormat df = new DecimalFormat("0.00"); DecimalFormatSymbols dfs = new Decimal...

2019-04-11 15:47:40 522

原创 列表加头之后不能横向全屏

之前做项目的时候遇到一个问题,recycleview添加头部之后,头部没有全屏,最后发现是布局文件中有一个布局的宽度没有占满屏幕,改了之后就好了,特此记录一下。...

2019-02-01 14:26:26 109

原创 报错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 994 2

原创 Android BitmapDrawable()的使用

前段时间项目中碰到一个问题,界面绘制闪了一下,最后分析代码感觉可能是创建BitmapDrawable对象出了问题,然后 查看源码BitmapDrawable.java。BitmapDrawable有若干个构造方法。 New BitmapDrawable(Bitmap bitmap)是早期的一个构造方法,在android 4.0已经过时,部分代码如下: this(new Bitma

2017-11-07 09:40:26 2882

原创 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 467

原创 Android开发规范和架构总结

前言 在开发中,一个良好的开发习惯以及一个开发规范可能会让你少走很多弯路,也会一定程度上的提高代码的可读性,可维护性和可拓展性。当随着需求的不断变更,需要维护项目的时候。当随着项目的代码量的提升,需要重构的时候。你会明白一个好的开发规范多么多么的重要。 这里整理一下自己android开发中的一些规范。希望对各位有帮助。 命名规范 包命名规范

2017-06-01 15:17:04 241

原创 小米手机调试运行报错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 355

原创 关于Android Studio使用SVN遇到的一些问题

Android Studio使用svn遇到的一些问题

2017-04-19 14:49:52 303

原创 Android SwipeRefreshLayout结合WebView使用实现以及可能遇到的问题

最近一直在整理以前做项目遇到的一些问题,今天正好项目需求要加这个,就给加上了,实现的过程中还遇到一些不大不小的坑,怕到时候忘了,就抽空记录下来,好了,闲话不多说,该进入正题了。   首先我自定义了一个webview类 public class SwipeWebView extends WebView { private MySwipeRefreshLayout swipeRefre

2017-03-23 22:26:55 427

原创 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 17021

转载 Android项目重构之路:实现篇

转载自Keegan小钢 前两篇文章Android项目重构之路:架构篇和Android项目重构之路:界面篇已经讲了我的项目开始搭建时的架构设计和界面设计,这篇就讲讲具体怎么实现的,以实现最小化可用产品(MVP)的目标,用最简单的方式来搭建架构和实现代码。 IDE采用Android Studio,Demo实现的功能为用户注册、登录和展示一个券列表,数据采用我们现有项目的测试数据,接口也是我

2016-06-24 16:02:50 270

转载 Android项目重构之路:界面篇

转载自Keegan小钢 在前一篇文章《Android项目重构之路:架构篇》中已经简单说明了项目的架构,将项目分为了四个层级:模型层、接口层、核心层、界面层。其中,最上层的界面,是变化最频繁的一个层面,也是最复杂最容易出问题的一个层面,如果规划不好,很容易做着做着,又乱成一团了。 要规划好界面层,至少应该遵循几条基本的原则: 保持规范性:定义好开发规范,包括书写规范、命名规范、注释

2016-06-24 15:58:28 251

转载 Android项目重构之路:架构篇

转载自Keegan小钢 我将项目分为了四个层级:模型层、接口层、核心层、界面层。模型层定义了所有的模型;接口层封装了服务器提供的API;核心层处理所有业务逻辑;界面层就处理界面的展示。几个层级之间的关系如下图所示: 下面展开说明具体的每个层次: 接口层 接口层封装了网络底层的API,并提供给核心层调用。刚开始,为了简单,该层的核心类我只定义了4个: Pos

2016-06-24 14:28:44 319

转载 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 603

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除