自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android 关于CPU类型的so文件兼容问题(ABI),做了3年Android还没看过OkHttp源码

查看手机的CPU ABI通过 adb 命令查看连接手机到电脑上打开 cmd 命令窗口,输入命令 adb shell然后输入命令 cat /proc/cpuinfo通过代码获取Build.CPU_ABI、Build.CPU_ABI2,API level 大于等于21时,使用Build.SUPPORTED_ABIS如何适配ABI是如何工作一般来说,一个Android设备可以支持多种ABI,设备主ABI和辅助ABI,以arm64-v8a为主ABI的设备,辅助ABI为armeabi-v7a和.

2022-02-18 13:23:39 729

原创 Android 开发艺术探索笔记(10),Android开发自学技巧

ViewRoot对应ViewRootImpl类,它是连接WindowManager和DecorView的纽带。View的三大流程均是通过ViewRoot来完成的。在ActivtyThread中,当Activity创建完毕,会将DecorView添加到Window中,同时创建ViewRootImpl对象,并将ViewRootImpl和DecorView建立关联。root = new ViewRootImpl(view.getContext(),display);root.setView(view,wpar

2022-02-17 18:43:14 333

原创 Android 嵌套滑动总结,android基础考试题及答案

<androidx.coordinatorlayout.widget.CoordinatorLayoutxmlns:android=“http://schemas.android.com/apk/res/android”xmlns:app=“http://schemas.android.com/apk/res-auto”xmlns:tools=“http://schemas.android.com/tools”android:layout_width=“match_parent”androi

2022-02-17 18:40:24 370

原创 Android 嵌套滑动总结(1),组件化与插件化的差别在哪里

滑动位移传递方向由 child -> parent -> child,如下图。如果 child 是 Recyclerview ,它会先把位移给父布局消费,这时父布局滑动。当父布局滑动顶到不能滑动时,Recyclerview 这时会消费全部位移,这时它自己开始滑动,这样就形成了嵌套滑动,效果正如之前的例子中所看到的。dispatchNestedScroll 和 onNestedScroll 的作用原理上述 preScroll 的方法类似,只不过这两个方法构造的嵌套滑动顺序和 preScroll

2022-02-17 18:38:59 216

原创 Android 属性动画(Property Animation) 完全解析,事件分发机制Android

public class ObjectAnimActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.xml_for_anim);}public ..

2022-02-17 18:37:34 210

原创 Android 实现双Launcher的无缝切换,flutterplugin修改

当系统存在多个Launcher的时候 ,点击图标进行切换,这里提供三种方式 进去处理注意前提条件是具备下面事项,需要系统级别的权限<manifest xmlns:android=“http://schemas.android.com/apk/res/android”package=“com.rtkj.switchlauncher”android:sharedUserId=“android.uid.systemui”可以导出Apk文件放到系统的system/app目录下面去编译第一种方式

2022-02-17 18:36:09 692

原创 Android 图片压缩之多种压缩方式结合使用,阿里Android开发面试解答

canvas.drawBitmap(image, null, rect, null);ByteArrayOutputStream baos = new ByteArrayOutputStream();// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中int options = 100;result.compress(Bitmap.CompressFormat.JPEG, options, baos);// 循环判断如果压缩后图片是否大于100kb,大于继续压缩while (

2022-02-17 18:34:44 271

原创 Android 动画各种实现,包括帧动画、补间动画和属性动画的总结分享

扫一扫体验打开ImitateFragment (模仿三方应用特效)仿新浪微博雷达扫描效果及卡片动画效果(Android 动画实战-仿微博雷达功能)仿懂球帝 APP 我是教练游戏效果仿简书长按生成图片效果沉寝式模式初探仿简书头部 SearchView仿手 Q 侧滑菜单效果仿 QQ 空间下拉顶部放大效果TraditionFragment (传统动画)传统动画即帧动画和补间动画相关的代码Blur Android 实现毛玻璃效果的 demoAc

2022-02-17 18:33:19 1195

原创 Android 关于状态栏开发的几件事,教育移动互联网应用程序app

//条件状态栏透明,要不然不会起作用getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);if (mStatusBarView == null) {mStatusBarView = new View(FragmentStatusAndActionBarActivity.this);int screenWidth = getResources().getDisplayMetrics().widthPixels;

2022-02-17 18:31:53 151

原创 Android _《看完不忘系列》之Retrofit,android面试题及答案2019

//运行期生成一个实现WanApi接口的类(字节码),并反射创建其实例WanApi wanApi = retrofit.create(WanApi.class);//得到Retrofit的call,他封装了okhttp的callCall call = wanApi.articleList(0);//请求入队call.enqueue(new Callback() {@Overridepublic void onResponse(Call call, Response response) {//

2022-02-17 18:30:28 626

原创 android 获取通讯录并显示listview,最新Android笔试题分享

代码:package com.yqy.yqy_testtxl;import java.io.InputStream;import java.util.ArrayList;import android.app.Activity;import android.content.ContentResolver;import android.content.ContentUris;import android.database.Cursor;import android.graphics....

2022-02-16 13:50:17 264

原创 Android 硬布局item的高级写法,sharedpreferences原理

android:contentDescription="@string/app_name"android:src="@mipmap/ic_arrow_right" /><Viewandroid:layout_width=“match_parent”android:layout_height=“1dp”android:layout_marginStart="@dimen/dp_50"android:background="@color/color_F6F6F6" /><

2022-02-16 13:47:27 147

原创 Android 直播中弹幕、带货和键盘的交互,android视频开发框架

// 改变当前布局的大小来适应键盘,会触发 GlobalLayoutListener 回调,这个配置就非常适合做微信这种 IM 聊天界面android:windowSoftInputMode=“adjustResize”// 直接把布局向上顶,会触发 GlobalLayoutListener 回调android:windowSoftInputMode=“adjustPan”// 默认值,界面可以滑动会设置成 adjustResize,反之 adjustPanandroid:windowSoftIn

2022-02-16 13:46:01 238

原创 Android 屏幕适配的最优方案(三),android项目开发实训总结

private final static float dh = 480f;private final static String WTemplate = “<dimen name=“x{0}”>{1}px\n”;private final static String HTemplate = “<dimen name=“y{0}”>{1}px\n”;public static void main(String[] args) {makeString(320, 480);mak

2022-02-16 13:37:32 1804

原创 android View事件分发和事件拦截,35岁以上程序员求职没市场

Top = getTop();Bottom = getBottom();(3)随着版本的迭代,后来增加了几个参数:x、y、translationX和translationY四个参数:x、y是View的左上角的坐标,而translationX和translationY是View左上角相对父容器的偏移量。x = left + translationX;y = top + translationY;2.MotionEvent和TouchSlop(1)MotionEvent有如下几种类型的事件:-

2022-02-15 13:41:48 216

原创 Android小菜鸡2 个月的面试亲身经历告诉大家,如何进入 BAT 等大厂?

怎么介绍项目?怎么介绍项目难点与亮点?你负责的模块?怎么让面试官满意?怎么介绍项目?====================================================================我在刚刚开始面试的时候,也遇到了这个问题,也是我第一个思考的问题,如何介绍自己的项目,既可以比较全面的让面试官了解这个项目,同时,也不会让面试官觉得废话太多。经过这么多的面试,我发现,一般这样的套路来介绍项目比较合适,当然,这只是我的感觉,没有最好的方式,只有..

2022-02-05 11:27:21 103

原创 Android利用Fmod仿QQ变声音效,狂刷200道数据结构与算法

}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);findViewById(R.id.tv_original).setOnClickListener(this);findViewById(R.id.tv_lolita).setOnClickListener(this);fin

2022-02-05 11:25:56 215

原创 Android冷启动优化,移动开发基础学习

3、创建应用程序进程第二阶段:创建完成了应用程序后,应用程序会负责下一阶段的任务1、创建应用程序对象(application部分)2、启动主线程3、创建main activity(就是我们的第一个启动的页面)4、加载试图5、布局屏幕6、执行初始化绘制完成上述操作后,系统进程会交换当前显示的背景窗口,将其替换成main activity的页面,这个时候用户就可以进行操作了,下图是冷启动的直观表示用户在看到页面完全展示出来的时机为main Activity的onResume的时候,那么我

2022-02-05 11:24:31 2922

原创 Android全面解析之Handler机制:常见问题汇总,android开发环境搭建步骤

}} else {// 没有消息,进入阻塞状态nextPollTimeoutMillis = -1;}// 当调用Looper.quitSafely()时候执行完所有的消息后就会退出if (mQuitting) {dispose();return null;}…}…}}这个方法我在前面讲过,我们重点看一下关于同步屏障的部分,看注释1的地方的代码:if (msg != null && msg.target == null) {// 同步屏障,找到下一个异步消息

2022-02-05 11:23:06 172

原创 Android仿淘宝最新向上滚动广告条,给后辈的一点建议

android:layout_gravity=“center_vertical”android:ellipsize=“end”android:gravity=“center_vertical”android:lines=“2”android:text="@string/app_name"android:textColor="#2F4F4F"android:textSize=“16sp” />创建自动滚动的图片控件引入图片加载框架:compile ‘com.github.bump

2022-02-05 11:21:41 162

原创 Android之Service复习深入,android性能优化和内存优化

分析onStartCommand方法参数的作用和返回值的作用:1、根据这个方法的返回值不同可以有两种启动模式START_NOT_STICKY,START_STICKY,(当进行被杀死的时候,是否重新启动。如果是参数:START_REDELIVER_INTENT表示当服务所在进程被杀死后,重新启动,并且重新传递Intent内容,其它两个参数不会重新传递intent,都为null)2、返回START_REDELIVER_INTENT的时候,如果不论启动多少次,当重新启动的时候,也会启动多少次。3、是当前服

2022-02-05 11:18:51 168

原创 Android之Rxjava2-源码解析,2021最新Android中级面试题目汇总解答

在subscribeActual方法中,先observer.onSubscribe(Disposables.disposed());,需要注意的是,这也是just方法独有的,它直接在onSubscribe方法里就Disposables.disposed了,这个方法在后面讲,这是取消了事件订阅,因为它只会发一次,到了这就意味着已经不用订阅了。然后再调用observer.onSuccess方法,直接把value传递了过去。Map操作符的源码再来看增加一个操作符的源码,就用最常用的map,其实操作符一通百通

2022-02-05 11:17:26 224

原创 android之Fragment(官网资料翻译),高级Android开发必看

fragment通常用来作为一个activity的用户界面的一部分,并将它的layout提供给activity.为了给一个fragment提供一 个layout,你必须实现 onCreateView()回调方法, 当到了fragment绘制它自己的layout的时候,Android系统调用它.你的此方法的实现代码必须返回一个你的fragment的 layout的根view.        注意: 如果你的fragment是Lis

2022-02-05 11:16:01 285

原创 Android之AppBarLayout实现悬停吸附伸缩效果,kotlin标准库

<android.support.design.widget.CoordinatorLayoutxmlns:android=“http://schemas.android.com/apk/res/android”xmlns:app=“http://schemas.android.com/apk/res-auto”android:layout_width=“match_parent”android:layout_height=“match_parent”><android.supp

2022-02-05 11:14:36 570

原创 Android10填坑适配指南,实际经验代码,拒绝翻译,android开发从入门到精通pdf

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P){Path mPathXOR = new Path();mPathXOR.moveTo(0,0);mPathXOR.lineTo(getWidth(),0);mPathXOR.lineTo(getWidth(),getHeight());mPathXOR.lineTo(0,getHeight());mPathXOR.close();//以上根据实际的Canvas或View的大小,画出相同大

2022-02-04 12:15:37 271

原创 Android-自定义Notification,一起刷完了这份1307页的Android面试宝典吧

package com.wwj.custom.notification;import android.app.Activity;import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.graph

2022-02-04 12:14:12 1166

原创 Android-目前最稳定和高效的UI适配方案,面试心得体会

| — | — | — || dpi | 320 | 480 || dpi/160 | 2 | 3 |根据上面的表格,我们可以发现,720P,和1080P的手机,dpi是不同的,这也就意味着,不同的分辨率中,1dp对应不同数量的px(720P中,1dp=2px,1080P中1dp=3px),这就实现了,当我们使用dp来定义一个控件大小的时候,他在不同的手机里表现出相应大小的像素值。我们可以说,通过dp加上自适应布局和weight比例布局可以基本解决不同手机上适配的问题,这基本是最原始的Androi

2022-02-04 12:12:47 1023

原创 Android-多渠道打包配置;你了解吗?,flutter蓝牙库

debugCompile project(path: ‘:sdk’, configuration: ‘debug’)综合示例1、先看app这边的build.gradle配置:apply plugin: ‘com.android.application’android {buildTypes {release {minifyEnabled trueproguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-r

2022-02-04 12:11:22 229

原创 Android-UI组件合集,2021年阿里Android高级面试题及答案

drag-sort-listview在ListItem拖动重排序。 开发者已经放弃维护了但是关注者依然不少。FreeFlowcomcast出品的一个布局引擎。 FreeFlow让你很容易的定制布局和漂亮的转换动画。看到comcast好激动, 因为他是笔者公司最大的客户。FadingActionBar折叠风格的ActionBar. 说起ActionBar, 第一选择不是ActionBarSherlock么?android-viewflow可以水平滚动的视图。android-flip可以.

2022-02-04 12:09:57 1468

原创 android 项目jar包冲突问题解决,kotlin编程实践

com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice,类似这种 v4包重复 ,直接删掉其中一个包就可以了。2.项目中jar包和三方SDK这其实有两种情况1)  将一些三方的框架源码引用到项目中了比如 GSON ,Vollery这些,我们将里面的一些文件重写了,引用的是源码,这个和我们引用的三方库里面的冲突了 。这种情况,我们可以将三方库设置为私有 pr

2022-02-04 12:07:07 2210

原创 Android 面试黑洞——当我按下 Home 键再切回来,2021必看-Android高级面试题总结

* FLAG\_ACTIVITY\_REORDER\_TO\_FRONT* FLAG\_ACTIVITY\_PREVIOUS\_IS\_TOP* FLAG\_ACTIVITY\_EXCLUDE\_FROM\_RECENTS* FLAG\_ACTIVITY\_RETAIN\_IN\_RECENTS* FLAG\_ACTIVITY\_TASK\_ON\_HOME的 android:taskAffinity的 android:allowTaskReparenting的 an.

2022-02-04 12:05:42 167

原创 Android 进程通讯机制之Binder(信使)架构以及内存映射详解

同一个应用由系统分配一个独立的账户,该应用的产生的所有进程,都会是这同一个账户,每个进程都是相互独立的。_那提起多进程,往往想到的是进程间的怎么交流信息的?那就有了今天这篇文章:Binder详解一.Binder是什么?Binder我也称之为信使(鸽子)Binder是安卓中实现IPC(进程间通信的)常用手段,四大组件之间的跨进程通信也是利用Binder实现的,Binder是学习四大组件工作原理的的一个重要基础,是Android提供的一套进程间相互通信框架。用来多进程间发送消息,同步和共.

2022-02-04 12:02:53 2670

原创 Android学习笔记之AndroidManifest,android高级面试题汇总

android:description=“string resource”android:enabled=[“true” | “false”]android:hasCode=[“true” | “false”]android:icon=“drawable resource”android:killAfterRestore=[“true” | “false”]android:label=“string resource”android:manageSpaceActivity=“string”an

2022-02-03 15:34:24 293

原创 Android图片处理内存溢出学习,androidtv开发框架

这个在不同的手机上出现这种错误还是有点尴尬的。一直以为是对图片的逻辑处理出了什么问题,经过总结发现,估计是因为G3手机拍摄相片分辨率过高,使图片过大,造成过程中内存溢出,通过网上搜索若干解决加载大图片时内存溢出的问题:尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFa

2022-02-03 15:28:43 170

原创 Android内存优化之图片优化,华为Android面试真题解析

public static Bitmap decodeByteArray(byte[] data, int offset, int length)// 根据IO流加载public static Bitmap decodeStream(InputStream is, Rect outPadding, Options opts)图片的优化可通过Options参数来实现(Options的介绍可参考从fresco 看图片优化):方式一:inSampleSizeinSampleSize可理解为图片的缩小比例

2022-02-03 15:24:28 144

原创 Android开发想转去做鸿蒙,你的技术真的到天花板了吗?

其实我们很多人在开发过程中只是浮在表面,写出去的简历也不堪入目。比如我们开发中,大家应该知道也懂得性能优化的重要性,可工作中由于对整个知识掌握不够,所以会在性能优化上没有自己的理解。比如,Glide,这个是我们经常用的技术,相信大家都会用:Glide.with(context).load(“图片url”).into(imageView)但是大家谁知道这个里面有性能上面的坑啊?如果我们不能体系的去掌握activity,fragment,application的生命周期,而且也不了解glide源码,因而

2022-02-02 14:06:34 3424

原创 Android开发 LiveData与MutableLiveData详解,我在美团Android研发岗工作的那5年

protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_demo2);mBtnAddData = findViewById(R.id.btn_add_data);mDemoViewModel = ViewModelProviders.of(this).get(DemoViewModel.class);//获取ViewM

2022-02-02 14:00:53 1053

原创 Android应用开发-小巫CSDN博客客户端之集成友盟社会化分享组件

支持横屏、竖屏、HD版;友盟社会化行为分析针对自建社交模块的移动应用提供的社会化统计分析SDK,可实时了解SNS、用户、信息流、转化率、传播效应等数据。提供四个维度: 概况、用户、行为、主题(内容)的趋势信息;时间区间:24小时时段、日、周、月、年,未来可支持自定义;提供总体的[用户分布](包括性别、年龄、学历、地域、职业、特征、爱好等)及详细的[用户列表]信息,精准至个体,并支持定向筛选;贡献值排名:根据操作行为的权重排序,掌握最核心的用户;监测带有话题或关键字的活动在社交平台.

2022-02-02 13:59:28 149

原创 Android工具类之创建快捷方式的方法详解,安卓上机面试题

假如我在一个activity中创建一个创建快捷方式的方法:createShortCut();public void createShortCut(){//创建快捷方式的IntentIntent shortcutintent = new Intent(“com.android.launcher.action.INSTALL_SHORTCUT”);//不允许重复创建shortcutintent.putExtra(“duplicate”, false);//需要现实的名称shortcutintent

2022-02-02 13:58:03 817

原创 Android多线程,阿里Android面试必问

public final class Message implements Parcelable{Handler target;//target处理Runnable callback;//Runnable类型的callbackMessage next;//下一条消息,消息队列是链式存储的//代码省略}Looper至于Handler是如何关联消息队列以及线程的呢,我们可以从下面的代码中获悉,Handler在内部通过Looper.myLooper()来获取Looper对象,并且与之关联,获取消息

2022-02-02 13:55:13 93

空空如也

空空如也

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

TA关注的人

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