- 博客(39)
- 资源 (7)
- 收藏
- 关注

原创 遇到的那些手机兼容问题
记录下使用不同厂商的手机时遇到的各种奇怪问题。VIVO手机我用的是VIVO X21A,Android 8.1.0系统,遇到的奇怪问题如下:开发者模式打开之后,无法连接adb命令,导致无法连接Android Studio。反复开关debug开关无效,切换debug充电,传输文件等无效。最后发现重启之后就可以了。 安装完测试包之后,所有功能无法正常联网,全部显示网络错误。而且部分功能一旦...
2020-02-23 10:58:56
594

原创 Android开发笔记
<< :左移运算符,num <<1,相当于num乘以2;num <<n,相当于num乘以2的n次方。>> :右移运算符,num >>1,相当于num除以2;num >>n,相当于num除以2的n次方。>>> :无符号右移,忽略符号位,空位都以0...
2020-01-19 16:27:21
147
原创 安卓11状态栏图标不显示问题调查
控制状态栏背景色的源码默认状态栏背景色StatusBar.java类的源码中,构造方法中就有默认的背景色,源码如下@SuppressWarnings("UnusedParameters") public StatusBar(BridgeContext context, Density density, boolean isRtl, boolean rtlEnabled, int simulatedPlatformVersion) { // F
2021-07-28 09:38:08
1664
原创 绘制带二级进度的圆角进度条
使用canvas.drawRoundRect来绘制这个方案比较简单,只需要先绘制一个一级进度条,是一个圆角的进度条。然后在绘制一个二级进度条,随着进度更新绘制区域即可。但是二级进度条需要根据绘制的进度来调整使用drawRect还是drawRoundRect。方案如下使用PorterDuffXfermode模式来绘制先在dstBitmap中绘制一个圆角的进度条,然后在srcBitmap中绘制一个矩形的二级进度条,这样两个bitmap的重叠区域使用srcIn模式就可以达到期望的效果。..
2021-03-10 11:57:41
422
原创 App性能监控
方案一NetworkStatsManager#querySummary /** * Query network usage statistics summaries. Result filtered to include only uids belonging to * calling user. Result is aggregated over time, hence all buckets will have the same start and * e
2020-07-03 15:41:06
1109
原创 记录一次礼物动效的设计与实现过程
实现礼物动效可以使用ViewGroup的方式也可以使用自定义View的方式。本文使用的是自定义View方式,不会讨论关于ViewGroup的实现方式。数据模型数据源列表使用mList数据源列表使用mList来表示, 代表接口返回的数据列表 mList只有遍历操作,选择ArrayList实现绘制数据源列表使用mPendingDanMuList与数据源列表不同,绘制数据源列表存放的是用于绘制的数据,比如坐标信息,调试信息等,当然它也包含来自数据列表的信息。其实绘制数据源列表就是根据mL.
2020-06-26 19:30:22
987
1
原创 ViewGroup的测量模式
ViewGroup的测量模式 /** * Does the hard part of measureChildren: figuring out the MeasureSpec to * pass to a particular child. This method figures out the right MeasureSpec * for one ...
2020-03-06 12:48:07
217
原创 Android Seekbar高低版本兼容问题之拖拽按钮位置异常问题排查
问题描述工作需要对Seekbar的拖拽按钮设置一个自定义的icon,然后就遇到一个Seekbar拖拽按钮机型适配问题。在Android 10等高版本系统机型上Seekbar的拖拽按钮展示正常,但是在比如Android5.1系统上展示异常。异常现象是拖拽按钮偏离了轨道中心位置,拖拽按钮顶部紧贴控件的顶部边界。原因分析Seekbar拖拽按钮是个Drawable,它的位置由Drawabl...
2020-03-02 23:59:07
2527
原创 Android View中getTop,getY,getTranslationY之间的关系
首先View源码中没有Y这个成员变量。View源码中的成员变量只有 mTop和mTransformationInfo(和translationY有关)。Y只是作为一个抽象概念存在,它的计算关系如以下代码所示。/** * The visual y position of this view, in pixels. This is equivalent to the ...
2020-02-24 15:44:36
1411
原创 排查状态栏沉浸式引起的布局间距过大的bug
记录一次工作中遇到的一次排查由于系统状态栏显示之后顶部布局间距过大的bug的过程。我要在一个全屏的页面上(FrameLayout)悬浮一个置顶(Gravity.Top)的菜单栏(MenuBar)。菜单栏初始状态是隐藏的,用一个translateY(-menuHeight)就可以做到这种效果。当要显示菜单栏时,translateY(0)即可。当然隐藏和显示是通过属性动画来完成的。这...
2020-02-22 23:13:17
577
原创 listview滚动状态保存和恢复
获取listview滚动状态// save index and top positionint index = listView.getFirstVisiblePosition();View v = listView.getChildAt(0);int top = (v == null) ? 0 : (v.getTop() - listView.getPaddingTop());ou...
2020-02-17 19:09:31
386
原创 安卓UI设计、验收规范总结
UI效果图、标注如果控件带有阴影效果,则需要在标注文件中,把阴影效果的尺寸包含进控件的尺寸中,并且切图时带上阴影效果。如果不这么做,而是仅仅标注出来不带阴影效果的设计图,那会带来很多麻烦。 动画效果需要给出具体的动画参数,比如起始位置坐标,位移参数、alpha参数、缩放参数、动画时长,动画关键节点等信息。或者出一个视频demo。如果只是一句话,说做出类似于哪个功能的动画,这样的动效就是有很多...
2020-02-17 11:41:15
1774
原创 《算法导论》第三版学习资料
课后答案可以参考在线资料,这个资料里面的答案相对比较完整。一次也就看几个问题的,没必要下载,在线查看即可。https://max.book118.com/html/2019/0520/6051024051002032.shtm...
2020-02-10 00:17:18
261
原创 注意选择合适的数据精度
一般情况下不必关心数据精度,但在某些应用场景中精度是至关重要的,比如说涉及到价格和支付相关的对精度的要求就比较高,使用bigDecimal是合适的...
2020-02-08 12:08:53
599
原创 TextView setCompoundDrawables时不生效
项目中遇到TextView setCompoundDrawables时不生效的情况。不生效原因涉及到setCompoundDrawables的具体实现。setCompoundDrawables源码如下:/** * Sets the Drawables (if any) to appear to the left of, above, to the * right ...
2020-02-06 12:33:35
1133
原创 计算分割线的高度
分割线的高度一般是1px,但是测量出来的值可能是0.33dp。所以,不能直接使用0.33dp,因为装换成int之后会导致分割线的高度为0.使用X2C框架自动升层的代码中,计算0.33dp的代码如下:(TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,0.33f,getResources().getDisplayMetrics())...
2020-01-19 12:08:28
386
原创 ScrollView嵌套ViewPager,左右翻页时ScrollView向上滚动
记录一次工作中遇到的异常交互问题。UI层级结构如下:ScrollView嵌套ViewPager,而ViewPager中子页面放的是GridView。ViewPager左右翻页时,导致ScrollView向上滚动的原因是:1.ViewPager左右翻会触发ScrollView的onLayout方法2. 而ViewPager.onLayout的方法中会检测是否有子View获取...
2020-01-15 12:27:33
459
原创 日历计算不是简单的数学加减关系
如题:日历计算不是简单的数学加减关系。下面是典型的错误代码示例。//首先过滤过期或失效文件int date = EventUtil.getTime(pathname.lastModified());int currDate = EventUtil.getTime(-1);if (date + EventConstants.sReserveDays <= currDate) {...
2020-01-14 12:13:09
264
原创 RecyclerView源码
8.1.0源码@Override public boolean onTouchEvent(MotionEvent e) { if (mLayoutFrozen || mIgnoreMotionEventTillDown) { return false; } if (dispatchOnItemTouch(e)) ...
2019-11-09 19:38:51
195
原创 Activity启动流程之startActivityLocked源码
private final void startActivityLocked(ActivityRecord r, boolean newTask, boolean doResume, boolean keepCurTransition, Bundle options) { final int NH = mHistory.size(); i...
2019-11-09 17:28:53
532
原创 ListView源码之tranckMotionScroll
/** * Track a motion scroll * * @param deltaY Amount to offset mMotionView. This is the accumulated delta since the motion * began. Positive numbers mean the user's fin...
2019-11-09 17:28:41
243
原创 RelativeLayout onMeasure各版本源码对比
源码Android4.3// TODO: we need to find another way to implement RelativeLayout // This implementation cannot handle every case @Override protected void onMeasure(int widthMeasureSpec, ...
2019-11-09 17:28:30
173
原创 LinearLayout onMeasure 各版本源码对比
源码对比源码4.3 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mOrientation == VERTICAL) { measureVertical(widthMeasureSpec, heightMeasure...
2019-11-09 17:28:18
164
原创 【源码解析】豆瓣电影推荐卡片效果实现原理
源码解析豆瓣电影推荐卡片层叠效果,自定义ViewGroup方式实现,view复合动画,事件处理,view绘制,自带view缓存复用机制。效果示例交互效果描述开始只有一张卡片,随着第二张卡片慢慢往上面叠加,第一张卡片会做位移动画、缩放动画和alpha动画,直到第二张卡片盖住第一张卡片。同样地慢慢滑动第三张卡片,第一张以及第二张同时做位移动画、缩放动画和alpha动画。直到第...
2019-09-11 21:54:48
4643
原创 【源码解析】Activity 启动模式Launch Mode机制
Activity启动模式源码解析启动模式常见应用场景一般情况下启动activity的时候不需要指定launchMode,不指定launchMode时,使用的时默认值,默认值时standard。standard属性在运行时会被解析成FLAG_ACTIVITY_MULTIPLE_TASK,因而源码中就是用这个flag来处理standard类型的。如果需要指定launchMode,则...
2019-07-15 21:00:26
1330
1
原创 Google IO 2017 加快gradle编译速度
关于显著加快gradle打包速度的7点建议,仅用于开发阶段打包配置,正式发布时打包配置有些建议不适用。 1. 使用最新的gradle插件 使用最新的gradle插件 2. 避免在老版本系统上使用multidex 避免在老版本系统上使用multidex 3.避免拆分打包 ...
2017-05-26 12:53:37
138
原创 XML中使得EditText不能自动获取焦点
Activity中放置了多个的EditText的时候(比如Recyclerview 的item中有edittext),进入该activity的时候第一个EditText会接收焦点,但是项目中需要所有的EditText默认是不接收焦点的,该怎么做呢?网上的大部分方案运行起来都有问题。下面这是最简单的方案,只需要在XML中设置即可,测试通过。具体是在EditText的父级控件中添...
2017-05-26 12:34:01
119
原创 记录使用Instant Run的一个坑
前段时间读了一片文章Instant Run工作原理及用法,文章写的不错,我很受启发。引用其中一段 如果应用的minSdkVersion小于21,可能多数的Instant Run功能会挂掉,这里提供一个解决方法,通过product flavor建立一个minSdkVersion大于21的新分支,用来debug 于是...
2017-05-06 11:06:51
124
原创 Effective java 读书笔记( 五 )
38.检查参数的有效性39.必要时进行保护性拷贝1.对于构造器的每个可变参数进行保护性拷贝(defensive copy)是必要的,并且使用备份对象作为被拷贝对象实例的组件,而不是使用原始的对象40.谨慎设计方法原型1.谨慎地选择方法的名称2.不要过于追求提供便利的方法3.避免过长的参数列表4.对于参数类型要优先使用接口而不是类END
2013-01-04 18:04:38
416
原创 Effective java 读书笔记( 四 )
30.用enum代替int常量1.在编程语言还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具名的int常量,每个类型成员一个常量:// The int enum pattern - severely deficient! public static final int APPLE_FUJI = 0; public static final int APPLE_PIPPIN =
2013-01-04 17:13:15
457
原创 Effective java 读书笔记( 三 )
23.请不要在新代码中使用原生态类型1.原生态类型与java1.5版本之前未引入泛型时一样,有很多问题,不推荐使用2.不使用原生态类型,但又不关心实际的类型参数的时候该怎么办呢?java提供了一种安全的替代方法,称作“无限制的通配符类型”(unbounded wildcard type)3.示例:// Unbounded wildcard type - typesafe and f
2012-12-28 14:32:06
733
原创 Effective java 读书笔记( 二 )
9.覆盖equals时总要覆盖hashCode1.在应用程序的执行期间,只要对象的equals方法的比较操作所用到的信息没有被修改,那么对这同一个对象调用多次,hashCode方法都必须始终如一地返回同一个整数。在同一个应用程序的多次执行过程中,每次执行所返回的整数可以不一致2.如果两个对象根据equals(Object)方法比较是相等的,那么调用这两个对象中任意一个对象的hashCode
2012-12-12 11:30:18
710
原创 Avoid Finalizers
Finalizers are unpredictable, often dangerous, and generally unnecessary.Their use can cause erratic behavior, poor performance, and portability problems.Finalizers have a few valid uses, which we
2012-12-11 15:12:32
968
原创 Effective java 读书笔记(一)
使用API编写程序的程序员被称为该API的用户(User),在类的实现中使用了API的类成为该API的客户(Client)。1.考虑用静态工厂方法代替构造器,静态工厂方法(static factory method)类可以通过静态工厂方法来提供它的客户端,而不是通过构造器提供静态工厂方法而不是共有的构造器静态工厂方法与构造器相比优势有:1.不必每次调用它们的时候都创建一个新
2012-12-10 15:18:51
1008
原创 写点看Harvard CS50 公开课的感受
Harvard University,世界顶级大学,对于来自普通院校的我来说,真是太具有吸引力了,而我也“愿意”为她蒙上一层厚厚的神秘的面纱,我真的愿意。我很幸运能有机会“拜读”CS50公开课,谢谢网易公开课平台,更谢谢Harvard CS学院教员们的慷慨和分享精神。CS50 2010 fall 共有20集,每集1个多小时,我从前几天一直看,看到现在看完了一大半了,越看越觉得“那层
2012-11-26 11:32:16
5837
转载 android 3.0及以后版本新添加的动画类PropertyAnimation
Animation in Honeycomb[This post is by Chet Haase, an Android engineer who specializes in graphics and animation, and who occasionally posts videos and articles on these topics on his Code
2012-08-02 10:24:17
1026
转载 【Android工具】被忽略的UI检视利器:Hierarchy Viewer
Hierarchy Viewer是随AndroidSDK发布的工具,位置在tools文件夹下,名为hierarchyviewer.bat。它是Android自带的非常有用而且使用简单的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器,但是好像很少有人提它,难道是因为太简单? 具体来说主要功能有2个:1. 从可视化的角度直观地获得UI布局设计结构和
2012-07-10 13:15:04
585
转载 Android 内存监测工具 DDMS --> Heap
用 Heap监测应用进程使用内存情况的步骤如下:1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的;2. 将手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”;3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息;
2012-07-10 13:14:05
553
老罗的Android之旅(罗升阳)导读PPT合集.zip
2019-07-18
微博客户端含(新浪微博,腾讯微博)
2013-01-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人