自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android应用开发之自定义View触摸相关工具类全解

ViewConfiguration这个类主要提供了一些自定义控件用到的标准常量,譬如尺寸、滑动距离、敏感度等,当我们自定义控件时就可以直接使用他来避免自己做一些测试。下面是该类的源码注视,使用时直接可以参考,没啥特殊的逻辑东西,所以不再进行源码分析。如下:public class ViewConfiguration {…//不推荐使用,推荐ViewConfiguration.get(Context)获取实例public ViewConfiguration() {}public static Vie

2022-05-04 11:40:30 280

原创 Flutter仿钉钉打卡

][Color(0xFFFFB164),Color(0xFFED6230),]),设置阴影,同样在在1中Container的BoxDecoration中添加boxShadow:boxShadow: [BoxShadow(// 阴影偏移offset: Offset(0, 40.0),// 1为正常状态否则为异常状态color: type == 1? Color(0xFF1376EE): Color(0xFFED6230),// 投影模糊程度blurRadius: 36.0.

2022-05-03 13:06:50 523

原创 Flutter-(八)实现-View-的移动拖拽

先来看效果:###第一步在main方法中用MaterialApp和Scaffold作为应用主框架,这里我就不详细展开说明了,这样做主要是为了显示效果更好,你可以使用你熟悉的Widget控件完成。void main() {runApp(MaterialApp(home: Scaffold(body: xxx)));}###第二步自定义MyDragWidget类,集成StatefulWidget类,主要是为了获取手势坐标之后调用setState()方法刷新Widget的位置。class

2022-05-03 13:04:56 1136

原创 Flutter 开发小结

didChangeDependencies 在initState之后调用,可以在这个方法中跨组件拿到数据build 创建Widget的地方,在离开和回到页面的时候都会调用didUpdateWidget 当组件的状态改变的时候就会调用,比如调用-了setStatedeactivate 在离开和回到页面的时候都会调用dispose 销毁的时候调用[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZKBFj8f5-1651554131845)(htt ..

2022-05-03 13:02:30 704

原创 Flutter 基础篇(二十一)

AppBar({Key key,this.leading, //导航栏最左侧Widget,常见为抽屉菜单按钮或返回按钮。this.automaticallyImplyLeading = true, //如果leading为null,是否自动实现默认的leading按钮this.title,// 页面标题this.actions, // 导航栏右侧菜单this.bottom, // 导航栏底部菜单,通常为Tab按钮组this.elevation = 4.0, // 导航栏阴影this.cent

2022-05-03 12:58:59 698

原创 Flutter 会不会被苹果限制其发展_

1、和 react-native 、weex 、uni-app 、taro 等平台不同,flutter framework 的大部分控件是和 iOS 原生平台无关的,而是通过编译成的 framework, 利用 skia 实现绘制,这说明 flutter 对于原生平台的依赖比较低,所以 iOS 可能会处于维护生态而 “做某些限制”。但是 flutter 对于 iOS 的生态威胁确实不高,至少 flutter 目前只是一套“朴素的” UI 框架。2、flutter 到如今都没有官方支持热更新,这大概也是为了

2022-05-03 12:57:00 1105

原创 Flutter IOS 微信分享生成universalLink

Xcode中开启Associated Domains服务添加跳转域名:applinks:www.example.com注意:①,你的服务器必须支持SSL;②,Domains可以添加多个;③,Domains必须以 applinks: 开头;![](https://img-blog.csdnimg.cn/20210527171043981.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk.

2022-05-03 12:55:22 400

原创 ConstraintLayout

0、相关文章======[万字长文 - 史上最全ConstraintLayout(约束布局)使用详解](()文章0:[ConstraintLayout在项目中实践与总结](()(500赞,详细,有代码)文章1:[Android 约束布局(ConstraintLayout)详解](()(阅读量2w,12赞)《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 文章2:[Android新特性介绍,ConstraintLayout完全

2022-05-03 12:50:28 188

原创 app_actionLayout定义的menu不能触发onOptionsItemSelected

parser = mContext.getResources().getLayout(menuRes);AttributeSet attrs = Xml.asAttributeSet(parser);parseMenu(parser, attrs, menu);} catch (XmlPullParserException e) {throw new InflateException(“Error inflating menu XML”, e);} catch (IOException e) {

2022-05-03 12:48:10 154

原创 Android高级常见面试题:说说Activity的启动流程

Zygote端主要逻辑是在runOnce函数,函数内调用Zygote.forkAndSpecialize(…)创建子进程,创建完成之后就分别在父进程和子进程里面做各自的事情1) 父进程通过hanleParentProc(pid)把子进程的pid通过Socket发送给AMS2)子进程调用handleChildProc函数,做一些通用的初始化,比如启用Binder机制;执行应用程序的入口函数,也就是ActivityThread的Main函数ActivityThread的main函数,里面会创建一个.

2022-05-03 12:46:30 822

原创 我三年半连升了三级

我说,“应该可以吧”他说,“你现在25,5年后也才30,30岁就能成为某个领域的专家,为什么不去做呢?你看看周围有多少30岁的人还一事无成,而那个时候的你已经是数据库专家了。”当时的我,刚刚进入别人梦寐以求的BAT,处于各种浮躁的时期,虽然每天也在学习,看起来也很努力,但是效果极其有限,今天想学大数据,明天想学云计算,后天又要研究机器学习,心境变化无常,不知道自己未来究竟该是什么样。如果就这么下去,我也就是在百度熬资历,领工资,混吃等死了。好在久哥的话点醒了我,不知道别人听了什么感受,我听了以后.

2022-04-29 17:20:32 2026

原创 布局ViewGroup原理解析(二)

<LinearLayoutandroid:layout_width=“0dp”android:layout_height=“fill_parent”android:background=“#DA70D6”android:layout_weight=“2”/> 要实现第一个的1:1的效果,只需要分别把两个LinearLayout的weight改成1和1就可以了 用法归纳: 按比例划分水平方向:将涉及到的View的android:width属性设置为0dp,然后设置为android w

2022-04-29 17:14:27 89

原创 安卓(Android)的原生系统真的那么好用吗

定制系统有定制系统的优点,它一定更适合中国的大众用户,毕竟中国的大众用户甚至连微信调整一个功能都可能不会使用了,“学习成本”这种东西能不要就不要。在 Android 9.0 之前也一定更适合中国的 Android 软件环境,原生 Android 不通过一些手段是控制不住的,而这些手段定制系统帮你做了。Android原生系统真的那么好用吗?这种问题当然是否定的。原生 Android(指的是直接基于 AOSP 构建的而非手机厂商出厂固件修改的第三方 ROM,但包括 Nexus/Pixel 或其它被 Go

2022-04-29 17:12:11 3046

原创 安卓wifi基础功能

123456789101112132 涉及到的广播通知WifiManager.WIFI_STATE_CHANGED_ACTION ——wifi开关变化广播WifiManager.SCAN_RESULTS_AVAILABLE_ACTION——热点扫描结果通知广播WifiManager.SUPPLICANT_STATE_CHANGED_ACTION——热点连接结果通知广播WifiManager.NETWOR..

2022-04-29 17:09:49 1223

原创 字节跳动面试官:请回答一个 TCP 连接上面能发多少个 HTTP 请求?

[Hypertext Transfer Protocol – HTTP/1.1​tools.ietf.org](()第二个问题:一个 TCP 连接可以对应几个 HTTP 请求?了解了第一个问题之后,其实这个问题已经有了答案,如果维持连接,一个 TCP 连接是可以发送多个 HTTP 请求的。第三个问题:一个 TCP 连接中 HTTP 请求发送可以一起发送么(比如一起发三个请求,再三个响应一起接收)?HTTP/1.1 存在一个问题,单个 TCP 连接在同一时刻只能处理一个请求,意思是说:两个请求的生命周

2022-04-29 17:07:56 82

原创 如何用10行代码让app全局置灰

二、如何提升替换效率从上面TextView、ImageView二者的置灰实现没有任何区别,我们可以猜测是不是所有的View都能给置灰呢,那么ViewGroup作为一个特殊的View是否可以置灰呢?接下来我们来验证一下这个猜想,自定义一个RelativeLayout,还是之前的代码,需要注意的是这里需要复写dispatchDraw方法。关于onDraw方法和dispatchDraw方法的差别这里也稍微解释一下,ViewGroup容器组件的绘制,当它没有背景时直接调用的是dispatchDraw方法, 而绕过

2022-04-29 16:59:55 2143

原创 如何加载100M的图片却不撑爆内存,一张 100M 的大图,如何预防 OOM?

Android开发中,有时候会有加载巨图的需求,如何加载一个大图而不产生OOM呢,使用系统提供的BitmapRegionDecoder这个类可以很轻松的完成。效果图:BitmapRegionDecoder:区域解码器,可以用来解码一个矩形区域的图像,有了这个我们就可以自定义一块矩形的区域,然后根据手势来移动矩形区域的位置就能慢慢看到整张图片了。OK 核心原理就是这么简单,不过做起来还是有一些细节处理,下面就一步一步的完成一个加载大图,支持拖动查看,双击放大,手势缩放的的自定义View。第一步,初始

2022-04-29 16:58:23 1095 2

原创 《第一行代码第三版》

2020.3月逐渐推出Android 11版本。5.0使用ART虚拟机代替DVM虚拟机,提出Material Design来优化界面设计,5.0以上占比超过85%。1.1.2.Android应用开发特色(1)四大组件 :Activity、Service、BroadcastReceiver、ContentProvider。Activity是应用程序显示的界面;Service后台默默运行,即使用户退出app;BroadcastReceiver使得app接受各处广播消息,也可以向外发出消息;Content

2022-04-28 15:24:27 597

原创 《数据结构C语言版》

在C语言中数据类型有:基本类型和构造类型。抽象数据类型(ADT):是指一个数学模型以及定义在该模型上的一组操作,具体包括三部分:数据对象,数据对象上关系的集合,对数据对象的基本操作的集合。抽象数据类型的定义仅是一组逻辑特性描述,与其在计算内的表示和实现无关。ADT的形式化定义是三元组:ADT=(D,S,P)D是数据对象,S是D上的关系集合,P是对D基本操作的集合。ADT的定义:ADT 抽象数据类型名{数据对象:<数据对象的定义>数据关系:<数据关系的定义>基本操作:

2022-04-28 15:21:59 1224

原创 “金三银四” “阿里” 我去定了,谁也拦不住我,这份《Android面试宝典》说

(1).HashMap的底层原理是什么?线程安全么? (百度( 美团)(2).HashMap中put是如何实现的? (滴滴)(3).谈一下hashMap中什么时候需要进行扩容,扩容resize()又是如何实现的?(4).什么是哈希碰撞?怎么解决? (滴滴.美团)(5).HashMap和HashTable的区别 (小米)(6).HashMap中什么时候需要进行扩容,扩容resize()是如何实现的? (滴滴)(7).hashmap concurrenthashmap原理 (美团)(8).arra

2022-04-28 15:20:15 488

原创 “有趣”这件小事

也许是现实的压力太大,一些人采取了更加温和的方式去对待事情和对待自己,一切顺其自然,不过分强求事情的结果。但活在现实当中,真的能做到看淡一切吗,我是表示质疑的。因为我觉得生而为人,就有所欲,也会有所求,无欲无求的还是人吗。如果连我们年轻人都对这个世界失去好奇心,那时代的年轮怎么会转起来。要知道我们可是二十几岁的年轻人呀,芳华正茂的我们为啥要像个老年人一样看淡一切啊。整天说佛系,佛系mmp。如何有趣?在自己逐渐拥有独立的人格之后,我会逐渐培养很多爱好努力让自己变成一个有趣的人,听说内心孤独的人会喜欢养猫

2022-04-28 15:17:47 44

原创 “你们程序员不就是修电脑的吗,你牛什么牛

时间不够是最难解决的问题,可能也是最好解决的问题。时间确实就像海绵,挤挤总是有的,即使有时候我们会出现挤不动的情况,但那一定只是一个短期状况。这个阶段的同学最需要读书,因为这些同学通常都已经有了自己的知识体系,也明白自己的薄弱之处在哪里,这时候就需要做专项提升,越到这个阶段,就会越发现基础知识的重要性。 很多东西,真的需要学懂本质,这也是为什么大多数面试官都喜欢考察基础问题,因为真的基础才是根本,一个基础优秀的同学从来都不会太差。我也是最近半年通过部门开展的读书活动才爱上了读书,书读百遍,其义自见是真理

2022-04-28 15:16:08 102

原创 XTableView:一个带侧滑菜单的二维表格控件

super.computeScroll();}将当前这个LinearLayout滚动的最新值去更新全局scrollX值,并且通知 ScrollHelper 触发其它LinearLayout同步滚动:public class ScrollHelper {…public void notifyScroll(int x) {for (int i = 0; i < itemViewsMap.size(); i++) {itemViewsMap.get(itemViewsMap.keyAt(i))

2022-04-28 15:11:31 69

原创 XML解析PULL

[java]  [view plain](() [copy](() [print](() [?](()/** Pull方式,创建 XML  */public String pullXMLCreate(){StringWriter xmlWriter = new StringWriter();Person []persons = new 

2022-04-28 15:09:39 931

原创 xml-dom解析-简单的学生信息管理系统

this.location = location;}public double getGrade() {return grade;}public void setGrade(double grade) {this.grade = grade;}@Overridepublic String toString() {return “学生姓名:”+name+“, 学生住址:”+location+“, 准考证号:”+examid+“, 身份证号:”+idcard+“, 成绩:”+grade;}

2022-04-28 15:07:34 955

原创 windows环境下JSP环境搭建:Apache2

JkLogLevel warn#指定哪些请求交给tomcat处理,"DLOG4J"为在 workers.propertise里指定的负载分配控制器名 所有的请求都交给 controlJkMount /. DLOG4J3、在Apache24\conf\目录下新建两个文件分别是 workers.properties、uriworkermap.properties。这两个文件的内容大概如下:workers.properties1.首先我们配置了两个类型为ajp13的worker分别是s1和s2,它们

2022-04-28 15:05:59 99

原创 美团Android岗面经总结篇

手写算法题。一共有几个,面试官会随机抽一个作为题目。给出一个序列包含n个正整数的序列A,然后给出一个正整数x,你可以对序列进行任意次操作的,每次操作你可以选择序列中的一个数字,让其与x做按位或运算。你的目的是让这个序列中的众数出现的次数最多。请问众数最多出现多少次?1.Activity的生命周期、加载模式。 什么时候会用到singleTask?2.Handler机制 子线程可以创建handler吗?一个线程是否只有一个Looper? 如何保证一个线程只有一个Looper?3.多线程的方式有哪些?

2022-04-27 02:31:44 227

原创 网易有道Android面经:211本科,无安卓实习经验

哦哦还有个拆箱装箱,说完了他问这个机制有没有什么问题。感觉我说的还不够深3、有没有自己写过ftp(没)4、说一下tcp,udp,http,socket概念,说完了他问还有吗(懵,可能要说很多说很深)5、数据库,问数据库表要怎么设计,巴拉巴拉说到了范式,说一下范式。说完了一二三范式概念,问还有吗(懵,没有)6、什么情况用什么范式,一定要满足高范式吗之类的7、安卓内存泄漏,说了很多感觉他不满意8、cpu速度和磁盘速度不一致,怎么做到统一的(说了cache,他问还有吗……)9、项目有什么难点,如何解

2022-04-27 02:29:55 207

原创 编程你只想占有我的青春,可我想陪你到老

3.体力也没有以前好了。以前我可以连续通宵编程一周,每天只睡4个小时;或者完全不睡觉72小时编程。现在如果敢通宵一晚的话,后面3天都觉得身心俱疲,缓不过来。但显然,程序员不可能长久的健康生猛,被淘汰只是时间的问题。最近在职场论坛就看到这样的一位朋友,这位朋友已经37岁了,没想到在这个年纪被公司裁员了,找了四个月的工作,大公司都不愿意要他,都是因为他的年纪太大,所以大公司都把他给拒绝了。[](()03. 如何转行------------------------------------------

2022-04-27 02:27:40 170

原创 程序性能优化之启动速度与执行效率优化(一)下篇

}注意:我们只需要在app的开发版本下使用 StrictMode,线上版本避免使用 StrictMode,随意需要通过 诸如 DEVELOPER_MODE 这样的配置变量来进行控制。下面我们举几个例子来说明 StrictMode 是如何发挥作用的。代码1:public class ActivitySimple extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate

2022-04-27 02:26:05 291

原创 程序员面试技巧总结

这样的话你可以把整个面试过程往你熟知的地方引导,也能更倾向于体现出你的优势而不是劣势,但是此方法仅限于掌握合适的度,比如有的知识点是必会的而你想往别处引就有点说不过去了,比如让你说几个html5的新特性,你一个也说不上来,那可能就真的没辙了。3、在自我介绍中做一个引导:一般面试的开头都会有一个自我介绍,在这个位置你也可以尽情的为自己的优势方面去引导。4、面试过程中展示出自信:面试过程中的态度也要掌握好,不要自卑,也不要傲娇,自信的回答出每个问题,尤其遇到不会的问题,要么做一些引导,实在不能引导也可以

2022-04-27 02:23:34 166

原创 程序员真的可以轻松月收入破万吗?看了这20张图(市场

计算机及相关专业,本科以上学历,三年及以上全职开发工作经验,参与过2个以上完整的移动互联网项目;两年及以上安卓开发经验,具有跨平台开发经验者优先;了解Android多线程编程原理,熟悉线程池的使用;熟悉开源网络框架和图片缓存框架的使用,了解过开源框架代码;对Android的UI、组件、性能优化、内存优化等有深入实践;熟练掌握Android平台上App性能优化的工具和方法;良好的开发基础,理解常见设计模式,在实际工作中有很好的实践;具备较强的责任感和主动性 ,良好的沟通..

2022-04-27 02:22:03 107

原创 移动开发程序员最大的悲哀是什么?

热修复的实现原理,目前热修复框架的种类繁多,常见的包括底层替换、类加载和 Instant Run 方案。逆向工程原理,主要是为了防止 apk 被反编译破解,以及了解 apk 加固方案。插件化,目前方案同样很多,主流的技术实现是 Hook 方式,注册 Activity 进行占坑,使用占坑 Activity 通过 AMS 验证,还原插件 Activity,其他组件的原理也大致类似。NDK 开发,调用 JNI 以及回调 Java 的方式。自定义控件,需要注意 onMeasure,onLayout,onDr

2022-04-27 02:18:52 138

原创 看我如何解决“包解析错误”问题

//getExternalCacheDirs()既然了解了,我指定的也是没有毛病啊,但是还是不行,我重新看了下报错信息,发现报错信息中有that is not exported是不是在provider中exported的参数设置问题,感觉找到了希望,我急忙去改这个参数,运行程序,噢噢,直接崩溃了。这是什么鬼。看下日志:java.lang.SecurityException: Provider must not be exported大概的意思就是不能设置为exported为true,看来问题还.

2022-04-27 02:17:08 1505

原创 百度APP核心技术:Android多子view嵌套最佳通用解决方案

2. 多子view嵌套实现原理同大多数自定义控件类似,联动容器也需要处理子view的测量、布局以及手势处理。测量和布局对联动容器的场景来说非常简单,手势处理相对复杂些。从demo效果可以看出,联动容器需要处理好和子view嵌套滑动问题。嵌套滑动的处理方案有两种基于Google的NestedScrolling机制实现嵌套滑动;是由联动容器内部处理和子view嵌套滑动的逻辑。百度App早期版本的联动容器采用的方案2实现的,下图为方案2联动容器手势处理流程:笔者对方案2联动容器的实现代码做了开源

2022-04-27 02:14:39 332

原创 生还是死?Android 进程优先级详解

[](()前台进程你会想正在与用户交互的东西是最重要的需要保证活着的,这应该完全正确。但是“正在与用户交互”这个定义有点模糊。当前的前台 Activity 毫无争议属于这一类,它是已经调用了 onResume() 方法但还没有收到 onPause() 调用的 Activity 。一些 activity 在依靠他们自己的同时,也可能依赖 bound service 。**任何进程,如果它持有一个绑定到前台 activity 的服务,那么它也被赋予了同样的前台优先级。**这完.

2022-04-27 02:12:42 240

原创 Android学习--Fragment

学习目标:提示:这里可以添加学习目标例如: 一周掌握 Java 入门知识学习内容:提示:这里可以添加要学的内容例如:搭建 Java 开发环境掌握 Java 基本语法掌握条件语句掌握循环语句学习时间:提示:这里可以添加计划学习的时间例如:周一至周五晚上 7 点—晚上9点周六上午 9 点-上午 11 点周日下午 3 点-下午 6 点学习产出:提示:这里统计学习计划的总量例如: 技术笔记 2 遍 CSDN 技术博客 3 篇 习的 vlog 视频 1

2022-04-24 11:34:19 874

空空如也

空空如也

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

TA关注的人

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