自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Sunflower 带您玩转 Jetpack

选定植物后,界面便会转入 “植物详情” 页面。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-13ccpdL1-1652154329069)(https://user-gold-cdn.xitu.io/2018/8/28/1657fc9e59228876?imageView2/0/w/1280/h/960/ignore-error/1)]△ 植物介绍在植物详情详情页面中,您可以看到该植物的名称、描述、浇水方法以及照片。您可以点击界面内的悬浮操作按钮,将植物添加到自己的花园

2022-05-10 11:45:48 2648

原创 Android LeakCanary的使用和原理

myProcess = process;break;}}}if (myProcess == null) {CanaryLog.d(“Could not find running process for %d”, myPid);return false;}return myProcess.processName.equals(serviceInfo.processName);}源码分析SDK初始化mRefWatcher = LeakCanary.install(this);这个是S

2022-05-10 11:44:13 430

原创 android MaterialButton的使用

app:iconPadding=“@dimen/dp_4”app:iconSize=“@dimen/dp_12”app:iconTintMode=“multiply”tools:text=“测试数据测试数据”/>1、app:icon=“@drawable/ic_camera” 图标2、app:iconGravity=“textStart” 图标的位置3、app:iconSize=“24dp” 图标的大小4、app:iconPadding=“16dp” 图标与文字的距离5、app:cor

2022-05-10 11:42:41 846

原创 A005-AS项目结构解析

我们先来看1:我们创建Application的时候,要求我们输入项目名称,1就是我们创建的项目,AndroidDevelopCourse是项目名称,在实际开发中,我们要为我们项目取一个能明确表达产品的名称,一般使用英文来描述,比如我们的课程是“Android开发课程”。1展开之后是我们完整的项目文档结构。2: 我们的Android 模块,在AS当中,分为了Project(工作空间),Module(模块)两种概念,我们创建项目的时候会默认创建一个模块,这里的app就是我们的一个module,一个Andro

2022-05-10 11:40:53 340

原创 24岁程序员该怎样从现状走出来?(Android高级架构师之路

进了体制,国企嫌太安逸,没激情,一眼能看到二十年后的人生。进了私企嫌压力大,996太累,没休闲时间。辞职了想做点小生意发现自己根本不是那料,去做一些底层工作嫌不体面,工资低,遂家里蹲。我知道你想要什么,想要有个几千万上亿,想要有名,有颜,有健硕的身体,有别墅带游泳池,有豪车,有自家公司,平时旅旅游,有个清纯漂亮的女朋友,一起有些放飞自我的激情生活,蹦极,爬山,去法国,去美国,游遍世界,写书,人生充实有意义,人人见了都羡慕,无敌是多么寂寞!呵呵哒,你有吗?你能有吗?底层人不去改变空想就能有吗?自己怎么没有

2022-05-10 11:39:11 226

原创 2021年最新字节跳动Android面试真题解析

这里概括一下给同伴们的几个小建议:1、把自身的技能练扎实,2、找跟你过往经历匹配度非常高的岗位,3、面试的时候充分展现你个人的软实力硬实力。关于内推的(同公司应该是hr伙伴的良心建议):1、内推如果长时间没动静可能是简历没过。2、投递一些部门没过,可以再投别的部门,甚至有可能会有别的部门看到简历,然后捞起来。3、面试会有记录,面试前充分准备最好不要留下不好的面评。[](()最后我在面试前期做了一些面试准备,全网收集了一下字节跳动今年的面试真题(含解析),希望能帮助到大家学习提升,在面试中

2022-05-10 11:36:53 909

原创 2020年终总结

总结[](()前言2020年即将就要结束了,这是一个对很多人都是非常特殊且难忘的一年,因为爆发了新冠病毒疫情,并且席卷了全世界。这一场疫情打乱了很多人节奏,对很多人的工作和生活都产生了不同程度的影响,有苦有泪,冷暖自知。这一年对我来说也是非常特殊的一年,如果要我用一个关键字总结这一年那就是一个字——突破。不管是职业方面还有认知方面都有了一些突破,而这些突破离不开个人努力的因素,正所谓越努力越幸运就是这个道理。2020年全身心扑在工作和个人成长方面,一直都处于忙碌的状态,基本上没有了多余的社交活.

2022-05-10 11:35:07 107

原创 2020-Android-大厂面试(五)插件化

}} catch (Exception e) {e.printStackTrace();}替换了主工程context中LoadedApk的mResource对象将新的Resource添加到主工程ActivityThread的mResourceManager中,并且根据Android版本做了不同处理//第三步:关联resource和ActivityActivity activity = mBase.newActivity(plugin.getClassLoader(), targetClassN

2022-05-10 11:30:41 433

原创 2020 年移动开发趋势

本文翻译自 AMIT MANCHANDA 的 12 Mobile App Development Trends to Watch Out for in 2020,可点击原文参考阅读。文章仅属个人观点,如有不同见解,欢迎留言讨论移动手机正在以惊人的速度从根本上改变商业模型,运营模型和市场。到 2021 年,移动应用程序市场收入预计将达到 6930 亿美元。但是,按照 Gartner 先前的预测,10,000 个移动应用中有 9,999 个会失败。当今不断发展和充满活力的市场中,仅仅拥有移动设备是远.

2022-05-10 11:28:25 148

原创 1个人,100天业余时间,用Flutter开发完一个商业APP

爱奇艺直播助手APP的部分页面,也已经是用Flutter实现的了[](htt 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 ps://blog.csdn.net/Coo123_/article/details/104620447)Flutter会不会有很多功能不能实现?目前,Flutter插件仓库里已经有4200多个插件了,其中包含国内常用的各种推送、社会分享、微信QQ支付宝登录、各种授权登陆、微信支付宝支付、淘系电商.

2022-05-10 11:26:12 755

原创 Android NDK开发入门

typedef int64_t jlong; /* signed 64 bits */typedef float jfloat; /* 32-bit IEEE 754 */typedef double jdouble; /* 64-bit IEEE 754 */[](()3.2 引用数据类型如果使用C++语言编写,则所有引用派生自jobject根类,如下所示。class _jobject {};class _jclass : public _jobject {};cla

2022-05-09 12:02:50 640

原创 Android Navigation + Fragment 制作APP主页面导航(步骤

<fragmentandroid:id=“@+id/afragment”android:name=“com.llw.navigation.fragment.AFragment”android:label=“afragment”tools:layout=“@layout/fragment_a” />上面的也很简单,id表示它在导航图的标识,name指明这个Fragment的路径,包名+类名。label就是标签而已。layout就是绑定这个Fragment对应的布局。这里你肯定回想,刚.

2022-05-09 12:00:46 3008

原创 Android MTK 编译命令

编译一般分为两个版本 eng(工程版本) 一般用来调试和测试带Root权限,这个版本编译时直接 ./mk   xx(命令)另一版本 user(用户版本) 一般是发版软件./mk-o=TARGET_BUILD_VARIANT=user xx(命令)如果两个混合编译了如果是user版本时编译了eng版本的命令工程就GG了 只能 new 全部编译 驱动 内核 应用 耗时至少一个半小时Eng: ./mk  project_name  newUser:./mk&nbs

2022-05-09 11:59:09 811

原创 android listview添加headview

.show();}});2、添加头部view:必须放在setAdapter前面不然会报错lv.addHeaderView(headerView);3、listview填充假数据List<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();HashMap<String, String> map = new HashMap<String

2022-05-09 11:57:38 640

原创 Android - 一种新奇的冷启动速度优化思路(Fragment极度懒加载 + Layout子线程预加载)

@Overridepublic void onPageScrollStateChanged(int state) {if (!hasReplacedAllEmptyFragments && mCurrentSelectedTab != mDefaultTab && state == 0) {//当满足: 1. 没有全部替换完 2. 当前tab不是初始化的默认tab(默认tab不会用空的Fragment去替换) 3. 滑动结束了,即state = 0replaceEmp

2022-05-09 11:55:49 583

原创 Activity管理(三)

onRestart()->onStart()->onResume()b) 完成了第一步对activity生命周期的响应之后,在第二步这里主要是处理窗口的添加动作:把DecorView添加到WindowManager中。完成第二步操作之后,activity的内容便显示到了屏幕上。这个窗口的添加动作属于窗口管理中的一个步骤,具体可参考《Android窗口管理剖析》一文。以下是部分主要接口到生命周期的响应的内部调用流程图二、ActivityManagerService及其内部调度流程\1.

2022-05-09 11:54:07 370

原创 2579页阿里P8Android学习笔记在互联网上火了,完整版开放下载

14.深入剖析 Android中的 ArrayMap[](()360 °全方面性能调优1.设计思想与代码质量优化2.启动速度与执行效率优化3.布局检测与优化4.内存优化5.耗电优化6.网络传输与数据存储优化7.APK大小优化8.开发效率优化9.项目实战[](()Java 相关1.Java 四种线程池的用法分析2.Java 有几种文件拷贝方式?哪一种最高效?3.使用 FileChannel(文件通道)来实现文件快速复制4.JVM 类加载机制详解 JVM 类加载过程5

2022-05-09 11:51:50 157

原创 2020请收好这一份全面-&-详细的Android学习指南

Android进阶与时俱进、热门技术编程语言计算机基础具体介绍如下:1.1 Android基础 & 常用针对Android基础&常用知识,按照优先级最主要的知识点主要包括:四大组件、布局使用、多线程 & 动画具体介绍如下:1.2 Android进阶针对Android进阶知识,按照优先级最主要的知识点主要包括:自定义View、性能优化;具体介绍如下:1.3 与时俱进、热门技术除了基础日常使用的Android知识,我们还需时刻关注行业动态,与时俱.

2022-05-09 11:48:06 528

原创 2020Android 开发年度总结:“这一年里我到底做了些啥

[](()前言眼看2020年还有两天就要结束了,即将迎来2021新的一年。感觉今年比起往年要过稍稍的快一些,因为2020的开年工作时间比以往是晚了许多,基本都是在3月份左右开始投入工作。而以往基本都是大年初八左右,人们都开始投入工作了。小编把自己这一年的一些事件进行了总结,请看下方本人是一名Android 开发者,毕业3年,年龄到了人们常说的中年危机的年纪。30岁之前就常常在各大社交博客平台上看到一些程序员中年危机和Android 不行了等相关帖子,刚开始我还是有点慌,在想当初选择走开发这条道路是

2022-05-09 11:43:23 569

原创 Android Camera1相机预览

切换相机/void switchCamera(int facing);/*设置Facing/void setCameraFacing(int facing);/*获取Facing/int getCameraFacing();/*设置预览尺寸/void setPreviewSize(Size cameraSize);/*获取预览尺寸/Size getPreviewSize();/*设置显示旋转角度/void setDisplayOrientation(int di.

2022-05-08 08:29:20 952

原创 Android Button 属性介绍与使用

| 属性 | 含义 || — | — || drawable | 正常按钮的一个背景颜色或图片,可以配置多种状态下的显示 || state_focused | 是否获得焦点 || state_window_focused | 是否获得窗口焦点 || state_enabled | 控件是否可用 || state_checkable | 控件可否被勾选 || state_checked | 控件是否被勾选 || state_selected | 控件是否被选择,针对有滚轮的情况 || sta

2022-05-08 08:27:25 1580

原创 Android Binder组合ContentProvider跨进程调用

MatrixCursor 的用法如下:首先创建一个字符数组,字符数组的值对应着表的字段:val COLUMN_NAME = arrayOf(“_id”, “name”, “age”)利用MatrixCursor的构造方法,构造一个MatrixCursor,传入的参数即是步骤1中创建的字段数组:matrixCursor = MatrixCursor(COLUMN_NAME)通过matrixCursor的addRow方法添加一行值,相当于向数据库中插入一条记录:matrixCursor?

2022-05-08 08:25:21 301

原创 Android App开发架构之:MVC

[](()优点===========================================================上手快。新建工程的时候,Android已经分配了XML和Activity,这样直接对应View层和Controller层,我们只需要增加model模块处理好数据即可。由于Controller层承担了较多的处理j界面展示和数据处理的功能,相对来说简化业务模块和功能模块的划分。[](()缺点===================================

2022-05-08 08:23:47 565

原创 Android 10(Android Q) 适配心得

NotificationManager notifyManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);notifyManager.notify(notifyId, builder.build());注意在Target SDk为29及以上时,需要在AndroidManifest上增加USE_FULL_SCREEN_INTENT申明//AndroidManifest中测试下来,

2022-05-08 08:22:16 352

原创 Andorid&Kotlin编译速度原理剖析(上)

@get:Optionalabstract val versionName: Property<String?>//版本号@get:Input@get:Optionalabstractabstract val versionCode: Property<Int?>//父类NonIncrementalTask的唯一抽象方法,也就是BuildConfig的主要逻辑处理方法override fun doTaskAction() {//获取类里面的属性包括一些自定义的属性v

2022-05-08 08:20:28 246

原创 3-5年以上的Android原生开发如何深入进阶?高级工程师必须要掌握哪些?

在工作初期,工作主要是按照业务需求实现App页面的功能,按照设计师的设计稿实现页面的效果。在实现的过程中,总是会被提如下的需求:这个字能不能大点或者醒目点儿?颜感觉颜色和设计稿有差别,能不能再调调?怎么老是崩溃啊,行不行啊?…所以,工作过一年后你会发现,自己的工作重点就是**将找各种各样的组件、框架,拖拖拽拽,改改样式。**在极端情况下出现了问题后(比如部分机型上崩溃,加载图片慢),也不知道该如何解决!都不好意思说自己是搞技术的。造成这种局面的有两种原因:所开发的App功能要求并不复杂

2022-05-08 08:18:46 224

原创 2020最新统计,年薪50万+的Android开发者所必备的知识体系架构,你都会吗?

JVMJavaIO注解序列化三:Android框架体系架构(高级UI+FrameWork源码)这块知识是现今使用者最多的,我们称之为Android2013~2016年的技术,但是,即使是这样的技术,Android开发者也往往因为网上Copy代码习惯了而导致对这块经常“使用”的代码熟悉而又陌生。职业生涯规划面向Android中的一切实体(高级UI+FrameWork源码)实体间的通信方案实体中数据存储专题四:360°Androidapp全方位性能..

2022-05-08 08:12:40 108

原创 2020最新BAT-Android高端技术面试145题详解

1.排序算法有哪些?2.最快的排序算法是哪个?3.手写一个冒泡排序4.手写快速排序代码5.快速排序的过程、时间复杂度、空间复杂度6.手写堆排序7.堆排序过程、时间复杂度及空间复杂度8.写出你所知道的排序算法及时空复杂度,稳定性9.二叉树给出根节点和目标节点,找出从根节点到目标节点的路径10给阿里2万多名员工按年龄排序应该选择哪个算法?11.GC算法(各种算法的优缺点以及应用场景)12.蚁群算法与蒙特卡洛算法13.子串包含问题(KMP 算法)写代码实现14一个无序,不重复数组,输出N

2022-05-08 08:10:17 222

原创 Android MTK 设置默认启动 Launcher

//Slog.d(TAG,“set default launcher”);final PackageManager mPm = mContext.getPackageManager();ArrayList homeActivities = new ArrayList();ComponentName currentDefaultHome = mPm.getHomeActivities(homeActivities);ComponentName[]mHomeComponentSet = new Comp

2022-05-07 11:17:23 672

原创 Android Framework学习笔记(五)应用程序启动过程

注释1调用了doPendingActivityLaunchesLocked方法。ActivityStarter#doPendingActivityLaunchesLocked()final void doPendingActivityLaunchesLocked(boolean doResume) {while (!mPendingActivityLaunches.isEmpty()) {final PendingActivityLaunch pal = mPendingActivityLaunch

2022-05-07 11:15:05 304

原创 Android BLE基础框架全新改版

}@Overridepublic void onScanFinish(BluetoothLeDeviceStore bluetoothLeDeviceStore) {}@Overridepublic void onScanTimeout() {}}).setUuid(uuid));扫描指定设备 MAC 或名称集合的设备ViseBle.getInstance().startScan(new ListFilterScanCallback(new IScanCallback() {@Ove

2022-05-07 11:13:26 333

原创 Android App安装包大小优化

android:layout_marginTop=“100dp”android:layout_gravity=“center_horizontal”android:layout_centerInParent=“true”android:src=“@drawable/ic_icon_name”android:layout_width=“wrap_content”android:layout_height=“wrap_content”/>或者<ImageViewandroid:la

2022-05-07 11:11:52 476

原创 Android AIDL实现进程间通讯IPC

return binder;}private final DataService.Stub binder = new DataService.Stub() {@Overridepublic int getData(String type) throws RemoteException {return 5;}@Overridepublic String getTime() throws RemoteException {return “2016-01-23”;}};}③Android

2022-05-07 11:10:02 125

原创 Andoird中LiveEventBus的使用——用LiveEventBus替代RxBus

LiveEventBus.get(“key”).postDelay(“value”,3000);2、接受消息,注册一个订阅在需要接受消息的地方LiveEventBus.get(“key”,String.class).observe(this, new Observer() {@Overridepublic void onChanged(@Nullable String s) {Log.i(TAG,s);}});当发送key这条消息的时候,就会实时接收到消息 ,前提页面没有销毁,因为具有生命

2022-05-07 11:07:40 895

原创 Activity-Hook填坑过程中温故而知新(2)

this, mMainThread.getApplicationThread(), mToken, child,intent, requestCode, options);if (ar != null) {mMainThread.sendActivityResult(mToken, child.mEmbeddedID, requestCode,ar.getResultCode(), ar.getResultData());}来解析这一段逻辑:两句代码,一个是 mInstrumentatio

2022-05-07 11:05:29 156

原创 35岁被裁,闭关67天总结经验提升实力,完虐面试官怒斩腾讯、华为

8.线程之间的协作9.java内存模型由于篇幅限制,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!有需要的程序猿(媛)可以帮忙转发+关注私信(架构资料)获取哦[](()Android核心知识1.Activity2.Fragment3.数据存储4.View4.Parcelable 接口5.IPC6.屏幕适配7.消息机制8.线程异步9.Webview![](https://imgconvert.csdnimg.cn/aHR0cHM6

2022-05-07 11:03:33 108

原创 Android 利用ViewPager+GridView,仿美团首页导航栏分类布局界面

再看我们山寨的效果:最初我是使用VIewPager+RecyclerVIew实现的,发现在左右滑动的时候,有问题,经常滑动不了,应该是RecyclerVIew消费了Touch事件,所以弃用这个方法了(效果图是下面的效果,为了区别VIew页面,每个Page背景色不同),后来我尝试使用ViewPager+GridView实现的,看起来一切正常,就没有再解决VIewPager+RecyclerVIew滑动冲突的问题,不过我初步分析可以用过重写ViewPager的onInterceptTouchEvent方法

2022-05-06 11:20:41 826

原创 Android WindowManager窗口类型

WindowManager的LayoutParams中窗口类型与定义:frameworks\base\core\java\android\view\WindowManager.java/**Start of window types that represent normal application windows.ZMS:首个普通应用窗口*/public static final int FIRST_APPLICATION_WINDOW = 1;/**Window t

2022-05-06 11:18:43 423

原创 Android Vsync原理简析

从图中可以看到,有了VSYNC,cpu总是在指定的地方开始。有人会问: 说白了,真正解决问题的是VSYNC,而不是双缓冲,那不要双缓冲只要VSYNC不是也可以吗?好,我们假设只有VSYNC,现在假设屏幕正在渲染数据,而cpu在等VSYNC信号,屏幕将数据渲染完毕后,发送VSYNC信号,cpu收到信号后,就去计算数据,计算完后才会写入帧缓冲,那么,在cpu计算数据这段时间内,屏幕干什么呢?嗯,它接着刷新帧缓冲的数据,反正cpu还没有将新数据计算完毕刷入帧缓冲,所以还是上一帧的数据,这样就会卡顿,说白了,.

2022-05-06 11:16:32 1581

原创 Android UI--ViewPager扩展Tab标签指示

android:layout_height=“wrap_content”android:layout_weight=“1.0”android:gravity=“center”android:text=“特性4”android:textSize=“18sp”/><ImageViewandroid:id=“@+id/cursor”android:layout_width=“wrap_content”android:layout_height=“wrap_content”andro

2022-05-06 11:14:51 334

空空如也

空空如也

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

TA关注的人

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