自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android-Studio下的JNI开发:NDK的配置,kotlin数组长度

● 在菜单栏找到"File"-“Settings”,打开设置界面;● 找到"Appearance & Behavior"-“System Settings”-"Android SDK"选项,然后切换到"SDK Tool"选项卡;● 然后找到NDK打钩;● 点击"Apply"按钮,然后在弹出窗口中点击"OK",即可自动下载;● 等待自动下载安装完成,点击"Finish"按钮完成安装。如下图所示:Android Studio默认安装ND

2022-02-05 10:56:48 3296

原创 Android-Handler机制详解,androidstudio电子书

答:Android在设计的时候,封装了一套消息创建,传递,处理机制,如果不遵循这样的机制就没法更新UI信息,就会抛出异常。3、handler怎么用?答:1.post(Runnable)2.postDelayed(Runnable,long)3.sendMessage4sendMessageDelayed4、Android为什么要设置只能通过Handler机制更新UI?答:最根本的问题是解决多线程并发的问题假设如果一个activity中,有多个线程去更新UI,并且都没有加锁机制,那么会产生什么

2022-02-05 10:55:22 362

原创 Android-DataBinding-从入门到进阶,颠覆认知

public class GoodsHandler {public void changeGoodsName() {goods.setName(“code” + new Random().nextInt(100));goods.setPrice(new Random().nextInt(100));}public void changeGoodsDetails() {goods.setDetails(“hi” + new Random().nextInt(100));goods.setPric

2022-02-05 10:53:58 344

原创 Android---性能优化方案分享,kotlin随机数

一、插桩插桩需要使用到 Debug 类,并且会在 sdcard 中生成 .trace 文件,所以你必须首先保证你的应用具有写外部存储( WRITE_EXTERNAL_STORAGE )的权限。在想要跟踪的代码逻辑开头和结尾处分别插桩:// Starts recording a trace log with the name you provide. For example, the// following code tells the system to start recording a .tra

2022-02-05 10:52:32 3669

原创 Android 面试:事件分发8连问,androidrom移植

} else {return dispatchGenericMotionEvent(event);}}1.经过层层回调会调用到mView.dispatchPointerEvent2.我们知道ViewRootImpl中的mView就是DecorView现在事件已经传递到了DecorView,也就是我们界面的根布局接下来是事件在Activity,Window,DecorView中的传递2.4 事件在Activity,Window,DecorView中的传递//DecorView.java@O

2022-02-05 10:51:07 2794

原创 android 计算地图上两点距离的算法,2021大厂Android面试集合

private DistanceComputeImpl(){}@Overridepublic double getDistance(double lat1, double lng1, double lat2, double lng2) {GeoPoint p1LL = new GeoPoint((int) (lat11e6), (int) (lng11e6));GeoPoint p2LL = new GeoPoint((int) (lat21e6), (int) (lng21e6));double

2022-02-05 10:45:27 140

原创 Android 自定义View之随机数验证码(仿写鸿洋),深入理解Nginx

R.styleable.RandomTextView_randomTextSize,TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 16F, resources.displayMetrics ).toInt())//获取完回收typedArray.recycle()paint.textSize = mRandomTextSize.toFloat()//返回文本边界,即包含文本的最小矩形,没有所谓“留白”,返回比measureText(

2022-02-05 10:44:03 128

原创 Android 开发艺术探索笔记(10),flutter开发文档

View的绘制流程是从ViewRoot的performTraversals开始的,它经过三大流程制作出View。流程如下图所示:performMeasure调用了measuer方法,又调用了onMeasure方法对所以子元素测宽高,然后measure从父容器传递给了子容器,子容器又调用onMeasure方法,这样一直下去就遍历完了View树。然后Layout和Draw和上述流程类似,只是Draw的分发用的是DispatchDraw来完成的。measure通过getMeasureWidth和getMea

2022-02-04 11:42:14 104

原创 Android 开发之深入浅出 NavigationUI,轻松拿到了阿里Android高级开发工程师的offer

<itemandroid:id="@id/donutList"android:icon="@drawable/donut_with_sprinkles"android:title="@string/donut_name" /><itemandroid:id="@id/coffeeList"android:icon="@drawable/coffee_cup"android:title="@string/coffee_name" />现在 MenuItem&

2022-02-04 11:40:50 206 1

原创 android 底部标签栏CommonTabLayout搭建项目底部菜单(带消息提醒)

View tab = mTabsContainer.getChildAt(i);canvas.drawLine(paddingLeft + tab.getRight(), mDividerPadding, paddingLeft + tab.getRight(), height - mDividerPadding, mDividerPaint);}}// draw underlineif (mUnderlineHeight > 0) {mRectPaint.setColor(mUnderl

2022-02-04 11:37:59 491

原创 Android 屏幕适配之dimens适配,有了这些中高端面试专题-大厂还会远吗

1.5px3px4.5px6px省略若干行…1918.5px1920pxvalues-2560x1440文件夹下面的dimens.xml文件就应该是这样的:2px4px6px8px省略若干行…2558px2560px其实主要的分辨率就这三种,至于低于1280x720的分辨率的手机配置太低了,不在我们项目的适配考虑之内(如果需要适配建立对应的dimens文件即可)/**@param context@return 获取屏幕原始尺寸高度,包括虚拟功能键高度*/p

2022-02-04 11:32:19 138

原创 Android-WebView4,android中常见的面试题

compile ‘com.hjhrq1991.library.tbs:tbsjsbridge:1.0.0’添加权限在你的布局上添加TbsBridgeWebView<com.hjhrq1991.library.tbs.TbsBridgeWebViewandroid:id="@+id/webView"android:layout_width=“match_parent”android:layout_height=“match_parent” />JsBridge的使用

2022-02-03 15:05:16 831

原创 Android-Universal-Image-Loader异步加载图片框架学习研究

// Initialize ImageLoader with configurationImageLoader.getInstance().init(config);3、创建图片显示选项:DisplayImageOptions options(根据不同的加载图片显示不同而构造不同的选项,主要配置图片加载过程中显示配置,缓存,显示动画);DisplayImageOptions options;options = new DisplayImageOptions.Builder().showStubIm

2022-02-03 15:03:50 166

原创 Android-Rxjava-:最简单&全面背压讲解-(Flowable),安卓面试题初级

public void onNext(Integer integer) {try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}Log.e(TAG,"onNext : "+(integer));}@Overridepublic void onError(Thro

2022-02-03 15:01:01 514

原创 Android与Flutter混合开发,三面蚂蚁金服成功拿到offer

startActivity(FlutterActivity.withNewEngine().initialRoute(“params”).build(xxxxActivity.this));其中initialRoute是Android跳转到flutter需要的参数,非必需。 在flutter接收参数如下…class _MyHomePageState extends State {String route = window.defaultRouteName;…}window.defaultR

2022-02-02 13:33:10 191

原创 Android不错的图片压缩方法,圆我大厂梦

/**质量压缩方法@param image@return*/public static Bitmap compressImage(Bitmap image) {ByteArrayOutputStream baos = new ByteArrayOutputStream();image.compress(Bitmap.CompressFormat.JPEG, 100, baos);// 质量压缩方法,这里100表示不压缩,把压缩后的数据存放到baos中int options

2022-02-02 13:31:45 806

原创 AndroidAnnotation,flutter扫描二维码

}8.@FragmentArg:用来给当前Fragment接收别的地方传来的数据,给myfragment传递一个参数@EActivity(R.layout.activity_main)public class MainActivity extends Activity {@ViewById(R.id.btn)public Button btn;@Click(R.id.btn)void myClick(){MyFragment fragment = new MyFragment_();Bun

2022-02-02 13:30:20 657

原创 Android-自定义标题栏,含泪狂刷Android基础面试118题

效果图:代码下载:http://download.csdn.net/detail/wwj_748/7249585/02_CustomTitle/res/layout/constom_title.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”android:layout_width=“match_par

2022-02-02 13:28:55 78

原创 Android-框架问题分析案例---谁杀了桌面-,架构师必备技能

}}对源码比较熟悉的同学可以很快知道 , AMS.killBackgroundProcesses 这个接口会提供给三方应用去调用 , 其 Binder 的客户端在 ActivityManager.killBackgroundProcesses 这里ActivityManager.killBackgroundProcesses/**Have the system immediately kill all background processes associatedwith the given

2022-02-02 13:27:30 998

原创 Android-常用开源框架源码解析-系列-(零)引言,flutter蓝牙模块

GPL协议严格的要求使用了GPL类库的软件产品必须延用GPL协议,所以商业软件或是对代码有保密措施要求的部门就不适合 集成/采用做为类库 和二次开发的基础LGPL 许可证LGPL是GPL的一个为主要类库使用设计的开源协议。LGPL与GPL最大的不同就是LGPL允许商业软件通过类库引用方式使用LGPL类库而不需要开源商业软件的代码。也就是说使用了LGPL协议的源代码可以进行商业通途的发布和销售需要注意的是修改了LGPL协议的代码或是衍生,在所有修改的代码、涉及修改部分的额外代码及衍生都必须采用

2022-02-02 13:26:05 376

原创 Android-图片加载框架-Glide-4-9-0-(二)-切入源码层深入分析-Glide-缓存策略

}return hashCode;}…}复制代码根据注释和代码可以看到传入的参数之多,主要是根据 url ,签名,宽高等,其内部重写了 hashCode,equals,来保证对象的唯一性。内存缓存通过下面代码开启内存缓存,当然 Glide 默认是为我们开启了内存缓存所以不需要我们调用 skipMemoryCache//在 BaseRequestOptions 成员变量中默认为内存缓存开启。private boolean isCacheable = true;//调用层调用Glide.

2022-02-02 13:23:15 246

原创 Android人脸识别的初步学习,移动端开发技术创新

根据readme中的内容修改项目。呀,报错了…面对看不懂的错误,我们就…百度…经过一番艰难险阻,我们的demo终于运行起来了,如下图所示:然而,当我一次又一次注册人脸,无论是网络上找到明星的照片,还是直接拍摄的图片,甚至是表情包,都检测不到人脸…我已经开始怀疑人脸长什么样子了…由于时间精力有限…我们直接进入源代码的阅读…Demo代码的阅读===================================================================1. 代码组成人

2022-01-31 13:19:16 4425 2

原创 Android事件分发机制:面试官你坐啊,android0基础

第三步是派发事件,如果存在TouchTarget,说明找到了消费事件序列的子view,直接分发给他。如果没有则交给自己处理。面试官:你前面讲到“一个触控点的一个事件序列只能给一个view处理,除非异常情况”,这里有什么异常情况呢?如果发生异常情况该如何处理?这里的异常情况主要有两点:1.被viewGroup拦截,2.出现界面跳转等其他情况。当事件流中断时,viewGroup会发送一个ACTION_CANCEL事件给到view,此时需要做一些状态的恢复工作,如终止动画,恢复view大小等等。.

2022-01-31 13:17:51 78

原创 Android事件分发机制抽象--钓钩模型,高级Android开发技术

▼ ▼ ▼提问,谁不会呢?张嘴就能来,但我们需要的是能检验出水平高低的那种。这就不禁让我想到了工作中令人难忘的事–写线上故障 CaseStudy ,相信亲身经历过的小伙伴一定忘不了直击灵魂深处的 “5 Whys”(针对问题的原因层层递进问 5 个为什么,差不多也就从事物的表象深入到了本质)。当然,我们没必要老是跟自己过不去。差不多问 3 个就行了。问题呢,也不能太啰嗦,大道至简,最好能从最 “简单” 的问题来接近事物的本质。我尝试构造一个简易场景来推演三个大问题和几个小问题,帮助自己理解精进事件分发

2022-01-31 13:16:26 90

原创 Android之GestureDetector-简单手势操作及通过手势缩放图片

@Overridepublic void onShowPress(MotionEvent e){Toast.makeText(this, “onShowPress”, Toast.LENGTH_SHORT).show();}@Overridepublic boolean onSingleTapUp(MotionEvent e){Toast.makeText(this, “onSingleTapUp”, Toast.LENGTH_SHORT).show();return false;}}上

2022-01-31 13:15:01 233

原创 Android中使用OpenCV(二),成功入职网易月薪35K

*/public static final String OPENCV_VERSION_2_4_6 = “2.4.6”;/**OpenCV Library version 2.4.7.*/public static final String OPENCV_VERSION_2_4_7 = “2.4.7”;/**OpenCV Library version 2.4.8.*/public static final String OPENCV_VERSION_2_4_8 = “2.4.8”

2022-01-31 13:13:36 151

原创 Android——Intent,flutter文字识别

下面就是代码部分:首先在AndroidManifest.xml中设置一下权限(在application外设置):使用intent调用打电话功能:先在中activity_main.xml新建一个按钮<Buttonandroid:id="@+id/button"android:layout_width=“match_parent”android:layout_height=“wrap_content”android:text=“拨打电话”/>MainActivity....

2022-01-31 13:10:47 310

原创 Android—adb命令大结局,androidstudio开发教程

adb shell input tap x y21、发送按键adb shell input keyevent 82(keycode)22、输入文本adb shell input text XXXX23、查看报名中包含mobileqq的进程adb shell ps | findstr mobileqq24、远程进程IDadb jdwp25、获取序列号adb get-serialno26、重启到bootloader,即刷机模式adb reboot bootloader27、重启到rec

2022-01-31 13:09:22 195

原创 Android~LiveData原理,Android经典入门教程

void dispatchingValue(@Nullable ObserverWrapper initiator) {if (mDispatchingValue) {mDispatchInvalidated = true;return;}mDispatchingValue = true;do {mDispatchInvalidated = false;if (initiator != null) {considerNotify(initiator);initiator = null;

2022-01-31 13:07:57 148

原创 android8,搜狐新闻客户端android面试题

#define LOG_TAG “usb-Camera”#define LOG_NDEBUG 0#include <hardware/camera3.h>#include <camera/CameraMetadata.h>#include <utils/misc.h>#include <utils/Log.h>#include <hardware/gralloc.h>#include <ui/Rect.h>#includ

2022-01-31 13:06:32 758

原创 Android应届生,靠什么拿到的今日头条、携程双offer,android开发平台

自我介绍abstract和interface区别int和Integer区别四种引用Java里面int、char、long的字节数线程的创建方式RxJava的优缺点EventBus从网络上加载一个10M的图片,要考虑哪些http与httpshttp 1.0 和 http 2.0之间的区别设计模式准则Handler机制算法:判断一个链表是否回文算法,给定一个数组,将数组里面的每一位向后移动k位网易游戏网易游戏当时投的时候就没抱希望,招聘信息上明确指定只招固定的那几所985高校.

2022-01-30 14:38:43 1388

原创 Android应届生,靠什么拿到的今日头条、携程双offer(1)

handler(基本原理,ThreadLocal原理和使用)四大组件(问了生命周期和特点和基本使用)* 计网TCP和UDPHTTP建立过程二面问的都是一些项目问题,比较宽泛,没问具体技术点今日头条今日头条是在三月底投的,当时找了一个月,都没拿到拿得出手的offer,有点心烦意乱,就又海投了一波。3.24做了今日头条的面试,3.29进行的视频面试。一共进行了3轮视频面试,头条的面试官很好,看得出来头条的技术是很强的,也很注重算法。最终拿到offer。一面数据结构中堆的概念,堆排.

2022-01-30 14:37:17 150

原创 Android客户端HTTP请求服务端Servlet,androidapp保活

新建LoginServlet,如果报错,自行导入servlet库(项目属性->Build Path->add Libraries),安装了tomact也有这个。查看配置文件,位于项目根目录WEB-INF/web.xml,确保有url映射。LoginServlet/servlet/LoginServlet3,写服务端代码,根据参数返回jsonpublic class LoginServlet extends HttpServlet {public void doGet(HttpSe

2022-01-30 14:35:52 369

原创 android基于类装载器DexClassloader设计“插件框架”,kotlin入门到精通pdf

}@SuppressLint(“NewApi”) private void useDexClassLoader2(){//创建一个意图,用来找到指定的apkIntent intent = new Intent(“com.suchangli.android.plugin”, null);//获得包管理器PackageManager pm = getPackageMan..

2022-01-30 14:34:27 167

原创 Android中RelativeLayout和LinearLayout性能分析,意外的惊喜

}}}if (isWrapContentHeight) {if (targetSdkVersion < Build.VERSION_CODES.KITKAT) {height = Math.max(height, params.mBottom);} else {height = Math.max(height, params.mBottom + params.bottomMargin);}}if (child != ignore || verticalGravity) {left

2022-01-30 14:25:58 215

原创 Android开发五年,从月薪13K到年薪60W,我只用了三个月

在这样的环境下,我获得了字节跳动等多家大厂的offer,薪资都是60W+,下面说一下,凭什么我可以在内卷和寒冬之下获得这些offer。平平无奇的我个人背景很平凡,农村出身,普通二本毕业,快五年的Android开发经验。此前,我的工作一直是不温不火的状态,不是最底层的,也不是突出的:普普通通的一个小厂,普普通通的工资(13K+),生活节俭,也能住着差不多的房子,开着差不多的车子,平平淡淡。我个人并不是那种有着雄心壮志的人,只想安安稳稳过自己的小日子。但是……天不遂人愿。一波三折——说一下我的面试经

2022-01-29 14:32:50 322 3

原创 Android开发了解这些,自然无惧面试,android编程权威指南

下面笔者将根据自己多年的 Android 开发从业经验,来具体分析下这个领域内的知识体系,帮助初学者快速入门。同时我也将分析市面上领先企业的业务需求,从而得出已经进入这个领域的工程师,该如何提高自己的核心竞争力!实际上在开发 Android 的过程中,需要很多知识,而有些知识也很难为其分类,但是总体上来讲可以分为上述五部分。首先—UI 方面,如果你将来的工作是开发 Android 应用的话,UI 的知识你是必不可少的。UI 的知识大体也可以分成三部份——基础控件、自定义控件、动画。其中每个部分几乎都

2022-01-29 14:31:25 158

原创 Android开发5年,怎么样通过自学拿到40W年薪的?,看完吊打面试官

如果你的知识是一个圆,当你的圆越大时,最近看到很多Android小伙伴问我Android如何进阶提高?有没有一个比较合适的发展路线 或者是方向?其实具体的方向还真的不好说,因为我能爬到现在的这个位置,很多时候靠的是对市场的敏感度。但是殊途同归,这里我以我的工作经验,给大家一个正确的方向参考,希望可以让更多人少走弯路。##搭建知识框架技术人第一步,必先从搭建知识框架开始!,这个知识框架就好比盖一座房子,它就相当于房屋的整个蓝图,能让你整体看到是个什么样子的,自己在心里也有个数,知道自己以后该往哪地方发力

2022-01-29 14:28:35 92

原创 Android应用开发--MP3音乐播放器界面设计(2),0基础学android

android:layout_alignParentTop=“true”android:src="@drawable/item" /><TextViewandroid:id="@+id/music_duration"android:layout_width=“wrap_content”android:layout_height=“wrap_content”android:layout_alignParentRight=“true”android:layout_alignParent

2022-01-29 14:27:10 985

原创 Android应用-猜数字小游戏,android学习资料

@Overridepublic void onClick(View v) {FragmentManager fm = getSupportFragmentManager();FragmentTransaction transaction = fm.beginTransaction();resetLinearLayout();switch (v.getId()){case R.id.llay_guess:if (fm_guess == null){fm_guess = new GuessFr

2022-01-29 14:22:54 224

空空如也

空空如也

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

TA关注的人

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