自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android开发已经到了要烧香求职的地步了?

前任开发人员都离职了一个月,才招到了他这么一个“幸运儿”,来完成“救公司于水火”的壮举,这香真是没白烧。当然,在这一场“姻缘”当中,烧香的可不止张鹏一人,公司老板应该也应该也烧了不少,才迎来了自己的“盖世英雄”。回到正题,西天诸佛帮你解决不了bug的,不过西天阿三哥兴许可以(手动狗头)。张鹏的处境,可以说是目前大多数初中级Android开发人员经历的缩影。[](()现状初中级安卓开发的迷茫:一抓一大把,涨薪无望跳槽难。 现在,在IT职场中,有很多Android工程师,他们或者是计算机相关专业毕业,又

2022-05-10 12:09:49 327

原创 Android屏幕刷新机制—VSync、Choreographer-全面理解

2.2.3 VSync问题又来了:什么时候进行两个buffer的交换呢?假如是 Back buffer准备完成一帧数据以后就进行,那么如果此时屏幕还没有完整显示上一帧内容的话,肯定是会出问题的。看来只能是等到屏幕处理完一帧数据后,才可以执行这一操作了。当扫描完一个屏幕后,设备需要重新回到第一行以进入下一次的循环,此时有一段时间空隙,称为VerticalBlanking Interval(VBI)。那,这个时间点就是我们进行缓冲区交换的最佳时间。因为此时屏幕没有在刷新,也就避免了交换过程中出现 scre

2022-05-10 12:07:17 2195

原创 Android在开发初期之后应该何如学习?怎样才算精通?方向在哪儿

synchronizedLock引用类型动态代理元注解Android 知识点汇总ActivityFragmentServiceBroadcastReceiverContentProvider数据存储View进程Parcelable接口IPCWindow / WindowManagerBitmap屏幕适配ContextSharedPreferences消息机制线程异步..

2022-05-10 12:05:21 292

原创 Android事件分发机制三:事件分发工作流程

该方法是消费事件的主要方法,存在于view中,viewGroup默认并没有重写该方法。方法返回true表示消费事件,返回false表示不消费事件。viewGroup分发事件时,如果没有一个子view消费事件,那么会调用自身的onTouchEvent方法来处理事件。View的dispatchTouchEvent方法中,并不是直接调用onTouchEvent方法来消费事件,而是先调用onTouchListener判断是否消费;如果onTouchListener没有消费事件,才会调用onTouchEvent来处

2022-05-10 12:03:49 783

原创 Android-高级-UI-进阶之路-(三)-理解-View-工作原理并带你入自定义-View-门

childWidthMeasureSpec = getRootMeasureSpec(baseSize, lp.width);childHeightMeasureSpec = getRootMeasureSpec(desiredWindowHeight, lp.height);performMeasure(childWidthMeasureSpec, childHeightMeasureSpec);…}复制代码我们在继续看下 getRootMeasureSpec 的源码实现,代码如下://Vi

2022-05-10 12:02:10 204

原创 Android-引导用户指纹录入

private final String HONOR = “honor”;private final String KNT = “knt”;private static PhoneInfoCheck instance = null;public static synchronized PhoneInfoCheck getInstance(Context context, String brand){if (null == instance)instance = new PhoneInfoCheck

2022-05-10 12:00:30 361

原创 Android-GC原理探究(深度好文)

前者的在工作的时候是不没有独立的“mark”与“copy”阶段的,而是合在一起做一个动作,就叫scavenge(或evacuate,或者就叫copy)。也就是说,每发现一个这次收集中尚未访问过的活对象就直接copy到新地方,同时设置forwarding pointer。这样的工作方式就需要多一份空间。后者在工作的时候则需要分别的mark与compact阶段,mark阶段用来发现并标记所有活的对象,然后compact阶段才移动对象来达到compact的目的。如果compact方式是sliding compa

2022-05-10 11:58:12 254

原创 Android 记事本NotePad

Cursor cursor = db.rawQuery(selectQuery, null);return cursor;}public int updateNote(Note note) {SQLiteDatabase db = this.getWritableDatabase();ContentValues values = new ContentValues();values.put(NOTE_COL_TITLE, note.getTitle());values.put(NOTE_COL

2022-05-10 11:56:35 651

原创 Android 流式布局

public class XFlowLayout extends ViewGroup {private int childHorizontalSpace;private int childVerticalSpace;private Map<Object, Location> mLocationMap;public XFlowLayout(Context context, AttributeSet attrs) {super(context, attrs);TypedArray att

2022-05-10 11:55:01 616

原创 Android 性能优化最佳实践

第一点: onDraw方法中不要做耗时的任务,也不做过多的循环操作,特别是嵌套循环,虽然每次循环耗时很小,但是大量的循环势必霸占CPU的时间片,从而造成View的绘制过程不流畅。第二点: 除了循环之外,onDraw()中不要创建新的局部对象,因为onDraw()方法一般都会频繁大量调用,就意味着会产生大量的零时对象,不进占用过的内存,而且会导致系统更加频繁的GC,大大降低程序的执行速度和效率。其实这两点在android的UI线程中都适用。升级进化:优化2.0onDraw中不要创建新的局部对象

2022-05-10 11:53:13 391

原创 Android 无线调试

2)这里面需要注意就是只能连接一个手机,连接多个 后面执行命令会报错 more than one device/emulator3.命令行输入adb devices查看当前连接的所有设备,检查是否连接成功:如果是这个效果证明设备没有连接成功,连接成功是下图效果:4:命令行输入adb tcpip <port端口号> port是你自己定义的手机端口号,可以在0-65535之间取值,默认端口是5555,也就是说如果你没有执行第三部的命令,默认端口号是55555:断开数据线,查找

2022-05-09 12:26:52 1487

原创 Android 开发,你遇上 Emoji 头疼吗?

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uenau4ZK-1652070269570)(https://user-gold-cdn.xitu.io/2017/12/29/160a045332f90aab?imageView2/0/w/1280/h/960/ignore-error/1)]早期的时候,Emoji 的实现是将一些特殊的符号组合替换成图片表情,例如 :) 替换成 😊 ,这样的解决方案会导致很难将 Emoji 的表情标准化,而且表达的范围也有限。2010年开

2022-05-09 12:24:48 281

原创 Android 开发必备知识点整理

基于双向链表实现,查找慢:o(n),增删快:o(1)封装了队列和栈的调用[](()HashMap 、HashTableHashMap基于数组和链表实现,数组是 HashMap 的主体;链表是为解决哈希冲突而存在的当发生哈希冲突且链表 size 大于阈值时会扩容,JAVA 8 会将链表转为红黑树提高性能允许 key/value 为 nullHashTable数据结构和 HashMap 一样不允许 value 为 null线程安全[](()ArrayMap、Sp

2022-05-09 12:20:22 299

原创 Android 天气APP(三十二)快捷切换常用城市

item写完了,下面到适配器了。在adapter包下新建一个MainChangeCommonlyCityAdapter类,代码如下:package com.llw.goodweather.adapter;import androidx.annotation.Nullable;import com.chad.library.adapter.base.BaseQuickAdapter;import com.chad.library.adapter.base.BaseViewHolder;imp...

2022-05-09 12:18:52 335

原创 android 国际区号注册手机号编码 以及常用城市列表

爱尔兰+353比利时+32保加利亚+359巴西+55巴哈马+1242白俄罗斯+375伯利兹+501巴拿马+507波兰+48德国+49丹麦+45俄罗斯+7芬兰+358法国+33菲律宾+63哥伦比亚+57韩国+82荷兰+31加拿大+1吉尔吉斯斯坦+996柬埔寨+855卡塔尔+974立陶宛+370卢森堡+352罗马尼亚+40</ 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 item

2022-05-09 12:17:14 1031

原创 Android 原生控件ViewFlipper实现淘宝头条垂直滚动广告条

showPrevious():          显示ViewFlipper里的上一个View四、ViewFlipper的详细使用设置View1.首先在xml中声明ViewFlipper<LinearLayoutandroid:layout_width=“match_parent”android:layout_height=“100dp”android:orientation=“horizonta.

2022-05-09 12:15:33 398

原创 Android SurfaceView实战 带你玩转flabby bird (上)

public class Bird{/**鸟在屏幕高度的2/3位置*/private static final float RADIO_POS_HEIGHT = 2 / 3F;/**鸟的宽度 30dp*/private static final int BIRD_SIZE = 30;/**鸟的横坐标*/private int x;/**鸟的纵坐标*/private int y;/**鸟的宽度*/private int mWidth;/**鸟

2022-05-09 12:13:12 306

原创 Android Studio 清理缓存clean project与invalidate caches

Android studio 有时找不到R文件、 导入的资源、布 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 局 、 jar包 等  . 可能是studio 缓存造成的 .这是可以使用clean project  清理项目invalidate caches restart    清理Android studio缓存使用clean project工具栏

2022-05-09 12:11:35 1454

原创 Android Studio 快捷键大全

| 使用当前配置文件检查当前文件 | Alt+Shift+I | Option+Shift+I || 快速切换方案 | Ctrl+`(反引号) | Ctrl+`(反引号) || 打开设置对话框 | Ctrl+Alt+S | Command+,(英文逗号) || 打开项目结构对话框 | Ctrl+Alt+Shift+S | Command+;(英文分号) || 在标签页和工具窗口之间切换 | Ctrl+Tab | Ctrl+Tab || 在 Studio 内导航和搜索 || 搜索全部内容(包括代码

2022-05-09 12:10:02 1121

原创 Android-网络优化,使用-HTTPDNS-优化-DNS,从原理到-OkHttp-集成

DNS 不仅支持 UDP,它还支持 TCP,但是大部分标准的 DNS 都是基于 UDP 与 DNS 服务器的 53 端口进行交互。HTTPDNS 则不同,顾名思义它是利用 HTTP 协议与 DNS 服务器的 80 端口进行交互。不走传统的 DNS 解析,从而绕过运营商的 LocalDNS 服务器,有效的防止了域名劫持,提高域名解析的效率。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rBUL60OF-1651972368818)(//upload-images.jians

2022-05-08 09:13:08 817

原创 Android-第五节Menu菜单详解

一、Menu背景二、Menu使用步骤1.创建menu2.设计menu3.重写menu逻辑代码4.运行效果:[](()一、Menu背景=======================================================================手机毕竟和电脑不同,它的屏幕空间非常有限,因此充分地利用屏幕空间在手机界面设计中就显得非常重要了。如果你的活动中有大量的菜单需要显示,这个时候界面设计就会比较尴尬,因为仅这些菜单就可能占..

2022-05-08 09:10:58 435

原创 Android-开发---关于网络优化你必须要知道的重点。

##Charles 抓包工具本人更习惯于使用 charles 进行网络监控,这可以查看更多的数据指标,查看请求request、response 更加直观。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzFMBC6D-1651972138569)(https://upload-images.jianshu.io/upload_images/24099992-bfd0c9c880fdffeb.png?imageMogr2/auto-orient/strip%7CimageV

2022-05-08 09:09:18 111

原创 Android-View源码解读:浅谈DecorView与ViewRootImpl

这里先梳理一下以上的内容:Activity通过PhoneWindow的setContentView方法来设置布局,而设置布局之前,会先判断是否存在mContentParent,而我们设置的布局文件则是mContentParent的子元素。创建DecorView接着上面提到的installDecor()方法,我们看看它的源码,PhoneWindow#installDecor:private void installDecor() {if (mDecor == null) {mDecor = gen

2022-05-08 09:07:38 381

原创 Android 进阶之路:ASM 修改字节码,这样学就对了

[](()引入 ASM好了,下面我们开始正式学习 ASM。首先我们找到ASM 的官网:https://asm.ow2.io/在官网你可以看到目前最新的版本,还有一份详细的 User guide,基本包含了所有 API 的介绍。看官网上版本迭代目前已经跟新到9.1了,那就试用最新版本吧:// https://mvnrepository.com/artifact/org.ow2.asm/asm-commonsimplementation group: ‘org.ow2.asm’, name: ‘.

2022-05-08 09:05:55 1068

原创 Android 自带描边颜色渐变炫酷进度条

/**外描边的宽度*/private float BORDER_STROCK;/**进度条进度矩形与控件边界的距离,≥BORDER_STROCK*/private float PROGRESS_STROCK;//进度条的宽高private int mWidth, mHeight;/**画进度条的矩形*/private RectF mRec 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 tF;

2022-05-08 09:04:06 615

原创 Android 深入Http(2)加密与编码

[](()非对称加密原理:A使用公钥 和 加密算法 对数据加密得到密文发送给B,B使用私钥 和 相同的加密算法 对数据加密得到明文。那这里有一个问题了:这样看来 私钥 能解 公钥 加密的数据 ,那这样,非对称加密和对称加密不是没什么不同吗????这个问题的答案就是 非对称加密和对称加密的本质的区分:答案如下:A 有自己的公钥和私钥,假设叫 A公钥 和 A私钥, 它们互逆,能相互解开 对方加密的数据。B 也有自己的公钥和私钥,叫 B公钥 和 B私钥,同样也是互逆 , B公钥能解开B私钥加

2022-05-08 09:02:26 123

原创 Android 开发艺术探索笔记(6)

通过query方法去查询BookProvider2中的数据,其中Uri中的内容唯一标识了Provider,这就是Provider的authorities的值。这里讲一下:ContentProvider中的的方法是隐式的,所以用一般上述代码的情况去调用并不会出现BookProvider中的log日志,因为它执行与别的线程之中。但里面的方法还是会实现的。也就是BooKProvider的调用实现成功。2. 为了更好的管理BookProvider,我们需要一个数据库。代码如下:package com.rikk

2022-05-08 09:00:40 89

原创 Android 开发也要掌握的Java知识 -ThreadLocal

ThreadLocalMap is a customized hash map suitable only formaintaining thread local values. No operations are exportedoutside of the ThreadLocal class. The class is package private toallow declaration of fields in class Thread. To help deal withvery la.

2022-05-08 08:58:19 144

原创 Android 客户端性能优化(魅族资深工程师毫无保留奉献)

下面分别介绍出现这些问题的常见原因以及分析这些问题的一般步骤。1.卡顿常见原因1)人为在UI线程中做轻微耗时操作,导致UI线程卡顿;2) 布局Layout过于复杂,无法在16ms内完成渲染;3)同一时间动画执行的次数过多,导致CPU或GPU负载过重;4) View过度绘制,导致某些像素在同一帧时间内被绘制多次,从而使CPU或GPU负载过重;5) View频繁的触发measure、layout,导致measure、layout累计耗时过多及整个View频繁的重新渲染;6) 内存频繁触发GC过多(

2022-05-08 08:56:11 344

原创 Android架构师成长之路,如何成为一名Android架构师?

[](()项目开发必备底层技术======================================================================Android以Java语言为基础,以虚拟机为核心,经过Daivlk虚拟机再到Art虚拟机演变,所以需要学两大底层:一个是Java语言底层,一个是虚拟机底层Java底层涵盖:Java序列化、泛型与反射、JDK高级动态代理、 Java高级并发原理详解。虚拟机底层涵盖:虚拟机层类加载机制、Android虚拟机原理剖析、dex运行机制,A

2022-05-06 12:25:16 203

原创 Android技能树 — Fragment总体小结

1. 直接在Layout.xml中添加<Button/><?xml version="1.0" encoding="utf-8"?>2. 在代码中动态添加,比如我们添加到一个LinearLayout中:Button button = new Button(mActivity);LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_

2022-05-06 12:20:50 460

原创 Android开源:想送你一款小清新的加载等待 控件

// ->>关注4relate_OuterBlock(mfixedBlocks, isClock_Wise);}// 此步骤结束/**关注2:固定方块 类(内部类)*/private class fixedBlock {// 存储方块的坐标位置参数RectF rectF;// 方块对应序号int index;// 标志位:判断是否需要绘制boolean isShow;// 指向下一个需要移动的位置fixedBlock next;// 外部的方块序号 ≠ 0、1

2022-05-06 12:19:07 583

原创 Android开发,技术实力的本质是什么?

更不用说我们做程序员的,有那么多的知识要学习,就拿Android来说,你真的就只需要学习Android本身的东西吗?各种框架要不要学?Flutter要不要学?Kotlin要不要学?各种底层原理、优化、设计思路……有这么多东西要学习,学得过来吗?通宵达旦地学也学不过来呀。所以,技术实力的本质到底是什么?我认为技术实力的 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 本质是解决问题的能力,或者换个说法,技术源于业务,技术是为业

2022-05-06 12:17:04 89

原创 Android开发必看:一文教你完全理解DataBinding框架(下

Log.i(“MainViewModel”, “commonLog - onClick: 没有参数,或者有参数也行,但是 xml 中也必须给它传对应的值”)}其中双冒号 :: 绑定方法的签名必须和属性要求的对象方法签名一致。这里即 OnClickListener 的 onClick 方法。同样的,如果是 onLongClick 监听,那就要求你的方法有返回 Bool 值了。第三种是表达式的写法,我们下面会说,学过 Java8 的都知道箭头 -> 和双冒号 :: 是 Lambda 表达

2022-05-06 12:14:50 289

原创 Android开发之MVVM模式实践(六)

Interfaceinterface FlyInterface {/**获取文章列表*/@GET(“article/”)suspend fun get_article_list(@Query(“page_size”) size: Int): ApiResponse<CommonListDto>}interface的改造非常简单,仅仅是在函数前加上suspend修饰。ApiResponseabstract class HttpResponse(val code: Int,

2022-05-06 12:13:07 216

原创 Android基础到进阶UI爸爸级 TextView介绍+实例

TextClock:可以将当前日期和/或时间显示为格式化字符串。看看他的儿子都这么牛掰,何况是爸爸,今天咱就看看这个爸爸级组件:TextView。使用TextView1.在xml中创建并设置属性咱们看上图说话。上图的文字显示多种多样,但是也仅包含TextView的部分功能,看看这多种多样的显示也是比较有意思的。下面咱看看代码实践:<?xml version="1.0" encoding="utf-8"?><LinearLayout xml.

2022-05-06 12:10:49 425

原创 Android中使用OpenCV(二)

public static final String OPENCV_VERSION_2_4_4 = “2.4.4”;/**OpenCV Library version 2.4.5.*/public static final String OPENCV_VERSION_2_4_5 = “2.4.5”;/**OpenCV Library version 2.4.6.*/public static final String OPENCV_VERSION_2_4_6 = “2.4.6”;/

2022-05-06 12:08:26 458

原创 android下拉刷新——swipeRefresh的使用

好了,到这一步你就可以看到下拉刷新的雏形了API的使用======设置下拉刷新进度条颜色package com.wust.myswiperefresh;import androidx.appcompat.app.AppCompatActivity;import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;import android.graphics.Color;import android.os.Bundle;imp.

2022-05-06 12:06:01 1037

原创 Android知识点之线程池

pool.execute(t4);pool.execute(t5);newSingleThreadExecutor创建一个使用单个 worker 线程的 Executor,以无界队列方式来运行该线程。(注意,如果因为在关闭前的执行期间出现失败而终止了此单个线程,那么如果需要,一个新线程将代替它执行后续的任务)。可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的。与其他等效的 newFixedThreadPool(1) 不同,可保证无需重新配置此方法所返回的执行程序即可使用其他的线

2022-05-05 14:19:40 252

原创 Android热补丁动态修复实践

==好几个月之前关于Android App热补丁修复火了一把,源于QQ空间团队的一篇文章[安卓App热补丁动态修复技术介绍]((),然后各大厂的开源项目都出来了,本文的实践基于[HotFix]((),也就是QQ空间技术团队那篇文章所应用的技术,笔者会把整个过程的细节和思路在文章中详说,研究这个的出发点也是为了能紧急修复app的bug,而不需要重复发包,不需要用户重新下载app就能把问题解决,个人觉得这个还是蛮有价值的,虽然老板不知道….。项目结构====这里笔者创建一个新的项目”HotFixDem

2022-05-05 14:15:05 261

空空如也

空空如也

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

TA关注的人

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