自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Material Design尝鲜,2021Android笔试题

ActionBarControlScrollViewActivity // 4ActionBarControlWebViewActivity // 5FillGap2ListViewActivity // 6FillGap2RecyclerViewActivity // 7FillGap2ScrollViewActivity // 8FillGap3ListViewActivity // 9FillGap3RecyclerViewActivity // 10Fi..

2022-01-03 10:46:34 815

原创 Android Glide 3,338页网易Android面试真题解析火爆全网

Log.w(TAG, “Cannot reset the input stream”, e);}}}…}紧接着就用到了 mark / reset 功能 , 读取头部信息里面存储的方向信息关于 orientation 值代表的详细含义参考这篇文章: EXIF 方向参数 Orientation// DownSampler.decodefinal int[] inDimens = getDimensions(invalidatingStream, bufferedStream, option

2022-01-03 10:40:54 1434

原创 Android Camera开发实践(1)预览,vue总结来了

1.2打开Camera硬件配置相机、存储权限 设置SurfaceCallback,回调中,启动预览。注意,surfaceChanged至少回调一次SurfaceView cameraPreview = findViewById(R.id.camera_preview);cameraPreview.getHolder().addCallback(new PreviewSurfaceCallback());private class PreviewSurfaceCallback implement

2022-01-03 10:39:29 1633

原创 Android Binder原理解析,android应用开发实训总结

public void onServiceDisconnected(ComponentName name) {iBookManager=null;}};我们要调用 IBookManager.Stub.asInterface(service),这时候又会来到//将一个IBinder对象转换成一个com.love.candy.aidl,这里就是我们平常用到的那个方法了public static com.love.candy.aidl.IBookManager asInterface(android.

2022-01-03 10:38:04 1240

原创 Android Architecture Components ——LiveData使用,跳槽面试大厂被拒

@Overridepublic void onAttachedToWindow() {super.onAttachedToWindow();viewModel = ViewModelProviders.of(this).get(LiveDataViewModel.class);MutableLiveData liveData = viewModel.getLiveData();liveData.observe(this, new Observer() {@Overridepublic void

2022-01-03 10:36:40 140

原创 Android AES的ECB和CTR加解密代码实现,不看绝对血亏

ECB是在对称加密的基础上,将原文分成若干个段,对每个段进行加密,每个段的输出结果 合起来就是最后的密文,最后的密文一般用 Base64 输出在Android中的实现就是先导入:implementation ‘org.apache.shiro:shiro-core:1.2.2’这个包最新的Android导入会出现 一样的类Load不了,我懒得解决,就换成低版本的包了。这边CTR用的是PKS5Padding填充,也就是你 原文的bytes不是8或者16的倍数,会自动帮你用pks5填充而ECB是N.

2022-01-03 10:35:15 659

原创 Android ActivityManager常用方法,kotlin协程的理解

PERMISSION_REQUIRED:NULLRESULT:processName=com.demo.activitymanager pid=4317 uid=10311memorySize=1696kb@param context@return*/private String getRunningAppProcessInfo(Context context) {String result = “\n\n getRunningAppProcessInfo:”;A..

2022-01-03 10:33:50 296

原创 Android 组件通信中有哪些不为人知的细节?,kotlin编程通俗演义pdf

Activity.startActivity–>Activity.startActivityForResult–>FragmentActivity.startActivityForResult–>Instrumentation.execStartActivity–>ActivityTaskManager.getService().startActivity(xx)而ActivityTaskManager.getService() 前面已经分析过了,就是获取了AMS对外的接口:

2021-12-31 11:42:09 147

原创 Android 组件化开源 app -开眼短视频(OpenEyes),我是如何收割多家大厂offer的

Mvvm 架构设计 关于各种 mvx 的区别,我就不一一介绍了,上 Google 搜一下就好,关于项目中使用的 mvvm 设计封装,请移步 这里 ;代码是最好的老师,直接看源码吧。Android X 这个也没啥好说的,就是 android Support 库的升级迁移版而已,现在新项目肯定都是直接 androidX 了,对 Android X 不熟悉的小伙伴,请移步 官方介绍 ;jetpack 这个也没啥好说的,jetpack 就是 Google 推出..

2021-12-31 11:41:06 221

原创 Android 简单的视频录制,Android高分面试指南

public CameraHepler{/**打开默认的摄像头/public static Camera getDefaultCameraInstance(){return Camera.open();}/*获取前置摄像头*/public static Camera getDefaultFrontFacingCameraInstance() {return getDefaultCamera(Camera.Info.CAMERA_FACING_FRONT);}/**获取后置摄像头

2021-12-31 11:39:47 135

原创 Android 笔记:AndroidTrain , Lint , build,kotlin循环添加对象

加号 (+) 表示这是一个新的资源名称,必须创建该名称并将其添加到我们的资源(在 R.java 文件中)内。Android 框架还提供了许多其他 ID 资源。引用 Android 资源 ID 时,不需要加号,但必须添加 android 软件包命名空间,如下所示:android:id="@android:id/empty"添加 android 软件包命名空间之后,现在,我们将从 android.R 资源类而非本地资源类引用 ID。ID 不需要在整个结构树中具有唯一性,但在您要搜索的结构树部分应具有唯一性

2021-12-31 11:38:51 158

原创 Android 渐变圆环,圆形进度条效果实现,android系统开发工程师

public CircleProgressBar(Context context, AttributeSet attrs) {super(context, attrs);init(attrs, 0);}public CircleProgressBar(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);init(attrs, defStyle);}private void in

2021-12-31 11:37:44 591

原创 Android 横向ListView实现,Kafka是如何实现高性能的

private boolean mDataChanged = false;public HorizontalListView(Context context, AttributeSet attrs) {super(context, attrs);initView();}private synchronized void initView() {mLeftViewIndex = -1;mRightViewIndex = 0;mDisplayOffset = 0;mCurrentX = 0;

2021-12-31 11:36:47 1117

原创 Android 架构师研发技术进阶之路:不同阶段需要掌握的那些技术及软技能

2. 了解前端研发工具和思想,知道vue react等研发框架。3. 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。总结:希望你能对照上面的知识图谱,彼此印证查缺补漏,不断在技术道路上前行。有什么疑问和建议欢迎一起探讨。Android架构师之路在上面,我们探讨了成为系统架构师的硬技术技术指标。但成为一名合格的架构师,不仅仅对于技术精通即可,还需要有更多的软实力,讨论一些架构以内代码之外的东西。在说软实力之前,我们先探讨下架构师的职责。个人理解团队中架构师

2021-12-31 11:35:23 328

原创 Android 本地网络小说爬虫,基于 jsoup 及 xpath,都是精髓

支持书源/**所有书源*/public static final SparseArray SOURCES = new SparseArray() {{put(SourceID.LIEWEN, new Source(SourceID.LIEWEN, “猎文网”, “https://www.liewen.cc/search.php?keyword=%s”));put(SourceID.CHINESE81, new Source(SourceID.CHINESE81, “八一中文网”, “ht

2021-12-31 11:34:24 1329

原创 Android 显示Gif 动态图片,kotlin随机数

public class Main extends ActionBarActivity {private GifImageView gifImageView;private Button btnPause;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);gifImageView = (GifI

2021-12-31 11:33:24 348

原创 Android 插件化细讲知识梳理—大厂面试必问,高级架构师核心知识

3.动态更新。无需重新下载与安装app,可以单独下载某个插件apk,直接加载,从动态更新、包体积和流量上感觉是个不错的选择。4.模块定制。需要什么模块下载什么模块,无需让app变得庞大,所需所得。插件化解决的问题1.APP的功能模块越来越多,体积越来越大2.模块之间的耦合度高,协同开发沟通成本越来越大3.方法数目可能超过65535,APP占用的内存过大4.应用之间的互相调用如何系统高效学习插件化准备知识1.反射、动态代理2.Android中的几个相关的ClassLoader,注意Pat

2021-12-31 11:32:13 117

原创 Android组件化——SXRecyclerView,android开发艺术探索笔记

public boolean onPrepareActionMode(ActionMode mode, Menu menu) {return true;}@Overridepublic boolean onActionItemClicked(ActionMode mode, MenuItem item) {return true;}@Overridepublic void onDestroyActionMode(ActionMode mode) {}});这里的多选模式是与Action

2021-12-30 13:11:40 392

原创 Android系统联系人全特效实现(上),分组导航和挤压动画

在这个布局文件中,首先是放入了一个和前面完成一样的分组布局,因为不仅界面头部需要展示分组,在每个分组内的第一个无素之前都需要展示分组布局。然后是加入一个简单的 LinearLayout,里面包含了一个 ImageView 用于显示联系人头像,还包含一个 TextView 用于显示联系人姓名。这样我们的布局文件就全部写完了,下面开始来真正地实现功能。先从简单的开始,新建一个 Contact 实体类:public class Contact {/**联系人姓名*/private String n

2021-12-30 13:10:45 112

原创 Android消息机制 2 - Java层源码分析,移动应用开发案例教程

发送消息的调用链:可以看到即便我们通过各种的方式,都用调用MessageQueue.enqueueMessage方法。[-> MessageQueue.enqueueMessage]boolean enqueueMessage(Message msg, long when) {//表明了App端不能通过设置target==null来post同步屏障if (msg.target == null) {throw new IllegalArgumentException(“Message mu

2021-12-30 13:05:50 480

原创 Android最傻瓜式的AOP框架,android应用案例开发大全第4版

@BeforeCall方法调用前织入代码,如@Aspectpublic class FragmentInjector {private static final String TAG = “FragmentInjector”;@BeforeCall(clazz = FragmentTransaction.class, method = “replace”)public static void beforeCallFragmentReplace(FragmentTransaction transa

2021-12-30 13:04:54 113

原创 Android无用代码、资源扫描的其他思路,BAT等大厂必问技术面试题

三、实践编译后基于usage.txt 和 resources.txt 的结果,可以通过task来过滤,排序处理。可参考以下:task codeScan(dependsOn: assembleRelease) {…doLast {if (project.getBuildDir().exists()) {String basePath = project.getBuildDir().path + “/outputs/mapping/release/”//无用ClassFile uoUseCla

2021-12-30 13:03:59 66

原创 android数据库加密之—sqlcipher,作为Android程序员都应掌握

实现增删改查方法package com.ddv.www.sqlcipher.dbhelper;import android.content.ContentValues;import android.content.Context;import android.util.Log;import net.sqlcipher.Cursor;import net.sqlcipher.SQLException;import net.sqlcipher.database.SQLiteDatabase;.

2021-12-30 13:03:04 448

原创 Android字节跳动一面,被面试官吊打,android简单小游戏开发

成功考上985,开始按原计划进行,学习,充电,两年时间里搞定了基础、实习、项目经历,顺便混了一些奖项,然后开始硬钢校园招聘,由于准备充分,并且时机把握得好,提前批就拿到了BAT的offer。正式校园招聘也稍微参加了一下,又收割了7、8个offer,至此秋招顺利结束,从小白到offer收割机,我用了三年左右完成这个目标,因此,对校园招聘还是比较有感情的,这些东西我也都非常熟悉,于是想把自己的理解分享给你们,相信也会对你们有用。校园招聘和社会招聘的区别===========================

2021-12-29 14:27:15 293

原创 Android大势已去?35岁程序员只能等优化,花了19998买的学习教程

虽然目前移动端的招聘量确实变少了,但中高端的职位还是很多的,这说明行业只是变得成熟规范起来了。竞争越激烈,产品质量与留存就变得更加重要,我们进入了技术赋能业务的时代。对于我们来说!技术不是全部,想明白 想通了 就好了,信息产业这行或者相关行业 大有可为 不要把自己绑死在技术上,程序员所谓的 35 岁焦虑症不是空穴来风, 之前家里托人找关系说把我弄回长沙搞代码,因为中兴 HR 发错了东西,我收到的文件里面 有他们的内部招聘要求文档 ,他们的要求明确是初级 Java 开发人员不能超过 30 岁,其实做应用

2021-12-29 14:26:12 335

原创 Android动画之补间动画,安卓面试题

《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享android:layout_width=“0dp”android:layout_height=“40dp”android:layout_weight=“1”android:text=“旋转动画” /><Buttonandroid:id="@+id/btn_scale"android:layout_widt.

2021-12-29 14:24:52 56

原创 Android动画之属性动画,阿里巴巴开发规范手册

android:layout_height=“wrap_content”android:layout_centerInParent=“true”android:src="@mipmap/ic_launcher" /><Buttonandroid:layout_width=“match_parent”android:layout_height=“wrap_content”android:layout_alignParentBottom=“true”android:onClick=“g

2021-12-29 14:23:56 62

原创 Android入门项目(六,进阶学习

二,功能清单打开和关闭wifi扫描附近的wifi,并展示在ListView上ListView下拉刷新广播动态获取wifi的状态通过输入密码连接到wifi直接连接配置过的wifi断开指定连接开启和关闭热点三,认识相关类和概念三个关键类:WifiManager(wifi统一管理,进行各种wifi操作)WifiInfo(描述当前连接的wifi热点信息)WiFiConfiguration(wifi网络配置信息)ScanResul.

2021-12-29 14:22:49 271

原创 Android之属性动画,flutter通知栏提醒

1、新建一个模拟太阳的drawable资源(sun.xml):<?xml version="1.0" encoding="utf-8"?><shape xmlns:android=“http://schemas.android.com/apk/res/android”android:shape=“oval”>2、建立布局文件构建整个场景(fragment_sunset.xml):<?xml version="1.0" encoding="utf-8"?>.

2021-12-29 14:21:51 257

原创 Android之Service复习深入,vsandroid开发

}public void showNumber(){new Thread(new Runnable() {int i=1;@Overridepublic void run() {while(true){try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(i++);}}}).start();}}HelloServiceActivit

2021-12-29 14:20:27 81

原创 Android主流三方库源码分析:Glide,理解透彻

} else if (context instanceof ContextWrapper) {return get(((ContextWrapper) context).getBaseContext());}}// 否则直接将请求与ApplicationLifecycle关联return getApplicationManager(context);}复制代码这里总结一下,对于当前传入的context是application或当前线程是子线程时,请求的生命周期和ApplicationLife

2021-12-29 14:19:28 439

原创 android中的深度学习—,kotlin现状

缺点==1.没有组件化2.没有混淆3.有些地方抽象不够深度学习和神经网络的基本概念==============什么是深度学习=======1.AI–》机器学习–》深度学习,前面三个概念是递进的,简单来说深度学习是机器学习的一种,深度学习就是利用机器来学习很多数据,而机器学习又是实现AI的一种方式。2.在深度学习中有两个重要的东西:数据和神经网络。在深度学习中有两个重要的过程:训练和测试 1.数据和网络: 1.数据:我们想象一个简单的图片分类场景,我们有10000.

2021-12-29 14:18:27 228

原创 Android中SQLite使用,android手机开发

} finally {db.endTransaction();    //结束事务}}/*** update person’s age* @param person*/public void updateAge(Person person) {ContentValues cv =&n..

2021-12-29 14:17:16 187

原创 Android单元测试学习总结,androidflash插件

@RunWith(MockitoJUnitRunner.class)public class ExampleUnitTest {@MockSimpleClass simple;@Testpublic void testMock() {assertNotNull(simple);}}MockitoRule方式mock一个对象:public class ExampleUnitTest {@MockSimpleClass simple;@Rule //<–使用@Rulepubli

2021-12-28 12:56:38 176

原创 Android开发插件化来龙去脉(附全套学习视频),从入门到精通系列Android高级工程师路线介绍

Step2. 使用占坑Activity绕过AMS验证。Activity的启动,实际会调用Instrumentation类的execStartActvity方法,所以可以对其进行hook,将启动插件Activity的Intent替换成宿主预注册的插桩Activity,从而绕过ASM的验证。Instrumentation代理类:public class InstrumentationProxy extends Instrumentation {private Instrumentation mInstr

2021-12-27 12:40:31 92

原创 Android开发插件化来龙去脉(附全套学习视频)(1),app架构图

// Step3. 通过反射获取到pluginClassLoader中的pathList字段Object pluginDexPathList = ReflectUtil.getField(BaseDexClassLoader.class, pluginClassLoader, FIELD_PATH_LIST);// Step4. 通过反射获取到DexPathList的dexElements字段Object pluginElements = ReflectUtil.getField(Class.forN

2021-12-27 12:39:11 421

原创 Android应用开发性能优化完全分析,移动应用开发课程报告

如下是我工作中一个项目的一次经历(我将代码回退特意抓取的),出现这个问题的场景是一次压力测试导致整个系统卡顿,瞬间杀掉应用就OK了,究其原因最终查到是一个API的调运位置写错了方式,导致一直被狂调,当普通使用时不会有问题,压力测试必现卡顿。具体内存参考图如下:与此抖动图对应的LogCat抓取如下://截取其中比较密集一段LogCat,与上图Memory检测到的抖动图对应,其中xxx为应用包名…10-06 00:59:45.619 xxx I/art: Explicit concurrent mar

2021-12-27 12:38:15 566

原创 Android布局优化:include-、merge,androidstudio开发实战2

下面我们以大部分项目中都有的头部导航栏为例,说明一下include的使用,比如我们项目自己统一头部导航栏,抽取布局如下:titlebar.xml:<?xml version="1.0" encoding="utf-8"?>很简单,就是左右各一个按钮,中间是一个提示文字。使用也比较简单,如下:activity_main.xml:<Button《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DS

2021-12-27 12:37:08 515

原创 Android工程师面试准备知识点,2个月面试腾讯、B站、网易等11家公司的面经总结

layout_x:x坐标。以左上角为顶点。layout_y:y坐标。以做上角为顶点。这个布局被摒弃了,不够灵活相对布局-RelativeLayoutlayout_centerInParent – 将当前元素放置到其容器内的水平方向和垂直方向的中央位置(类似的属性有:layout_centerHorizontal,layout_alignParentLeft等)layout_marginLeft – 设置当前元素相对于其容器的左侧边缘的距离layout_below – 放置当前元素到指定的元素的下

2021-12-27 12:36:11 116

原创 Android工程师面试准备知识点(1),android组件化通信

Document document  = builder.parse(xmlFile);4.      获取根元素Element root = document.getDocumentElement();5.      获取根元素下的子节点NodeList childNodes =root.getChildNodes();SAX解析:不像DOM,SAX是事件驱

2021-12-27 12:34:47 114

空空如也

空空如也

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

TA关注的人

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