自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android开发:深入源码剖析图片加载过程,面试官再也不能为难我了

所以,图片资源加载主要分为两步,具体如下图:步骤1:匹配资源 ID=======================================================================作用从资源 id(一个 int 值)定位到具体某一个文件夹下的资源,即**「获得 InputStream和TypedValue(即带有文件夹对应的 densityDpi)」**。源码解析// 步骤说明public static Bitmap de

2021-12-24 14:08:25 468

原创 Android开发的前景到底怎么样2016?,kotlinui封装

众所周知,Android 开发是基于 Java 编程语言的,而 Java 作为老牌成熟的编程语言,虽然经常被人诟病,但是毫无疑问,Java是目前市场上最成熟、应用最广泛的编程语言,很多成熟的业务系统 Java 都是第一选择,每月的 TIOBE 编程语言排行榜Java一直稳坐榜首位置。所以从编程语言这个点来说,学习 Android 开发你至少掌握了Java编程语言,而目前来看不管是语言的使用范围还是市场需求来说,Java 都看不到被淘汰的影子。2市场需求这个是很多人关心的,说最近感觉 Android 开发

2021-12-24 14:04:07 409

原创 Android开发热门前沿知识,这几点经常被忽略,你敢说你都知道

M(Model)层:实体模型,处理业务逻辑。如:数据库操作,网络操作,I/O操作,复杂操作和耗时任务等。V(View)层:负责View的绘制以及与用户交互。在Android开发中,它一般对应着xml布局文件和Activity/Fragment。P(Presenter)层:负责完成Model层和View层间的数据交互和业务逻辑。(2) 实例(3) MVC和MVP的区别MVP中的View并不直接使用Model,它们之间的通信是通过Presenter来进行的,所有的交互都发生在Presenter内.

2021-12-24 14:03:04 246

原创 Android开发欧酷天气,2021年最新安卓大厂面试笔试题分享

android:background="@color/colorPrimary"><android.support.v4.widget.DrawerLayoutandroid:id="@+id/drawer_layout"android:layout_width=“fill_parent”android:layout_height=“fill_parent”><ImageViewandroid:id="@+id/bing_pic_img"android:layout_w

2021-12-24 14:02:06 1521

原创 Flutter 完整开发实战详解自定义布局,android模拟器手机版

4、MultiChildRenderObjectWidgetMultiChildRenderObjectWidget 的实现很简单 ,它仅仅只是继承了 RenderObjectWidget,然后提供了 children 数组,并创建了 MultiChildRenderObjectElement。上面的 RenderObjectWidget 顾名思义,它是提供 RenderObject 的 Widget ,那有不存在 RenderObject 的 Widget 吗?有的,比如我们常见的 Stateful

2021-12-23 13:51:42 232

原创 Flutter 入门与实战(九),kotlin和java区别

onPressed: () {print(‘Login: username=username.trim(),password={_username.trim()}, password=u​sername.trim(),password={_password.trim()}’);},),);}按钮点击回调事件为 onPressed,这里只是简单地打印了表单的内容。TextField 文本框TextField 是 Flutter 提供的文本输入框,TextField 的属性非常多,常用的属性如

2021-12-23 13:49:36 265

原创 Flutter 入门与实战(九)(1),androidjni开发书籍

return Container(height: 50,width: double.infinity,margin: EdgeInsets.all(10),decoration: BoxDecoration(color: Theme.of(context).primaryColor,borderRadius: BorderRadius.circular(4.0),),child: TextButton(style: ButtonStyle(foregroundColor: Materia

2021-12-23 13:48:33 144

原创 Flutter 与原生交互总结,面试考点与面试技巧

}@Overridepublic void onCancel(Object o) {}});其中的CHANNEL_POST,是自己定义的一个协议,和Flutter侧统一就可以,在main.dart中注册该方法就可以,示例代码如下:Application.eventChannel = const EventChannel(TTKeys.channel_native_post);参数的获取在路由到的页面中实现,如下所示:String naviTitle = ‘商品详情’;// 回调事件voi

2021-12-23 13:47:34 882

原创 Flutter 2,不断提升自己创造溢价的能力

所以使用 FlutterEngineGroup 之后,FlutterEngine 都将由 FlutterEngineGroup 去生成,生成的 FlutterEngine 可以独立应用于 FlutterActivity/FlutterViewController,甚至是 FlutterFragment :所以就像例子上所示,你可以在一个 Activity 上显示两个独立的 FlutterView 。这其实得益于通过 FlutterEngineGroup 生《Android学习笔记总结+最新移动.

2021-12-23 13:44:25 1849

原创 Android热补丁动态修复实践,Android程序员如何有效提升学习效率

com.devilwwj.hotfixdemoCreated by devilwwj on 16/3/8.*/public class BugClass {public String bug() {return “bug class”;}}package com.devilwwj.hotfixdemo;/**com.devilwwj.hotfixdemoCreated by devilwwj on 16/3/8.*/public class LoadBugC..

2021-12-22 13:58:31 130

原创 Android滑出菜单和悬浮按钮的实现,花了19998买的学习教程

现在的大部分安卓应用都有用到悬浮按钮和滑出菜单,比如我们手机上的记事本用到了悬浮按钮,qq,网易云音乐等用到了滑出菜单,而且这两个功能用上的话也会让你的app给人的感觉好一点。效果图如下:滑动菜单普通的菜单都是放在toolbar上,但是那样会让我们的 app看起来很难看,而所谓的滑动菜单,就是将一些菜单选项隐藏起来,而不是放置在主屏幕上,然后用户就可以通过滑动的方式将菜单显示出来,这种方式既节省屏幕空间,又实现了良好的动画效果。这个功能看起来比较难实现,如果要自己实现的话确实是这样,不过googl

2021-12-22 13:57:06 1059

原创 Android模块化实践,kotlin密封类

基础业务层主要用来统一APP的代码结构,UI风格等,主要包含以下三个方面:Android组件的二次封装主要是对Activity/Fragment的封装,提供了不需网络请求的BaseActivity/BaseFragment和需要网络请求的BaseProgressActivity/BaseProgressFragment, 为页面的代码提供统一的结构,页面的样式提供统一的风格。业务通用UI主要包含各种样式的Dialog, 自定义View等,根据APP的设计风格提供统一的样式;图片操作库图片操作库I

2021-12-22 13:55:41 265

原创 android检测SD卡读写权限详情,我浪费了自己职业生涯的黄金5年

requestPermission(HDCivilizationConstants.SD_CARD_REQUEST_CODE, “android.permission.WRITE_EXTERNAL_STORAGE”, new Runnable() {@Overridepublic void run() {//第一个Runnableif (type==1){FileUtils.saveBitmapPng(rectBitmap, pathList, 80);}else{try {FileUtil

2021-12-22 13:54:15 687

原创 Android架构组件JetPack之WorkManager完全解析(五),快速上手

@NonNull@Overridepublic Worker.Result doWork() {Context applicationContext = getApplicationContext();try {Bitmap picture = BitmapFactory.decodeResource(applicationContext.getResources(),R.drawable.test);return Worker.Result.SUCCESS;} catch (Throwa

2021-12-22 13:52:50 333

原创 android服务保活,开发实战宝典经验

MainServicepackage com.aoaoyi.service;import android.app.AlarmManager;import android.app.PendingIntent;import android.app.Service;import android.app.job.JobInfo;import android.app.job.JobScheduler;import android.content.ComponentName;import android

2021-12-22 13:50:00 178

原创 Android插件化探索与发现,含面试题+答案

this.dexElements = makeDexElements(splitDexPath(dexPath), optimizedDirectory,suppressedExceptions, definingContext, isTrusted);…}private static Element[] makeDexElements(List files, File optimizedDirectory,List suppressedExceptions, ClassLoader loader

2021-12-22 13:47:10 308

原创 Flutter滚动型容器组件 - ListView篇,android线程池面试题

child: ListView.builder(itemCount: subscribeAccountList.length,itemBuilder: (context, index) {return SubscribeAccountCard(data: subscribeAccountList[index]);},),);}}预览根据上面的代码可以看到,ListView.build创建列表最重要的两个参数就是itemCount和itemBuilder。对于公众号列表这个例子,由于每个

2021-12-20 17:04:30 407

原创 Flutter34,别再说自己不会了

_showUerInfo() {}@overrideWidget build(BuildContext context) {return ListView.separated(itemBuilder: (context, index) {//My界面的头部if(index == 0){//头像用Container装起来return _buildHeader();}index -= 1;return ListTile(leading: Icon(menuIcons[index]),

2021-12-20 16:55:16 553

原创 Flutter29,kotlin创建数组

);}}HomePage.dart主界面内容的布局分为titleBar, body和底部的NavagationBarimport ‘package:flutter/material.dart’;import ‘package:flutterapp2/widgets/navigation_icon_view.dart’;class HomePage extends StatefulWidget {@override_HomePageState createState() => _Home

2021-12-20 16:53:16 273

原创 Flutter-组件到底是什么?,android开发游戏加入时间限制

传统的 View 和视图模型我一直支持在移动 UI 开发中使用视图模型。无论你是在 Android 还是 iOS 上工作,都要考虑自定义的 View 或 UIView,称为ListItemView。这个 ListItemView 在左边显示一个图标,然后在图标右边显示字幕上方的标题,最后在右侧显示一个可选附件:在定义这个自定义 View 的时候,你可以将每个对 View 的描述设为独立属性:myListItemView.icon = blah;myListItemView.title = “bl

2021-12-20 16:51:49 90

原创 GreenDao 3,1个月学会Android开发

其中 save(T) 和insertOrReplace(T) 方法比较特殊既能进行插入操作也能执行修改操作insertInTx(T…) deleteInTx(T…) updateInTx(T…) saveInTx(T…) insertOrReplaceInTx(T…)refresh(T) 刷新数据注意:在这函数后面有InTx(T…),是表示开启事物进行多个数据的操作/**Inserts the given entities in the database using a t..

2021-12-19 17:33:28 991

原创 GreenDao 3(1),移动终端开发考试题

teachers1.setTeacherId(32);teachers1.setTeacherName(“32 老师”);teachers1.setSex(“男”);Teachers teachers2=new Teachers();teachers2.setTeacherId(33);teachers2.setTeacherName(“33 老师”);teachers2.setSex(“女”);Courses courses=new Courses();courses.setCourseI

2021-12-19 17:31:55 174

原创 GPS定位,字节跳动Andorid岗25k+的面试题

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=“http://schemas.android.com/apk/res/android”package=“club.yzren.iot”><applicationandroid:allowBackup=“true”android:icon="@mipmap/ic_launcher"android:label="@string/app_name

2021-12-19 17:29:58 209

原创 Google Jetpack 新组件 CameraX 介绍与实践,androidstudio基础

CameraX 目前的版本是 1.0.0-alpha01 ,在使用时要添加如下的依赖:// CameraXdef camerax_version = “1.0.0-alpha01”implementation “androidx.camera:camera-core:cameraxversion"implementation"androidx.camera:camera−camera2:{camerax_version}"implementation "androidx.camera:camera-

2021-12-19 17:24:11 623

原创 Glide源码精编解析(腾讯面试参考答案),kotlin视频教程

target.setRequest(request)也是一个比较值得注意的地方,如果target是ViewTarget,那么request会被设置到View的tag上。这样其实是有一个好处,每一个View有一个自己的Request,如果有重复请求,那么都会先去拿到上一个已经绑定的Request,并且从RequestManager中清理回收掉。这应该是去重的功能。4.2 requestManager.track(target, request)这个方法非常的复杂,主要用于触发请求、编解码、装载和缓存这些功

2021-12-19 17:20:13 423

原创 Glide源码学习五:回调与监听,androidstudio开发

可以看到,Target的继承结构还是相当复杂的,实现Target接口的子类非常多。不过你不用被这么多的子类所吓到,这些大多数都是Glide已经实现好的具备完整功能的Target子类,如果我们要进行自定义的话,通常只需要在两种Target的基础上去自定义就可以了,一种是SimpleTarget,一种是ViewTarget。接下来我就分别以这两种Target来举例,学习一下自定义Target的功能。首先来看SimpleTarget,顾名思义,它是一种极为简单的Target,我们使用它可以将Glide加载出来

2021-12-19 17:18:40 238

原创 Glide图片框架使用详细介绍(一),手握5家大厂offer

.load(url).placeholder(R.drawable.loading).error(R.drawable.error).into(imageView);5、设置是否加载动图asBitmap()只加载静止图片.asGif()只加载动态图片设置成asBitmap的时候你去加载gif图片,那么只会显示静态图片,设置成.asGif的时候你去加载静态图片会显示错误图片,报错。Glide.with(this).load(url).asBitmap().placeholder(R.d

2021-12-19 17:17:09 313

原创 为什么老程序员的效率如此高?编程速度快,Bug数量又少

大神程序员出发之后径直穿过了田地,十分果断。他只用了十分钟就到了另一边。“你是怎么做到的?”另外两个人问道,“那些地雷怎么没有伤到你?”“很简单,”他回答道,“我最初就没有埋地雷。”不过其实踩坑是一方面,还有编码能力和意识:###注意代码分层、结构新手写程序,都喜欢把代码全部写在一起,我个人认为这个是属于意识层面的,并需要太强的编程能力,通过看别人写的代码,还是能够明白如何去组织代码,拆分代码的。核心思想就是“尽量每一个变量名有意义,每一个函数名有意义,每一个函数只干一件事情”。以早上起床

2021-12-17 20:51:41 11143 14

原创 为什么如此安全的https协议却仍然可以被抓包呢?,做了6年Android开发

那么看似固若金汤的https协议,抓包工具是如何在这其中找到一个“破绽”,从而实现对htt《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享ps请求进行抓包的呢?其实严格来说,这也算不上是一个破绽,而是用户的一个主动行为。还记得我们在上篇文章中讲到的,如果想要对https请求进行抓包,必须在手机上安装一个由Fiddler提供的证书吗?这个证书就是整个工作原理的核心,如果没有它

2021-12-17 20:50:01 437

原创 为什么-Android-要采用-Binder-作为-IPC-机制?,2021Android笔试题

接下来正面回答这个问题,从5个角度来展开对Binder的分析:(1)从性能的角度 **数据拷贝次数:**Binder数据拷贝只需要一次,而管道、消息队列、Socket都需要2次,但共享内存方式一次内存拷贝都不需要;从性能角度看,Binder性能仅次于共享内存。(2)从稳定性的角度 Binder是基于C/S架构的,简单解释下C/S架构,是指客户端(Client)和服务端(Server)组成的架构,Client端有什么需求,直接发送给Server端去完成,架构清晰明朗,Server端与Clie.

2021-12-17 20:47:46 368

原创 两年半开发经验,从360离职后,拿到钉钉,kotlinmap线程

今年年初面试了以下几个公司(不是面试顺序):阿里(钉钉):拿到 offer头条(抖音、火山):拿到 offer美团(美团平台):拿到 offer腾讯(腾讯音乐):二面挂小红书:拿到 offerbilibili:拿到 offervivo:拿到 offer京东:三面挂万兴科技:拿到 offer选择跳槽的核心就是将自己的利益最大化,当然这里说的利益,不仅仅是薪资福利,还有自己的职业规划。职业规划作为技术人员,我大概总结了下面三个方向,其实哪个方向都是大有可为,关键还是要看自己。技术经理

2021-12-17 20:46:01 1458

原创 不知庐山真面目只缘身在此山中,讲解一下Handler,字节面试官

在其 next()方法中会无限循环,不断判断是否有消息,有就返回这条消息并移除。Handler(消息处理器): 负责 Message 的发送及处理。主要向消息池发送各种消息事件(Handler.sendMessage())和处理相应消息事件(Handler.handleMessage()),按照先进先出执行,内部使用的是单链表的结构。Looper(消息池): 负责关联线程以及消息的分发,在该线程下从 MessageQueue 获取 Message,分发给Handler,Looper 创建的

2021-12-17 20:44:10 141

原创 不看你就亏了,Android中高级大厂面试源码秘籍,助你金三银四直通大厂

8.Retrofit (Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的)9.OkHttp…(二)解决问题(bug)IllegalArgumentException分析java.lang.IllegalArgumentException: You cannot start a load for a destroyed activityat com.bumptech.glide.manager.RequestManagerRetriever.assertN

2021-12-17 20:42:28 224

原创 三分钟集成连连支付方法(以认证支付为例),androidstudio开发文档

在项目的build.gradle中:flatDir {dirs ‘libs’}如下图:在module的build.gradle中:compile(name:‘securePay’, ext:‘aar’)如下图:把项目中的除了standActicity外其他的类考入你的项目中,当然看你的需要,需要哪些类考哪些类就好了,例如我这里需要的数据都是后台返回过来的(包括签名),所以我只需要的的类如下图:开始调用:private void unionPay(String bindCar

2021-12-17 20:40:16 455

原创 一篇文章带你彻底搞懂Kotlin的协程,移动app定制开发

异常捕获协程里面的失败都可以通过异常捕获,来统一处理特殊情况lifecycleScope.launch {try {val text=getText()tvTest.text = text} catch (e:Exception){e.printStackTrace()}}取消功能下面执行了两个job,第一个是原始的,第二个是在1秒后取消第一个job,这会导致tvText的文本并不会改变val job = lifecycleScope.launch {try {val text=

2021-12-17 20:36:39 189

原创 【Jetpack篇】LiveData取代EventBus,安卓面试项目

owner.getLifecycle().addObserver(wrapper);}observe方法传有两个参数LifecycleOwner和Observer,LifecycleOwner是一个具有Android生命周期的类,一般传入的是Activity和Fragment,Observer是一个接口,内部存在void onChanged(T t)方法。✅ 第一部分: observe内部一开始就存在一个生命周期的判断,if (owner.getLifecycle().getCurrentState

2021-12-16 18:39:26 283

原创 【Flutter 专题】126 图解自定义两侧对齐 ACETabBar 标签导航栏

}return _type;}_scrollView(tabBar) {return SingleChildScrollView(dragStartBehavior: widget.dragStartBehavior,scrollDirection: Axis.horizontal,controller: _scrollController,physics: widget.physics,child: tabBar);}案例尝试小菜尝试了在 isScrollable 是否可滑动两种状

2021-12-16 18:37:11 493

原创 【Android】33,移动端网页开发开源组件

<RadioGroupandroid:layout_width=“match_parent”android:layout_height=“wrap_content” ><RadioButtonandroid:id="@+id/radioButton1"android:layout_width=“match_parent”android:layout_height=“wrap_content”android:text=“RadioButton1” /><Radio

2021-12-16 18:33:35 326

原创 【Android】32,2021最新Android面经分享

2.新建layout_item.xml,作为RecyclerView的列表项。<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:orientation=“vertical” android:layout_width=“wrap_content”android:layout_height=“wrap_

2021-12-16 18:31:53 279

原创 「万物生长」一个APK从诞生到活跃在Android手机上,android驱动开发权威指南pdf

可能到这里你还没有感觉,但如果看了这张图呢?是否能切实的感受到Gradle所提供的强大能力了,因为对我们我们开发者而言其实只干了一件运行按钮的触发操作,但是背后Gradle给我们所带来的收益是无穷无尽的。在这里我们知道他很有用了,但是为什么还要提一下他的兄弟Maven呢?主要是为了让你转化手头的构建工具,根据官网的构建速度对比。具体请参考文档Gradle vs Maven:性能比较因为公司里一般的项目都是组件化的,而且接入方会很多很多很多,所以我们拿一个大型构建的时间对比可能更服人心。对于干

2021-12-16 18:28:03 1372

空空如也

空空如也

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

TA关注的人

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