自定义博客皮肤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)
  • 收藏
  • 关注

原创 3分钟带你看懂android的Binder机制,手机跨平台开发框架

Binder本质上只是提供了一种通信的方式,和我们具体要实现的内容没有关系,为了实现这个服务,我们需要定义一些接口,让client能够远程调用服务,因为是跨进程,这时候就要设计到代理模式,以接口函数位基准,client和server去实现接口函数,Server是服务真正的实现,client作为一个远程的调用。从Server进程来看,Binder是存在的实体对象,client通过transact()函数,经过Binder驱动,最终回调到Binder实体的onTransact()函数中。从 Client进

2021-11-21 01:03:45 353

原创 Android 开发市场是盛是衰?你应该知晓,手把手教你写Android项目文档

2015年正是IT行业大火的时候,各大教育机构快速的培养了一大批初级的Android开发者进入市场,使得火热的市场供大于求。最后导致Android 初级市场开始慢慢的进入饱和阶段,也是这个原因招聘的门槛开始不断高。再也不像从前,会写几个简单的页面,功能的实现。而不去考虑性能的优化和是否卡顿等问出现,放到现在肯定是不行的。因为用户的体验感和永远感在不停的改变,所以得考虑到多方便因素,而这些因素要怎么去解决,就需要通过我们这些开发者来实现,正是这样所以招聘需求门槛也在不断的提升。我们来看看现在市场招聘的要求

2021-11-20 12:29:44 270

原创 Android 实现搜索历史(2),apm性能监控系统

lineHeight = childHeight;} else {//不换行情况//叠加行宽lineWidth += childWidth;//得到最大行高lineHeight = Math.max(lineHeight, childHeight);}//处理最后一个子View的情况if (i == childCount - 1) {width = Math.max(width, lineWidth);height += lineHeight;}}//wrap_contentse

2021-11-20 12:27:12 287

原创 Android 存储:Internal Storage的用法以及与External storage 的区别

1.Shared Preferences      2.Internal Storage      3. External Storage      4. SQLite Database     5.Network ConnectionInternal Storage 和 External Storage 的区.

2021-11-20 12:24:38 915

原创 Android 可控制概率家务转盘,Android码农是如何进入腾讯的

}@Overridepublic void onAnimationEnd(Animation animation) {String name = arrayHouseWork[degreeStart % 360 / 60];Toast.makeText(context, name, Toast.LENGTH_SHORT).show();}};public HouseWorkWheel(Context context, AttributeSet attrs, int defStyle) {su

2021-11-20 12:21:26 1079

原创 Android 反编译利器,jadx 的高级技巧,2021年五面蚂蚁

直接下载最新版就可以了,现在的最新版是 jadx-0.6.1 。下载好解压之后,你会获得这样的目录结构:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HY1d0CnZ-1637381919027)(https://user-gold-cdn.xitu.io/2017/11/27/15ffc9518b44f5f3?imageView2/0/w/1280/h/960/ignore-error/1)]jadx-path对于 Mac 或者 Linux,使用 jadx-gui ,

2021-11-20 12:18:54 2118

原创 android 优秀框架整理,Kotlin科学计算

github https://github.com/loopj/android-async-http作者:James Smith使用:repositories {maven {url ‘https://oss.sonatype.org/content/repositories/snapshots/’}}dependencies {compile ‘com.loopj.android:android-async-http:1.5.0-SNAPSHOT’}18.androidannotat

2021-11-20 12:16:26 1187

原创 Android _ Jetpack 处理回退事件的新姿势 —— OnBackPressedDispatcher

目录前置知识这篇文章的内容会涉及以下前置 / 相关知识,贴心的我都帮你准备好了,请享用~你真的懂 Fragment 吗?AndroidX Fragment 核心原理分析1. 概述OnBackPressedDispatcher 解决了什么问题: 在 Activity 里可以通过回调方法 onBackPressed() 处理,而 Fragment / View 却没有直接的回调方法。现在,我们可以使用 OnBackPressedDispatcher 替代 Activity#onBackP

2021-11-20 12:13:42 1356

原创 Android Studio安装更新终极解决方式,flutter页面跳转防止页面重复刷新

再启动程序就会打开项目向导界面,这个时候需要配置sdk 或 使用代理服务器下载sdk。1.配置sdk直接点 configure→project defaults→project structure 到这个界面:2.设置代理服务器下载sdk, 打开 Configure→Settings,在查找框里面输入 http,检索到 HTTP Proxy,设置代理服务器。然后退出将上面在idea.properties 配置文件中添加的 disable.android.first.run=true&nbs.

2021-11-20 12:10:25 538

原创 Android Studio APK打包(签名),12年高级工程师的“飞升之路”

二、生成Debug和Release包当你看到这个页面的时候,这个APK就已经安装在这个模拟器上面了,而这个APK就是debug版本的,但是它是运行时生成的,不是打包生成的怎么查看这个APK呢把当前项目切换成Project,然后找到build文件夹。只要你的项目运行了,就会生成这个文件夹,然后你可以通过下图此时《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》浏览器打开:qq.cn.hn/FTe 开源分享你可以将这个app-debug.apk复制,然后

2021-11-20 12:07:19 1441

原创 Android——File数据存储,retrofit和okhttp区别

android:id="@+id/edit"android:layout_width=“match_parent”android:layout_height=“200sp”android:gravity=“top”android:inputType=“textMultiLine”/><Buttonandroid:id="@+id/button1"android:layout_width=“match_parent”android:layout_height=“wrap_conte

2021-11-19 13:32:32 377

原创 Android6,androidstudio游戏开发教程

在dos命令行中输入adb shell pm list permissions -d -g便可得到如下危险权限:C:\Users\Administrator.PC-20160322ZIOG>adb shell pm list permissions -d -gDangerous Permissions:group:com.google.android.gms.permission.CAR_INFORMATIONpermission:com.google.android.gms.permissi

2021-11-19 13:29:45 3398

原创 Android10填坑适配指南,实际经验代码,拒绝翻译,46道面试题带你了解中高级Android面试

当 targetSdkVersion >= Build.VERSION_CODES.P 时调用 canvas.clipPath(path, Region.Op.XXX); 引起的异常,参考源码如下:@Deprecatedpublic boolean clipPath(@NonNull Path path, @NonNull Region.Op op) {checkValidClipOp(op);return nClipPath(mNativeCanvasWrapper, p

2021-11-19 13:26:47 82

原创 Android-适配各国语言、屏幕尺寸、系统版本及常见适配方法总结

**·**Layout适配有4种尺寸 :小(small),普通(normal),大(large),超大(xLarge)**·**Bitmap适配有4种分辨率:低Low精度(ldpi), 中Middle精度(mdpi),高High精度(hdpi), 超高精度(xhdpi)首先,说一说这个分别率的问题。在项目开发的过程中有一个重要的合作是与UI设计师的图片大小分别率的沟通。例如,UI设计师实现步骤:①在coreldraw或者Sketch中制作好“矢量图标“ ;②保存输出为“PNG位图图片”,单位是px;③

2021-11-19 13:24:10 310

原创 Android-冷门知识点汇总:你知道哪些Android中的冷门知识?

5.弹出一个AlertDialog,不一定需要Activity级别的Context,而且任何地方都有办法弹出一个AlertDialog,只要是在Application的attachBaseContext之后。下面是一个简单的demo演示:首先看DemoApplication,然后看Alert类:在Application中初始化:import android.app.Application;public class DemoApplication extends Application {@O

2021-11-19 13:21:28 367

原创 Android 音视频入门 (四)- 记录一次MediaCodec ,非科班生金九银十求职经历

主要是初始化:cameraId和outputSizes属性,前者是相机的ID,后者是相机输出的画幅尺寸。private fun initCamera() {//初始化相机的一些参数val instanceOfCameraUtil = CameraUtils.getInstance(this).apply {this@CameraActivity.cameraManager = this.cameraManager!!cameraId = this.getCameraId(false)!! //默认

2021-11-19 13:18:55 228

原创 Android 适配Dark Theme(暗黑模式),看完跪了

Force Dark自动适配Android 10 提供 Force Dark 功能。此功能可让开发者快速实现深色主题背景,只需要在 style.xml 中的应用主题中添加这一行代码android:forceDarkAllowed=“true” ,就可以完成自动适配。效果对比如下图所示。从结果来看,整体的界面风格好像确实变成了暗黑模式,但是菜单栏并未适配,所以这里我并不推荐你使用这种自动化的方式来实现深色主题,而是应该使用更加复杂一点的实现方式——自定义适配。图1 正常情况《Android学习笔

2021-11-19 13:15:43 2680

原创 Android 网络框架之Retrofit源码解析,flutter边框特效

Retrofit的构建使用了建造者模式,这个模式的优点就是可以构造复杂的对象,方便扩展,并且看起来代码比较简洁,美观;在开始之前,我们先来看一下Retrofit的成员变量;这里的变量并不是很多,我们来一个个分析;**(1)Map<Method, ServiceMethod<?>> serviceMethodCache:**这是一个方法的缓存类,key为网络请求的Method,比如GET,POST等,而ServiceMethod则对应着动态代理解析后的方法类;**(2)okh

2021-11-19 13:12:51 170

原创 Android 组件化开源app -开眼短视频(OpenEyes),面试官都被搞懵了

|[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gxtdS0m8-1637298570901)(https://user-gold-cdn.xitu.io/2020/3/1/1709659b4ddafa9b?imageView2/0/w/1280/h/960/ignore-error/1)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-udoPLZ4c-1637298570924)(https://user-gold

2021-11-19 13:09:47 523

原创 android 界面布局-各个布局的属性介绍,你值得拥有

第三类:属性值为具体的像素值,如 30dip , 40pxandroid:layout_marginBottom              离某元素底边缘的距离android:layout_marginLeft              

2021-11-19 13:07:13 611

原创 android 和RxJava配合使用的两个图片压缩框架LuBan、Compressor

.into(mImageNew);mText.setText(“压缩后大小” + FileUtils.getDataSize(file.length()));}@Overridepublic void onError(Throwable e) {// TODO 当压缩过程出现问题时调用Log.e(“huangxiaoguo”, “使用鲁班IO模式压缩,压缩过程出现问题” + e.getMessage());}}).launch(); //启动压缩}使用鲁班RxJava模式压缩首先需

2021-11-18 09:49:05 570

原创 Android 原生项目集成 Flutter,GitHub标星1w的Android架构师必备技能

在配置 settings.gradle 之前先来简单回顾一下关于 Gradle 的一些基础知识。如果你了解过 Gradle 相关的配置的话,一定会看到一个概念,就是 约定优于配置 ,什么意思呢,按照面向对象的思路来理解,每一个工程是一个巨大的 Project 类,整个类里有很多的属性。而我们创建的每一个项目其实就是一个具体的 Project 对象(也就是实例).约定优于配置的意思,就是在 project 实例化的时候,其内部的属性已经有了默认值。那么我们怎么知道有哪些默认值呢?在项目根目录执行./gra

2021-11-18 09:46:19 276

原创 Android 关于状态栏开发的几件事,安卓开发面试题及答案

需求三、标题栏与状态栏颜色一致 xml中配置我们能看到这种处理方式,是可以解决一些业务场景,但是如果在低于21版本手机上就不管用了,那怎么办呢?请接着往下看Window window = getWindow();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);wi

2021-11-18 09:43:20 160

原创 Android 修改横屏角度为顺时针270度,kotlin可选参数

shortSize = height;longSize = width;mLandscapeRotation = Surface.ROTATION_0;mSeascapeRotation = Surface.ROTATION_180;if (res.getBoolean(com.android.internal.R.bool.config_reverseDefaultRotation)) {mPortraitRotation = Surface.ROTATION_90;mUpsideDownRo

2021-11-18 09:40:43 242

原创 Android 代码混淆语法讲解及常用模板,app架构图

-keepclassmembers class *.R$ {public static ;}表示不混淆 R 类中 的 static 变量,在 R 类中。这些资源 ID 是系统自动帮我们生成的,混淆了就无法找到相应的资源。-dontwarn android.support.**表示混略 android.support 包下代码的警告。因为 android.support 包下,许多类都是在高版本中才能使用的,不过你不用担心低版本使用了会报错,因为在 support 包里面的类都已经对版本进行判断,所

2021-11-18 09:38:02 624

原创 Android 之 Metadata简析,flutter调用android接口

在mainActivity中:public class MainActivity extends AppCompatActivity implements View.OnClickListener {private TextView result;private Context mContext;private ComponentName cn;@Overrideprotected void onCreate(Bundle savedInstanceState) ...

2021-11-18 09:35:28 317

原创 android 中DrawerLayout实现抽屉,android项目开发范例大全

DrawerLayout layout = (DrawerLayout) findViewById(R.id.drawer);ImageView imageView = (ImageView) findViewById(R.id.img);final ListView listView = (ListView) findViewById(R.id.list);//获取手机的菜单栏final ActionBar actionBar = getActionBar();actionBar.setTitl

2021-11-18 09:32:16 398

原创 Android Transform + ASM 初探,为什么阿里的程序员成长如此之快

ASM 是一个功能比较齐全的 Java 字节码操作与分析框架。它能被用来动态生成类或者增强既有类的功能。ASM 可以直接 产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类的行为。更多细节可以去 [ASM 官网]( ) 看看。笔者写 Demo 的时候最新的版本是 7.0。ASM 提供一种基于 Visitor 的 API,通过接口的方式,分离读 class 和写 class 的逻辑,提供一个 ClassReader 负责读取class字节码,然后传递给 Class Visi

2021-11-18 09:29:24 373

原创 Android Studio 模拟器卡慢、占内存解决方法,kotlinlambda匿名内部类

一. Android virtual device(自带模拟器Intel)=====================================这里讲一下Android Studio 原生模拟器的改善吧。为 Android 模拟器配置硬件加速,Android 模拟器可以使用硬件加速功能来提升性能,有时甚至可以大幅提升性能。1.创建新的AVD时修改Graphics Rendering选项创建新的 AVD 官方链接:https://developer.android.google.cn/stud.

2021-11-18 09:26:20 951

原创 Android OKHttp 可能你从来没用过的拦截器 【实用推荐】

在你的全局OkHttp中添加 Interceptornew OkHttpClient.Builder().addInterceptor(new CaptureInfoInterceptor()).build();原理及涉及知识详解作为Android开发,说到OKHttp的Interceptor,肯定熟悉不过了。那么你对 Interceptor 又了解多少呢?你都使用过那些OKHttp的 Interceptor呢?我们先来看一下最近滴滴很火的哆啦A梦DoraemonKit长下面这个样子[外链

2021-11-18 09:23:46 504

原创 Android Annotation使用快速入门,源码解读-别再说你不知道HashMap原理

@Retention定义了该Annotation被保留的时间长短:某些Annotation仅出现在源代码中,而被编译器丢弃;而另一些却被编译在class文件中;编译在class文件中的Annotation可能会被虚拟机忽略,而另一些在class被装载时将被读取(请注意并不影响class的执行,因为Annotation与class在使用上是被分离的)。2.注解事件处理器编写注解事件处理器,通过反射获得场景类对象的annotation的source对象。并且为source对象调用setOnClickLi.

2021-11-17 13:20:49 157

原创 Android 11适配指南之系统相机拍照、打开相册,安卓app开发教程

Android 6 权限适配Android 7 文件适配Android 10/11 存储适配ok,接下来以一个更换头像的小例子来讲解一下。示例=============================================================点击头像,然后弹窗,给出不同的选项,执行不同的操作。mBinding.llImg.setOnClickListener {TakeImage《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目..

2021-11-17 13:18:03 1718

原创 AdapterViewFlipper 图片_文字 轮播动画控件,android应用程序开发

}// 图片轮播private fun initImgFlipper() {imgFlipper = findViewById(R.id.img_flipper)val list = listOf(“http://www.nicesoso.com/test/file/img/test.jpg”, “http://www.nicesoso.com/test/file/img/test_h_1.jpg”,“http://www.nicesoso.com/test/file/img/test_h_2.j

2021-11-17 13:12:27 106

原创 Accompanist组件库中文指南 - Glide篇,350道Android面试真题分享

contentDescription = stringResource(R.string.image_content_desc))painter使用 Glide 加载传入的数据,然后绘制结果图像。开发者也可以通过 requestBuilder 参数来自定义 Glide 的RequestBuilder。淡入动画该库内置支持图像加载过程中的淡入动画。rememberGlidePainter 的函数参数 fadeIn:Boolean 默认为 false,当 fadeIn = true 时,一个默认的

2021-11-17 13:09:46 396

原创 985留学生回国应聘Android岗位,同时被5家公司录取,最终选择了字节跳动

###三、被裁公司第一个offer是讯飞莫名其妙被诶辞职,在干了2个月后。Android部门做虽然有事先通风,但是我没有想到这一天会来的那么快。今天中午收到消息说我们这个组要被砍掉,因为公司要准备解散了,首先拿我们开刀,也就是裁人,下午接着就进行谈话,谈了赔偿等相关事宜,然后就准备交接工作,忙了一下午。我人生第一次经历公司解散的,这个经历有点奇妙,还以为我会炒老板鱿鱼,没想到竟然是老板先炒了我鱿鱼。第一次失业的我,有点迷茫,虽然今年找工作不容易,但是我会尽量加油的。(早知道选大厂了,真后悔没听朋友的)

2021-11-17 13:07:12 344

原创 98%Android开发者已收藏的“80,android开发强化实战pdf

Trinea - 性能优化系列总篇http://www.trinea.cn/android/performance/高建武 - 性能优化篇http://androidperformance.com/2015/04/11/AndroidMemory-Usage-Of-MAT.htmlAndroid 性能优化篇https://www.jianshu.com/p/388c693c1b58胡凯 - Android 性能优化典范http://hukai.me/android-performance-pa

2021-11-17 13:04:00 184

原创 @Android程序员:这-5-道刁钻的-Activity-生命周期面试题,你会几道

如果是启动一个 Theme 为 Dialog 的 Activity , 则生命周期为:A.onPause -> B.onCrete -> B.onStart -> B.onResume注意这边没有前一个 Activity 不会回调 onStop,因为只有在 Activity 切到后台不可见才会回调 onStop;而弹出 Dialog 主题的 Activity 时前一个页面还是可见的,只是失去了焦点而已所以仅有 onPause 回调。Activity 在 onResume 之后才显示的

2021-11-16 11:57:27 284

空空如也

空空如也

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

TA关注的人

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