自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (9)
  • 收藏
  • 关注

原创 Android开发 自定义底部可拖拽滑动浮层控件及原理解析

先看效果图:了解完Android开发 View的生命周期结合代码详解和一张流程图带你完全搞懂Android的View事件分发机制并结合源码详解完全可以实现本篇自定义底部可滑动浮层控件。实现步骤:1.xml中写入SlideNormalView自定义控件: <com.example.floatlistview.slide.SlideNormalView android:id="@+id/slide_float_view" android:layo

2020-11-25 14:13:27 3554 7

原创 Android动画View的setX跟setTranslationX区别结合源码解析

以TextView为例我们看看,先看一下我的xml: <TextView android:id="@+id/tv_test" android:layout_width="200dp" android:layout_height="50dp" android:layout_marginLeft="20dp" android:text="Test"/>看一下原图:然后我们调一下setX看看:

2020-10-12 17:17:31 5221 4

原创 Android H5交互Webview实现localStorage数据存储

先看看效果图吧实现比较简单,但是第一次用可能会遇到一些坑首先得有Webview控件:有人问我是不是需要写布局文件,不写行不行,现在我就告诉你们,不写没问题,需要写就写不写直接创建New一个也行。 下面我就介绍一个,我new一个Webview实现localStorage。 WebView mywebView = new WebView(this); mywebView....

2017-09-08 13:39:54 31895 6

原创 如何解决MediaPlayer播放音频时,出现“无法播放该文件”、“播放失败”等错误消息的问题?

MediaPlayer是Android平台上用于播放音频和视频文件的类,它提供了各种功能和方法,可以方便地实现多媒体播放功能。如何使用的基础功能功能在这里就不讲了可以移步到,在本篇博客中,我们讲如何解决MediaPlayer播放音频时,出现“无法播放该文件”、“播放失败”等错误消息的问题。

2023-06-03 13:29:06 3133

原创 解决项目中遇到重复引用依赖冲突问题

The application could not be installed: INSTALL_FAILED_CONFLICTING_PROVIDERCan't install because provider name ****

2022-06-01 22:06:34 3319 3

原创 AndroidStudio gradle 编译发现阿里云镜像找不到对应jar包https://maven.aliyun.com/nexus/content/repositories/jcenter

https://maven.aliyun.com/nexus/content/repositories/jcenter

2021-12-15 20:51:17 3991

原创 字节跳动面试题:三个线程a、b、c,按顺序循环输出1~100个数

方案一:循环栅栏锁方案二:自旋锁

2021-12-10 10:04:50 2764

原创 Android开发 算法一个数组向右平移K

题目描述一个数组向右平移k后得到一个新的数组,例如:数组[1,2,3,4,5,6,7]向右平移k为1,得到新数组[7,1,2,3,4,5,6];向右平移k为3得到新数组[5,6,7,1,2,3,4];今天又面试了算法题这么简单的算法离开开发工具,裸写竟然如此丢人,各种错误,先看正确代码:int[] ns = {1, 2, 3, 4, 5, 6, 7};List ls = Arrays.stream(ns).boxed().collect(Collectors.toList());System.

2021-03-16 16:04:07 211

原创 Android开发 美团算法面试判断给定的链表中是否有环

题目描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。 你能给出空间复杂度O(1)的解法么?  这道算法题在面试的时候,我居然没整出来,真是悲剧,今天我就来把他写出来,大家一起看看。  先来看看怎么写出一个循环链表吧,只有知道怎么来的才知道怎么解决这个算法对吧,首先是准备好class类:static class ListNode { public ListNode next; public int val; public ListNode(int

2021-03-16 15:30:02 151 1

原创 Android开发 面试题2021年干货汇总解答(三)

​目录Java内存模型(JMM)同步锁synchronizedJVMGC回收机制数据库升级上一篇 Android开发 面试题2021年干货汇总解答(二)Java内存模型(JMM)  前面两章讲了进程和线程这回讲讲Java内存模型,Java内存模型就是控制Java线程之间通信,定义各个变量的访问规则。在Java内存模型中划分了主内存和本地内存,大家都知道线程之间通信才有共享内存指的就是主内存,每个线程又都有自己的本地内存。同步锁synchronized  别错过哦后面还有更精彩 An

2021-03-08 14:04:50 139 1

原创 Android开发 如何选择线程类来提升性能

  线程其实是Android开发的一个重要模块,我相信大家可能平时用到多选线程情况并不多或者都用的是别人的第三方框架,当然都说了这是一个非常重要的模块所以大家还是需要掌握的毕竟面试也会被考的,我在Android开发 面试题2021年干货汇总解答(一)和Android开发 面试题2021年干货汇总解答(二)中都提到过线程相关的考点,今天我们来看看谷歌为我们提供了哪些实现线程类。HandlerThread 类  我之前在Android开发 面试题2021年干货汇总解答(一)的线程栏目中提到过谷歌推荐我们使用

2021-03-05 16:17:16 174

原创 Android开发 面试题2021年干货汇总解答(二)

上一篇Android 常见面试题详细解答(一)1.AsyncTask异步加载  上一期讲了可以用Handler消息机制实现子线程刷新UI,当然处理这一复杂场景Google为我们提供了更好的解决方案就是扩展 AsyncTask类,此类可简化与界面进行交互所需执行的工作线程任务。private class MyAsyncTask extends AsyncTask<Params, Progress, Result> { @Override protected Result doInBac

2021-03-03 14:01:26 206 2

原创 Android开发 AndroidStudio数据库可视化

  相信大家做Android开发或多或少会遇到一些项目中需要用到数据库,过去咱们用了数据库想要实时查看自己创建的数据库中数据比较费劲,要从Device File Explorer中导出数据库文件再第三方软件中查看这样也行不过就是不能立即查看需要导出文件:...

2021-02-25 11:20:46 4262

原创 Android开发 面试题2021年干货汇总解答(一)

“ 金三银四,又是一年跳槽季,关注我也许面试中你遇到的难题在这里有你想要的解答。”1.什么是Activity  Activity是四大组件之一,其他三大组件:service、BroadcastReceiver、ContentProvider;2.Activity的生命周期  onCreate()——》onStart()——》onResume()——》onPause()——》onStop()(——》onRestart()——》onStart())——》onDestroy()3.Service两种启动

2021-02-23 14:32:11 2576 4

原创 Android开发 面试必问的Handler消息机制

最近项目提测了也闲了下来看到Handler就想起面试必问,Handler机制相信大家每个人面试的时候都被问到吧,就来总结一下看看,话不多说先看流体图:这个流体图应该已经把整个Handler消息机制的流程都涵盖了,应该算是很直观了吧,首先最外层我写了Thread.currentThread(),这说明了一个线程里有且仅有一个Handler消息机制,所以大家应该注意如果在子线程中使用Handler应该要如下写法: @Override public void run() {

2021-02-19 15:26:31 2563 6

原创 分享郑州买房流程与需要手续

今天分享一下我的买房流程也算是记录我的买房经历吧,我说2018年9月28日在郑州购买的郑州中原宸院一期的房子单价是13768元/平:说实话现在回头看看这个价格在郑州的确不便宜,现在的郑州房价都降了不少,听说二期最后都降到1w/平,不过这个价格在当时我购买的时候已经算是比较便宜的了,因为我去转了好几家都是单价1.5w/平左右,相比较来看也就1.3w/平算是便宜点的了。现在想想这个价格和这个房贷利率都是最高的时刻还是蛮不情愿的,不过虽然价格和房贷利率都是最高的,但是小区的位置在双地铁附近最近的一个只有5

2021-01-11 17:49:32 1105 2

原创 分享郑州买房后转LPR贷款利率带来的效益

我是2018年9月份买的房子,2018年12月办理的贷款,当时还没有LPR而且贷款利率是最高的上浮了30%,也就是6.37%,一个月的月供五千三百多,对于一个工薪族来说这不是一个小数字但还是买了,买了之后才发现月供确实有点太高了,去掉月供再去掉房租2500也存不了多少钱,在想想日后的还在奶粉钱、车贷、房子装修突然感觉压力有些大了,于是2020年3月份银行开始出台转换LPR贷款利率,当时我毫不犹豫就换了,实际上当时我并没有完全搞清楚LPR到底是个什么东西,就想博一次它日后会降,我当时在想贷款利率已经这么高了即

2021-01-08 10:12:03 394 1

原创 Android开发 如何使用差分算法实现diffpatch增量更新依赖库支持新建四大组件

在当代App应用大小不断增大的情况下增量更新代替全量更新已是趋势,可以节省许多用户流量;傻瓜试实现增量更新,一键依赖diffpatch增量更新库直接使用超级简单,无需自己实现。实现原理,首先使用差分算法bsdiff计算出差分包,感兴趣的可以自己点击进去下载源码,然后就是使用bzip2压缩工具打包生成补丁差分包文件和合并补丁包文件;由于这里提供的都是C语言程序所以我们需要借助NDK/JNI实现增量更新了。

2020-12-14 16:24:13 1846 4

原创 Android组件化设计与实现结合代码详解并总结优缺点

ARouter简介组件化其实就是一个主组件连接着其他多个组件组合成一个APP实现高类聚低耦合开发。项目比较大时使用组件化可根据功能划分模块独立开发减少对原有代码改动量可避免改动影响其他功能,各个组件独立开发可以减少代码冲突量,项目比较大运行项目时经常出现重新编译时比较耗时短的三到五分钟跑一次项目,使用组件化独立运行可以大大减少开发等待时间。组件化开发推荐目前比较流行的ARouter框架,ARouter是由阿里开发团队开源的组件化框架,目前应用比较多,ARouter经过多年广大开发者测验并改进已经

2020-10-20 14:56:08 1363 6

原创 Android开发MVVM设计模式的实现及ButterKnife兼容结合源码详解并总结优缺点

MVVM设计模式主要是view通过中间件viewModel与model数据模型交互, 采用谷歌自带DataBinding 组件只需要在app.gradle开启就行:dataBinding { enabled = true}View布局文件xml:<?xml version="1.0" encoding="utf-8"?><layout xmlns:android="http://schemas.android.com/apk/res/android" x

2020-10-15 15:34:47 1826 9

原创 Android系统应用Launcher的启动流程结合源码详解

这篇主要讲解的是Launcher程序的启动流程至于Launcher前面的系统进程启动流程大家可以看看我的Android应用跟系统之间通信什么时候用Socket什么时候用Binder结合源码详解有介绍。好了进入咱们今天的主题Launcher,注意本篇系统源码是基于Android4.4版本(也就是下面AMS、PMS的源码),先看看Launcher启动入口在哪里其实就在SystemServer中: public static void main(String[] args) { new

2020-10-14 10:53:20 2138 5

原创 一张流体图带你完全搞懂Android的View事件分发机制并结合源码详解

首先咱们先看一下流程图:首先Activity中点击事件其实就是触发触摸事件,会调dispatchTouchEvent(MotionEvent ev),咱们先看一下Activity的源码: public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { onUserInteraction(); }

2020-09-25 18:02:42 2031 1

原创 Android开发 View的生命周期结合代码详解

咱们以TextView控件为例:/** * Created by SunshineBoy on 2020/9/23. */public class TestTextView extends android.support.v7.widget.AppCompatTextView { public TestTextView(Context context) { super(context); Log.e("TestTextView","TestTextView

2020-09-23 17:56:05 2019

原创 Android应用跟系统之间通信什么时候用Socket什么时候用Binder结合源码详解

讲解这个问题之前我们先来看看这个问题“为什么进程间不能直接进行通信,而需要借助Binder或者Socket通信”, 其实这个问题只要了解过虚拟机的同学大概都会明白怎么回事:由于在安卓系统中一个进程对应一个虚拟机对象,而在Java虚拟机对象中只存在一个堆区和一个方法区,并且被所有线程共享,所以能够直接通信的只有在虚拟机内部堆区和方法区,进程间通信属于虚拟机对象间通信不能直接通信,当然大家还应该明白一个机器只有一个虚拟机创建多个虚拟机对象来实现多进程也就是多应用。至于栈区、堆区、方法区各自存储的是什么,这就

2020-09-08 18:32:18 1878 2

原创 DCL(双重锁定检查)中Volatile的作用,如何防止反射实例化单例对象

介绍DCL单例模式之前,我们先了解一下volatile关键字:Volatile修饰符修饰的变量在编译器编译时确保本条指令不会因编译器的优化而省略。主要特征:保证了不同线程同时对变量修改时实时可见性,即一个线程修改了该变量,其他线程实时可见; 禁止指令重排序(尤为重要);DCL单例指令流程:为对象分配内存; 初始化实例对象; 为对象的引用分配内存;由于JVM为了优化指令,提高程序运行效率,允许指令重排序,如果JVM优化指令为1、3、2顺序执行,那么多线程同时执行任务时,如果指令3刚好

2020-09-08 15:32:11 600

原创 Android开发 常用排序算法

1、冒泡排序冒泡排序,数组从小到大排列,比较相邻的元素。如果第一个比第二个大,就交换他们两个。示例:/* * 冒泡排序 * 前后两个元素相比较,最大的往后排,每一轮都可以找到一个最大的元素 */ publicstaticint[] bubbleSort(int[] nums){ int temp =0;

2018-01-06 19:15:22 2385

原创 Android开发 APP进程启动原理

1、)首先Android系统启动的时候会启动一个应用程序管理服务PackageManagerService,这个服务主要是由SystemServer组件启动的,同时还有ActivityManagerService服务。不过通过源码你会发现在ActivityManagerService的构造函数中也初始化了BroadcastQueue、ProviderMap、ActiveServices、Activ

2018-01-06 19:05:56 394

原创 Android开发 内存优化(一)

1)OOM解析首先你要明白Android系统会为每一个应用程序创建一个Dalvik虚拟机实例然后创建一个进程接着创建主线程,这样就组成了一个应用。那么创建一个虚拟机就会考虑到为每一个虚拟机分配内存DalvikHeap size,不同性能手机内存大小分配不同,早期有些机器分配16M也有些是24M,当然DalvikHeap size是一个区间有它最大阈值(可使用adb命令进行查看最大分配内存:ad

2018-01-06 16:00:15 408

原创 Android开发 自定义签到积分+水波纹+侧滑抽屉

首先看看我的完整效果图吧,感兴趣的话欢迎继续往下阅读:这是一个自定义View,先说一下大体思路吧,主要使用Canvas绘画。在绘画之前我们先确定一下需要绘画的尺寸,首先获取一下默认宽高:·然后需要确定圆环的半径,需要默认高度的一半-圆环上的实心圆半径:接下来就要初始化一下开始画圆环的坐标位置和圆上的实心圆开始坐标位置:根据进度画圆弧,分成两部分,一部分背景弧度,...

2017-12-25 18:29:47 613

原创 Android开发 React Native项目创建及环境搭建

先来看一下RNDemo效果吧,这里不得不吐槽一下,说实话RN毕竟属于js性能没有原生流畅看一下效果就知道了: 首先你需要安装NodeJS,因为React Native(简称RN,后面我就都用RN称呼了)本身就是使用Javascript语言和React语言为基础的,后面你会发现所有文件都是以.js为后缀名的,所以需要NodeJS来编译文件,而且后面会介绍到,我们还需要使用Node命令来...

2017-10-24 09:53:14 863

原创 Android开发 Fiddler抓包工具简介

Fiddler是开发及测试常用的抓包工具,至于下载网上有很多自行百度搜索下载;下面介绍一下打开安装后的Fiddler设置属性:1、首先打开Fiddler菜单选项Tools—&gt;TelerikFiddler Options先从Https配置说起:第一种方式:取消勾选Capture Https第二种方式:同时勾选Decrypt Https traffic和Ignore server certifi...

2017-09-20 14:22:47 400

原创 Android开发 完全自定义悬浮可拖动view无需悬浮权限

一个自定义View的悬浮按钮Lib扩展性良好,悬浮布局可是配其他布局用到了震动所以需要震动权限,该权限已经添加到manifest但是6.0以上需要自己手动添加 <uses-permission android:name="android.permission.VIBRATE" />使用方法在layout布局文件根布局<?xml version="1...

2017-08-30 09:52:23 5407 2

原创 Android开发 Android Things介绍

Android Things 是谷歌新出的基于IOT智能物联网开发的系统,Android Things可搭载到32兆-64兆内存上,像智能门锁、智能空调、智能照明灯等轻量型智能家居设备使用此操作系统是非常方便的,所以该系统大大降低了对高内存消耗的需求,现在市场上的ARM基本上都在128以上,可想而知搭载了此系统运行起来应该还是非常流畅的。主要是该系统延续了Android系统是基于Android...

2016-12-16 15:06:05 6690 5

原创 Android开发 NFC技术开发(一)

概述 NFC是一套短距离的无线通信,通常距离是4厘米或更短。NFC工作频率是13.56M Hz,传输速率是106kbit/s 到848kbit/s. NFC总是在一个发起者和一个被动目标之间发生。发起者发出近场无线电波,这个近场可以给被动目标供电。这些被动的目标包括不需要电源的标签,卡,也可以是有电源的设备。与其他无线通信技术比较, 例如蓝牙和WiFi,NFC提供更低带宽和距离,并且低成本,不需要供

2016-12-14 15:24:36 1997

转载 Android开发 使用jni对字符串加解密实现分析

最近项目有个需求,就是要对用户的敏感信息进行加密处理,比如用户的账户密码,手机号等私密信息。在java中,就对字符串的加解密我们可以使用AES算法加密字符串,使用它的好处就不必多说了,但我们又知道android的源代码是可以被反编译的,所以使用纯Java方式的AES加密是不安全的,所以想到了使用android中的jni来对字符串加解密处理,它会产生一个.so文件,更重要的是它通过C/C++代码实现

2015-12-05 18:27:08 447

转载 Android开发 通过JNI实现JAVA与C/C++程序间的调用和回调

在一些Android应用的开发中,需要通过JNI和 Android NDK工具实现JAVA和C/C++之间的相互调用。       Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI是本地编程接口,它使得在 Java 虚拟机 (VM)内部运行的 Java代码能够与用其它编程语言(如 C、C++和汇编语言)编

2015-12-03 19:58:19 6469

转载 Android开发 数据库操作

android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作。 一、android内的数据库的基础知识介绍        1.用了什么数据库            android中采用的数据库是SQLite这个轻量级的嵌入式开源数据库,它是用c语言构建的。相关简介可以从链接查看。        2

2015-11-29 14:42:03 12330 1

原创 Android开发 NDK编程

Android NDK是一套允许开发人员将本地代码嵌入到Android应用程序的开发包,众所周知,Android应用程序运行在Dalvik虚拟机上,而NDK允许开发人员将Android应用程序中的部分功能用C/C++语言来实现,并将这部分C/C++代码编译成可直接运行在Android平台上的本地代码,这些本地代码以动态链接库(.so文件)的形式存在。NDK的这个特性既有利于代码的重用,也可以在某种

2015-11-29 13:14:26 371

转载 Android开发 Handler引起的内存泄露

如果你在Activity中定义了一个内部Handler类,如下代码:public class MainActivity extends Activity { private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) {

2015-11-24 18:02:47 396

转载 Android开发 使用Chrome来调试你的Android App

个人一直对Chrome情有独钟,Chrome除了更快之外,对开发者的支持更友好。内置强大的Developer Tools,相信Web开发简直爱不释手!而且Chrome Store里提供各种各样的插件,没有你用不到,只有你想不到。现在任何事基本Chrome全部办的到,有时候就在想,如果可以用Chrome调试Android App该多方便,而如今Facebook刚刚开源了一个工具Stetho,从此Ch

2015-11-24 17:34:49 1582

Android开发 自定义底部可滑动浮层Listview.apk

根据Android开发 View的生命周期结合代码详解和一张流程图带你完全搞懂Android的View事件分发机制并结合源码详解,实现列表底部悬浮自动弹起手动滑动皆可实现,平滑滚动效果极佳。

2020-11-26

Android开发 自定义底部可滑动浮层控件源码

根据Android开发 View的生命周期结合代码详解和一张流程图带你完全搞懂Android的View事件分发机制并结合源码详解,实现列表底部悬浮自动弹起手动滑动皆可实现,平滑滚动效果极佳。

2020-11-25

ARouterDemo源码

组件化其实就是一个主组件连接着其他多个组件组合成一个APP实现高类聚低耦合开发。 项目比较大时使用组件化可根据功能划分模块独立开发减少对原有代码改动量可避免改动影响其他功能,各个组件独立开发可以减少代码冲突量,项目比较大运行项目时经常出现重新编译时比较耗时短的三到五分钟跑一次项目,使用组件化独立运行可以大大减少开发等待时间。 组件化开发推荐目前比较流行的ARouter框架,ARouter是由阿里开发团队开源的组件化框架,目前应用比较多,ARouter经过多年广大开发者测验并改进已经比较完善,选择阿里团队一直有维护更新的ARouter更稳妥一些。

2020-10-20

高清郑州最新地铁交通规划图.pdf

绘画了郑州未来所有地铁路线高清图,可查看至2050年规划的21条地铁路线图,包括没个站点设置位置,以及站点名称

2020-09-08

MGSQL数据库.rar

SQLIT数据库,非常方便,直接解压就可用,解压后双击击GSQL运行,先注册数据库,然后创建数据库表,就可以练习数据语句了

2020-09-08

Fiddler安装包

Fiddler抓包工具,安装前请安装.NET framework驱动,首先你要看清楚你的Fiddler配置的默认端口号是8888,这个端口号你后面是需要手动配置移动端无线网路代理的,这个后面会讲到。其次就是勾选上Allow remote computer to connect 就是允许远程一直访问链接。好了到这里Fiddler基本上已经都设置好了,剩下就是设置移动端代理了。

2018-04-10

全球速卖通考试题及答案4

1. 1、速卖通后台登陆可以通过哪些方式 (正确答案:BC) o A. 速卖通用户名 o B. 速卖通账号 o C. 注册邮箱 o D. 注册手机

2016-02-21

全球速卖通考试题及答案3

2. 2、速卖通支持其他别国货币支付吗? (正确答案:ABCD) o A. 俄罗斯卢布(RUB) o B. 英镑(GBP) o C. 美金(US) o D. 巴西雷亚尔(BRL) 相关知识点 速卖通交易流程 (不定项选择,共1题,每题2分,共2分) 1. 1、以下哪些订单状态需要卖家跟进处理 (正确答案:ACD) o A. 有纠纷的订单 o B. 等待确认收货订单 o C. 等待发货订单 o D. 买家申请取消订单

2016-02-21

全球速卖通考试题及答案2

1. 1、买家可以通过哪些方式联系咨询卖家 (正确答案:ABCD) o A. 已下单买家可以通过订单留言 o B. 已下单买家可以通过邮箱 o C. 站内信 o D. trademanager 2. 2、速卖通支持其他别国货币支付吗? (正确答案:ABCD) o A. 英镑(GBP) o B. 俄罗斯卢布(RUB) o C. 美金(US) o D. 巴西雷亚尔(BRL)

2016-02-21

空空如也

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

TA关注的人

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