自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android R WindowManagerService模块(5) 焦点窗口和InputWindows的更新

private final ToBooleanFunction mFindFocusedWindow = w -> {// 当前处于前台的ActivityRecordfinal ActivityRecord focusedApp = mFocusedApp;// 如果窗口无法接收key事件,则不能作为焦点窗口,返回falseif (!w.canReceiveKeys()) {return false;}final ActivityRecord activity = w.mActivity

2022-05-01 11:45:50 992

原创 Android Q 接入 MQTT

====================================================================================首先在APP 下引 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 入mqtt的库implementation ‘org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.1.1’创建一个MQTT连接的实体类packa

2022-05-01 11:44:13 265

原创 android - FlutterActivity MethodChannel和FlutterView

import io.flutter.embedding.engine.FlutterEngineimport io.flutter.plugin.common.MethodChannelimport io.flutter.plugins.GeneratedPluginRegistrantimport io.flutter.view.FlutterMainclass MainActivity : FlutterActivity() {override fun configureFlutterEngi

2022-05-01 11:36:16 313

原创 Ambari集群部署全流程

安装Apachesudo yum -y install httpd将Apache设置为开机启动sudo systemctl enable httpd启动Apachesudo systemctl start httpd测试访问 [http://192.168.186.164](()3.2 HDP安装部署到apache通过FTP上传RPM安装包到服务器上移动安装包到 /var/www/html/目录下sudo mv ambari-2.7.4.0-cento.

2022-05-01 11:34:21 699

原创 Android接入三方登录——QQ

[](()facebook错误1:feature unavailable facebook login is currently unavailable for this app,since we are updating additional details for this app ,please try again later[](()facebook错误2:Login Error:There is an error in logging you into this application.Pl

2022-04-29 14:21:32 925

原创 Android护眼功能

import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class AlarmReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Intent i = new Intent(context,

2022-04-29 14:19:33 160

原创 Android快速入门 四大应用组件之一Activity(打电话和发短信)功能练习

3)在回调方法当中实现逻辑*/public class MainActivity extends Activity implements OnClickListener {private EditText et_main_message;private Button btn_main_start1;private Button btn_main_start2;@Overrideprotected void onCreate(Bundle savedInstanceState) {supe.

2022-04-29 14:15:26 1445

原创 Android开发插件化来龙去脉(附全套学习视频)

Step1. 在宿主工程的AndroidManifest.xml中预先注册Activity进行占坑。<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android=“http://schemas.android.com/apk/res/android”xmlns:tools=“http://schemas.android.com/tools”package=“com.github.xch168.plugindemo”&gt

2022-04-29 14:13:24 140

原创 Android开发UI新技能,你get这个新技能了吗?(附源码详解)

[](()4.弹出框MaterialTheme {Column {val openDialog = +state { false }Button(“Click me”, onClick = {openDialog.value = true})if (openDialog.value) {AlertDialog(onCloseRequest = {openDialog.value = false},title = {Text(text = “Alert Dialog Title”.

2022-04-29 14:11:32 686

原创 Android属性动画,看完这篇够用了吧

4、旋转属性动画旋转动画也比较简单,将一个View进行顺时针或逆时针旋转。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OloPKCjB-1651212550182)(https://user-gold-cdn.xitu.io/2020/6/29/172fe00c11c2cf64?imageslim)]代码如下:tvText.setOnClickListener {val objectAnimation =ObjectAnimator.ofFloat(tvText

2022-04-29 14:09:29 341

原创 Android大厂校招经验+高频面试题(2021结合自身整理

高频面试题如下(Android)总结[](()前言=================================================================好久不见,快半年没发文章了,也很久没看留言了,有很多粉丝在公众号内私信计蒙一些面试相关的问题,所以计蒙带着干货来了。(由于个人时间安排原因,尽可能做到一月一更)。[](()计蒙最近在干嘛===========================================================...

2022-04-29 14:07:45 239

原创 Android事件分发机制四:学了事件分发有什么用?

@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {// 获取事件类型int actionMarked = ev.getActionMasked();// 根据时间类型判断调用哪个方法来展示动画switch (actionMarked){case MotionEvent.ACTION_DOWN :{clickEvent();break;}case MotionEvent.ACTION_CANCEL:case Motio

2022-04-29 14:05:59 1338

原创 Android之多媒体技术

private void updateSeekBar() {//6. 获取音乐文件的总时长 Gets the duration of the file.final int duration = mediaPlayer.getDuration();//7. 构造定时器Timer timer = new Timer();//7.1 创建任务TimerTask timerTask = new TimerTask() {@Overridepublic void run() {//8. 获取歌曲的

2022-04-29 14:04:20 185

原创 Android主流三方库源码分析:RxJava

ObjectHelper.requireNonNull(source, “source is null”);return RxJavaPlugins.onAssembly(new ObservableCreate(source));}复制代码在Observable的create()里面实际上是创建了一个新的ObservableCreate对象,同时,把我们定义好的ObservableOnSubscribe对象传入了ObservableCreate对象中,最后调用了RxJavaPlugins.onAs

2022-04-29 14:02:01 148

原创 Android开发性能优化案例(2)app卡顿优化

DDMSsystraceTraceView关于过度绘制##正文##DDMSDDMS 的全称是Dalvik Debug Monitor Service,是 Android 开发环境中的Dalvik[虚拟机]调试监控服务以前用eclipse的时候,有个直接的入口可以打开DDMS,但是自从用了AndroidStudio,入口没了…但是其实在SDK目录内部还是有的.[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RbIyh3BN-1651120825330).

2022-04-28 12:40:44 186

原创 Android开发——LiveData实现原理

@NonNull Lifecycle.Event event) {//获取当前生命周期状态Lifecycle.State currentState = mOwner.getLifecycle().getCurrentState();//如果组件已销毁了,就移除观察if (currentState == DESTROYED) {removeObserver(mObserver);return;}Lifecycle.State prevState = null;while (prevState

2022-04-28 12:38:43 108

原创 Android应用冷启动过程分析和优化方案你了解多少

当应用中的 Activities 被销毁,但在内存中常驻时,应用的启动方式就会变为暖启动。相比冷启动,暖启动过程减少了对象初始化、布局加载等工作,启动时间更短。但启动时,系统依然会展示一个空白背景,直到第一个 Activity 的内容呈现为止。热启动 (Lukewarm start)相比暖启动,热启动时应用做的工作更少,启动时间更短。热启动产生的场景很多,常见如:用户使用返回键退出应用,然后马上又重新启动应用。启动时间从 Android 4.4 (API 19) 开始,Logcat 自动帮我们打印

2022-04-28 12:37:12 312

原创 Android常用adb命令

pm 列出手机所有的包名 pm list packagespm list packages 列出所有软件包pm list packages com.qq 列出包含com.qq的包安装/卸载 pm install/uninstall| 命令 | 说明 || :-- | :-- || pm install [options] path 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 | 将软件包(通过 path

2022-04-28 12:35:15 766

原创 Android动画的使用——补间动画

2、代码调用package com.wust.myanimation;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.view.ViewAnimationUtils;import android.view.animation.Animation;import android.view.animation.Animati

2022-04-28 12:33:32 108

原创 Android使用RecyclerView实现瀑布流

@Overridepublic void onBindViewHolder(MyViewHolder viewHolder, int i) {super.onBindViewHolder(viewHolder,i);Log.i(TAG, “onBindViewHolder:” + i);//竖直瀑布流if(isVertical){ViewGroup.LayoutParams params 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号

2022-04-28 12:31:12 1903

原创 Android人脸识别的初步学习

mBitmap = Application.decodeImage(mFilePath);src.set(0,0,mBitmap.getWidth(),mBitmap.getHeight());mSurfaceView = (SurfaceView)this.findViewById(R.id.surfaceView);mSurfaceView.getHolder().addCallback(this);view = new Thread(new Runnable() {@Overridepub

2022-04-28 12:29:06 195

原创 Android中调用系统所装的软件打开文件

* 根据文件后缀名获得对应的MIME类型。* @param file*/private String getMIMEType(File file) {String type=“*/*”;String fName = file.getName();//获取后缀名前的分隔符"."在fName中的位置。int dotIndex =&nbsp..

2022-04-28 12:27:25 406

原创 Android”挂逼”修炼之行

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MiLcdeAA-1651119910671)(https://user-gold-cdn.xitu.io/2018/9/14/165d7704b4a02956?imageView2/0/w/1280/h/960/ignore-error/1)]到这里我们会发现一个点就是支付宝内部有一个打印日志的类H5Log,他应该封装了系统打印日志的,我们先不管他内部怎么实现的,直接hook这个类的这个方法,通过一些日志来快速分析行为和得到我

2022-04-28 12:25:29 90

原创 Android——六大基本布局总结

相对布局RelativeLayout层布局FrameLayout绝对布局AbsoluteLayout网格布局GridLayout。其中,表格布局是线性布局的子类。网格布局是android 4.0后新增的布局。在手机程序设计中,绝对布局基本上不用,用得相对较多的是线性布局和相对布局。(一)线性布局LinearLayout线性布局在开发中使用最多,具有垂直方向与水平方向的布局方式,通过设置属性“android:orientation”控制方向,属性值垂直(vertical)和水平(horizont

2022-04-28 12:23:46 775

原创 Flutter 布局控件完结篇

定位控件:Container、Align、Center、FittedBox、Baseline、Transform。尺寸控件:Container、FittedBox、AspectRatio、ConstrainedBox、FractionallySizedBox、IntrinsicHeight、IntrinsicWidth、LimitedBox、SizedBox、SizedOverflowBox。绘制控件:Container、Padding、Offstage、OverflowBox、SizedOverfl.

2022-04-27 14:03:13 289

原创 Flutter 与 Compose怎么选?小孩子才做选择

study523312希望这份资料可以给希望了解、学习、应用Android Jetpack Compose的小伙伴一个参考。[](()[](()第一章 初识 Jetpack Compose为什么我们需要一个新的UI 工具?Jetpack Compose的着重点加速开发强大的UI工具直观的Kotlin APIAPI 设计Compose API 的原则一切都是函数顶层函数(Top-level function)组合优于继承信任单一来源深入了解Compo

2022-04-27 14:00:57 290

原创 Flutter Android 工程结构及应用层编译源码深入分析

================================================================================下面我们从纯 Flutter 项目的 app 编译安卓端 apk 流程说起。[](()settings.gradle 源码流程分析既然是安卓的编译流程,那就先从android/settings.gradle看起,如下:// 当前 app moduleinclude ‘:app’/**1、读取android/local.proper

2022-04-27 13:56:47 687

原创 EventBus使用详情总结

System.out.println(“running 1 MianActivity”);Inte 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 nt intent = new Intent(getApplicationContext(),SecondActivity.class);startActivity(intent);}});}// //第一个接收数据// public void onEvent

2022-04-27 13:55:16 223

原创 cmake使用教程(七)-流程和循环

形式如下:if(expression)then section.COMMAND1(ARGS …)COMMAND2(ARGS …)#…elseif(expression2)elseif section.COMMAND1(ARGS …)COMMAND2(ARGS …)#…else(expression)else section.COMMAND1(ARGS …)COMMAND2(ARGS …)#…endif(expression)此处有一点注意:else和endif中的表达式是可

2022-04-27 13:52:56 152

原创 App相互唤醒的几种方式

intent1.putExtras(bundle1);intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent1);在Se 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 rver端提取数据也很简单Bundle bundle = getIntent().getExtras();2. 隐式跳转,UriAndroid中唤起拨号页面是这样的Int

2022-04-27 13:50:56 246

原创 Android面试主题整理合集(三)

//next传到当前节点,当前节点处理好request后就可以通过next执行proceed方法,将request传递到下一节点Interceptor interceptor = interceptors.get(index);Response response = interceptor.intercept(next);return response;}}拦截器public class BridgeInterceptor implements Interceptor{@Overridep

2022-04-27 13:47:22 41

原创 Android转战Web前端,靠着这份面试题和答案,一举拿下京东offer

[](()找工作的这一个月海投的这个月,感慨颇多。说一下我的大致经历,坐标深圳。社招里,“没有前端经验”这几个字,就基本可以被大部分公司鄙视掉了,公司招没有经验的应届生就可以了。9月中旬,同时内推到BAT。过了两个工作日,腾讯通知我即将进入面试安排阶段,结果一直没有消息。或许这家企业在成为最受尊敬的公司之 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 前,要先成为最让人惦记的公司。内推到阿里和百度时,简历很快被刷,也是意

2022-04-27 13:45:40 191

原创 Android自定义View——从零开始实现书籍翻页效果

简单总结一下,a是触摸点,f是触摸点相对的边缘角,eh我们设置为af的垂直平分线,则g是af的中点,ab、ak、dj是直线;曲线cdb是起点为c,控制点为e,终点为b的二阶贝塞尔曲线;曲线kij是起点为k,控制点为h,终点为j的二阶贝塞尔曲线,区域A、B、C就由这些点和线划分开来。我们将这些点称为标识点,下一步就是模拟设定a和f点的位置,将这组标识点绘制到屏幕上来验证我们的计算公式是否正确,创建BookPageViewpublic class BookPageView extends View {pri

2022-04-27 13:41:08 860

原创 Android组件化——SXRecyclerView

}@Overridepublic boolean onActionItemClicked(ActionMode mode, MenuItem item) {return true;}@Overridepublic void onDestroyActionMode(ActionMode mode) {}});这里的多选模式是与ActionMode进行绑定交互的,具体的实现可以参考下demo。默认情况下,所有的ItemView都是可以被选中的。如果要让某些项不可选中,除了前文提到的重写Adap

2022-04-27 13:39:27 71

原创 Android: AndroidKeyStore 对数据进行签名和验证

/**自己给你的别名 就是SAMPLE_ALIAS*/private static String mAlias = null;public static void setAlias(String alias) {mAlias = alias;}/**创建一个公共和私人密钥,并将其存储使用Android密钥存储库中,因此,只有这个应用程序将能够访问键。@param context@throws InvalidAlgorithmParameterException

2022-04-26 23:21:50 344

原创 Android高工:okhttp原理详解,搞懂了直接去虐面试官

当连接池中有连接时:清理任务由cleanup()方法完成,首先执行清理,并返回下次需要清理的间隔时间,调用调用wait() 方法释放锁。等时间到了以后,再次进行清理,并返回下一次需要清理的时间间隔,再次进入wait,以此循环往复。当连接池中没有连接时:cleanup()返回-1,跳出循环,下次有连接加进来时,再次开启线程进行循环清理。之所以连接池线程可以跳出循环,是因为,他是子线程,而looper选择一直阻塞是因为他是主线程,如果跳出,程序执行结束。首先统计空闲连接数量;然后通过for循环

2022-04-26 23:19:30 453

原创 android音乐播放器开发在线加载歌词

如果没有本地歌词怎么办?现在来将一下加载在线歌词。好了,还是用那张图。在实现这个功能的时候,lz尝试过baidu api,歌词迷api,后来选用了歌词迷api,虽然还是资源不全,而且还有很多错误。特别头疼的是有时候歌词居然不分行,解析起来简直难受。歌词迷api歌词查询地址:[http://geci.me/api/lyric/](()比如我要查询:   [http://geci.me/api/lyric/安静/周杰伦](()会得到一下json串:{“count”: 2, “co

2022-04-26 23:17:30 1107

原创 Android面试题精选:关于-Handler-面试官问了我什么

消息的读取也是同理,也会拿当前的 MessageQueue 对象作为锁对象,来保证多线程读写的一个安全性。5.我们使用 Message 时应该如何创建它?答:创建的它的方式有两种,一种是直接 new 一个 Message 对象,另一种是通过调用 Message.obtain() 的方式去复用一个已经被回收的 Message,当然日常使用者是推荐使用后者来拿到一个 Message,因为不断的去创建新对象的话,可能会导致垃圾回收区域中新生代被占满,从而触发 GC。Message 中的 sPool 就是用

2022-04-26 23:16:00 755

原创 Android面试必问之Binder进程间通信机制,大厂喜欢从哪些角度考你呢?看完这篇你就懂啦

static struct miscdevice binder_miscdev = {.minor = MISC_DYNAMIC_MINOR, //自动分配次设备号.name = “binder”, //驱动名称.fops = &binder_fops //binder 驱动支持的文件操作}binder_fops 为 Binder 设备支持的操作函数,如下:static const struct file_operations binder_fops = {.owner = THIS_

2022-04-26 23:13:58 276

原创 Android进阶——Android跨进程通讯机制之Binder

reply.writeString(DESCRIPTOR);return true;}case TRANSACTION_basicTypes: {data.enforceInterface(DESCRIPTOR);int _arg0;_arg0 = data.readInt();long _arg1;_arg1 = data.readLong();boolean _arg2;_arg2 = (0 != data.readInt());float _arg3;_arg3 = data.

2022-04-26 23:12:17 309

空空如也

空空如也

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

TA关注的人

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