工作记录
文章平均质量分 77
书虫676
这个作者很懒,什么都没留下…
展开
-
安卓11状态栏图标不显示问题调查
控制状态栏背景色的源码默认状态栏背景色StatusBar.java类的源码中,构造方法中就有默认的背景色,源码如下@SuppressWarnings("UnusedParameters") public StatusBar(BridgeContext context, Density density, boolean isRtl, boolean rtlEnabled, int simulatedPlatformVersion) { // F原创 2021-07-28 09:38:08 · 1522 阅读 · 0 评论 -
绘制带二级进度的圆角进度条
使用canvas.drawRoundRect来绘制这个方案比较简单,只需要先绘制一个一级进度条,是一个圆角的进度条。然后在绘制一个二级进度条,随着进度更新绘制区域即可。但是二级进度条需要根据绘制的进度来调整使用drawRect还是drawRoundRect。方案如下使用PorterDuffXfermode模式来绘制先在dstBitmap中绘制一个圆角的进度条,然后在srcBitmap中绘制一个矩形的二级进度条,这样两个bitmap的重叠区域使用srcIn模式就可以达到期望的效果。..原创 2021-03-10 11:57:41 · 375 阅读 · 0 评论 -
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 · 1027 阅读 · 0 评论 -
记录一次礼物动效的设计与实现过程
实现礼物动效可以使用ViewGroup的方式也可以使用自定义View的方式。本文使用的是自定义View方式,不会讨论关于ViewGroup的实现方式。数据模型数据源列表使用mList数据源列表使用mList来表示, 代表接口返回的数据列表 mList只有遍历操作,选择ArrayList实现绘制数据源列表使用mPendingDanMuList与数据源列表不同,绘制数据源列表存放的是用于绘制的数据,比如坐标信息,调试信息等,当然它也包含来自数据列表的信息。其实绘制数据源列表就是根据mL.原创 2020-06-26 19:30:22 · 878 阅读 · 1 评论 -
Android Seekbar高低版本兼容问题之拖拽按钮位置异常问题排查
问题描述工作需要对Seekbar的拖拽按钮设置一个自定义的icon,然后就遇到一个Seekbar拖拽按钮机型适配问题。在Android 10等高版本系统机型上Seekbar的拖拽按钮展示正常,但是在比如Android5.1系统上展示异常。异常现象是拖拽按钮偏离了轨道中心位置,拖拽按钮顶部紧贴控件的顶部边界。原因分析Seekbar拖拽按钮是个Drawable,它的位置由Drawabl...原创 2020-03-02 23:59:07 · 2396 阅读 · 0 评论 -
遇到的那些手机兼容问题
记录下使用不同厂商的手机时遇到的各种奇怪问题。VIVO手机我用的是VIVO X21A,Android 8.1.0系统,遇到的奇怪问题如下:开发者模式打开之后,无法连接adb命令,导致无法连接Android Studio。反复开关debug开关无效,切换debug充电,传输文件等无效。最后发现重启之后就可以了。 安装完测试包之后,所有功能无法正常联网,全部显示网络错误。而且部分功能一旦...原创 2020-02-23 10:58:56 · 523 阅读 · 0 评论 -
排查状态栏沉浸式引起的布局间距过大的bug
记录一次工作中遇到的一次排查由于系统状态栏显示之后顶部布局间距过大的bug的过程。我要在一个全屏的页面上(FrameLayout)悬浮一个置顶(Gravity.Top)的菜单栏(MenuBar)。菜单栏初始状态是隐藏的,用一个translateY(-menuHeight)就可以做到这种效果。当要显示菜单栏时,translateY(0)即可。当然隐藏和显示是通过属性动画来完成的。这...原创 2020-02-22 23:13:17 · 536 阅读 · 0 评论 -
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 · 326 阅读 · 0 评论 -
安卓UI设计、验收规范总结
UI效果图、标注如果控件带有阴影效果,则需要在标注文件中,把阴影效果的尺寸包含进控件的尺寸中,并且切图时带上阴影效果。如果不这么做,而是仅仅标注出来不带阴影效果的设计图,那会带来很多麻烦。 动画效果需要给出具体的动画参数,比如起始位置坐标,位移参数、alpha参数、缩放参数、动画时长,动画关键节点等信息。或者出一个视频demo。如果只是一句话,说做出类似于哪个功能的动画,这样的动效就是有很多...原创 2020-02-17 11:41:15 · 1668 阅读 · 0 评论 -
《算法导论》第三版学习资料
课后答案可以参考在线资料,这个资料里面的答案相对比较完整。一次也就看几个问题的,没必要下载,在线查看即可。https://max.book118.com/html/2019/0520/6051024051002032.shtm...原创 2020-02-10 00:17:18 · 221 阅读 · 0 评论 -
注意选择合适的数据精度
一般情况下不必关心数据精度,但在某些应用场景中精度是至关重要的,比如说涉及到价格和支付相关的对精度的要求就比较高,使用bigDecimal是合适的...原创 2020-02-08 12:08:53 · 552 阅读 · 0 评论 -
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 · 1076 阅读 · 0 评论 -
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 · 129 阅读 · 0 评论 -
计算分割线的高度
分割线的高度一般是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 · 356 阅读 · 0 评论 -
ScrollView嵌套ViewPager,左右翻页时ScrollView向上滚动
记录一次工作中遇到的异常交互问题。UI层级结构如下:ScrollView嵌套ViewPager,而ViewPager中子页面放的是GridView。ViewPager左右翻页时,导致ScrollView向上滚动的原因是:1.ViewPager左右翻会触发ScrollView的onLayout方法2. 而ViewPager.onLayout的方法中会检测是否有子View获取...原创 2020-01-15 12:27:33 · 433 阅读 · 0 评论 -
日历计算不是简单的数学加减关系
如题:日历计算不是简单的数学加减关系。下面是典型的错误代码示例。//首先过滤过期或失效文件int date = EventUtil.getTime(pathname.lastModified());int currDate = EventUtil.getTime(-1);if (date + EventConstants.sReserveDays <= currDate) {...原创 2020-01-14 12:13:09 · 248 阅读 · 0 评论 -
RecyclerView源码
8.1.0源码@Override public boolean onTouchEvent(MotionEvent e) { if (mLayoutFrozen || mIgnoreMotionEventTillDown) { return false; } if (dispatchOnItemTouch(e)) ...原创 2019-11-09 19:38:51 · 164 阅读 · 0 评论 -
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 · 157 阅读 · 0 评论 -
LinearLayout onMeasure 各版本源码对比
源码对比源码4.3 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { if (mOrientation == VERTICAL) { measureVertical(widthMeasureSpec, heightMeasure...原创 2019-11-09 17:28:18 · 153 阅读 · 0 评论 -
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 · 223 阅读 · 0 评论 -
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 · 509 阅读 · 0 评论 -
【源码解析】Activity 启动模式Launch Mode机制
Activity启动模式源码解析启动模式常见应用场景一般情况下启动activity的时候不需要指定launchMode,不指定launchMode时,使用的时默认值,默认值时standard。standard属性在运行时会被解析成FLAG_ACTIVITY_MULTIPLE_TASK,因而源码中就是用这个flag来处理standard类型的。如果需要指定launchMode,则...原创 2019-07-15 21:00:26 · 1191 阅读 · 1 评论 -
【源码解析】豆瓣电影推荐卡片效果实现原理
源码解析豆瓣电影推荐卡片层叠效果,自定义ViewGroup方式实现,view复合动画,事件处理,view绘制,自带view缓存复用机制。效果示例交互效果描述开始只有一张卡片,随着第二张卡片慢慢往上面叠加,第一张卡片会做位移动画、缩放动画和alpha动画,直到第二张卡片盖住第一张卡片。同样地慢慢滑动第三张卡片,第一张以及第二张同时做位移动画、缩放动画和alpha动画。直到第...原创 2019-09-11 21:54:48 · 4571 阅读 · 0 评论 -
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 · 1010 阅读 · 0 评论