自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

z979451341的博客

你的star就是我的动力https://github.com/979451341

原创 Android 开源项目和文章集合(更新:2020.7.2)

2020.7.2 1.Kotlin、自定义View教学视频。通俗易懂、详实、时间短,强推 https://space.bilibili.com/27559447/video

2019-11-08 17:27:52 17368 31

原创 Android蓝牙开发小结

因为之前有做与蓝牙有关的项目,所以这里写个博客总结一下。

2020-04-02 14:09:00 188 0

原创 IdleHandler的使用和源码解析

1.作用 IdleHandler用于执行耗时较短且非必须的任务,它会在消息队列空闲时执行任务,可以用于性能优化。 2.使用 queueIdle函数返回false的话,这个任务会被执行一次,如果返回true,则消息队列空闲时就执行(注意不是只要空闲了就不断执行,而且空闲后就执行一次) ...

2020-03-07 10:36:39 169 0

原创 Android 极光IM-高级篇-玩聊天app诞生

距离上一次写 基础篇有了4个月,终于我写了一个 功能完善的即时通讯app,作为高级篇的担当出现。废话不多说,上图 app预览 实现功能 1.用户的登录注册 2.单聊,能清空聊天记录,且对于单人可以进行.语音通话,(这个部分我做的比官方demo要好得多,可以全局监听,但是...

2019-09-17 10:48:30 1247 2

原创 Android 极光IM-基础篇

本篇为基础篇,这里我就来给大家演示一下如何 完成自定义聊天界面和相关 SDK对接 还有高级篇,为一个功能完整的项目,可供看官选择 首先,我要说极光IM好坑,界面需要自己画,自己去对接API。虽然他给了一个demo,但是那个demo太大,而且不好移植到其他项目里。 这是效果图,画的一般大家...

2019-05-15 17:37:53 2451 19

原创 Android 学看ANR日志

ANR也算是比较常见的情况,虽然我们大多数可以把锅甩给用户的手机,但是有时候也有甩不动锅的时候   这篇博客的主题是教大家如何看ANR日志,然后就是分析ANR日志 一.预备工作 1.配置环境 配置环境,如果已经配置过的就跳过,在PC的在系统变量中path变量后面添加adb.exe...

2019-01-23 16:20:24 1762 0

原创 指定TabLayout的指示器宽度

引言: 关于TabLayout的指示器宽度,无法进行指定,默认宽度为所在TabView的宽度。虽然可以通过setTabIndicatorFullWidth(false)使指示器宽度为标题长度,但是还是达不到效果。   解决思路: 我先查找指示器的绘画代码,这里把我的查找流程放出来 se...

2018-11-23 15:08:14 1537 2

原创 PopupWindow的源码解析

PopupWindow还是很常用的,所以为了更好的使用这个控件,今天看看PopupWindow的源码,把其中的原理理一理   1.首先看看构造函数 PopupWindow的构造函数和一些系统控件一样,一层套一层,最后调用的是这个函数 public PopupWindow(Context ...

2018-07-27 17:46:45 1245 1

原创 RecyclerView滚动控制大全

项目地址 本次是通过RecyclerView实现两个列表:主列表、详情列表。通过点击主列表某个item,详情列表通过自动移动显示相应的item,并使其置顶,通过滑动详情列表,主列表也会自动移动到相应的位置。 上效果图 一.预备知识 获取当前RecyclerView可见的第一个和最后...

2018-07-26 18:23:42 4436 0

原创 Android Jetpack 六大架构组件全面了解

项目地址 一.项目简介 本项目实现了对Lifecycle,LiveData,ViewModel,Room,Paging,Navigation这六个官方构架组件的全面使用,组件的单独使用或者合作使用都有(PS:WorkManager bug 太多,不建议使用,我这里也不会提到他,因为我反正是有坑...

2018-07-24 16:04:26 3191 2

原创 Kotlin版 极简 干货集中营 APP

项目地址 首先这是我的一个Kotlin练手项目,规模很小,显示干货集中营的几个分类模块,使用的还是我习惯使用的java框架,虽然遇到了一些问题,不过提高了Kotlin的熟练度,踩了一些Kotlin的坑。 上效果图 项目说明 项目比较简单,主界面是TabLayout&...

2018-07-19 12:49:36 813 0

原创 Android 自定义滚动选择控件开发

为何要从头开发滚动组件,为了能够让自己更加清楚和理解拖动效果是如何实现的,投掷效果是如何实现的。   我自己完成一个滚动选择控件,能够拖动选择,并且可以手指进行投掷操作(fling),手指离开,他也会继续滚动一段距离。因为做的是滚动选择,所以需要每次回自动滚动到恰好的位置。效果图如下  ...

2018-07-14 16:27:10 2192 0

原创 Android项目组件化实践

本博客使用的示例项目都来自以下地址https://github.com/979451341/MDemo一.组件化的概念和作用      组件化的概念就是将一个项目分成多个组件进行完成,各个组件能够单独编译和运行,而又可以组合成一个完成的项目编译和运行。      组件化使得多人同时编写一个项目更加...

2018-07-06 10:05:26 782 0

原创 Flutter 通过API获取网络数据并解析

首先通过API获取网络数据这个过程是耗时的,所以我们需要进行异步操作,使用Dart语言完成异步可以参考如下的文章https://www.jianshu.com/p/f2f7634b602c1.网络请求直接进入正题,首先我进行网络请求是通过一个工具类,大家可以直接使用import 'pac...

2018-07-03 16:16:27 8206 6

原创 Flutter 自定义UI控件并设置交互能力

1.自定义UI控件首先UI控件按照是否能够与用户交互分为交互型控件和非交互型控件。下面就是创建了一个交互型控件,只是关于界面是空的,如果我们继承StatelessWidget就是创建了一个非交互型控件,比如我们最顶层的容器MyApp就是一个非交互型控件至于MyWidgetState是来实现UI控件...

2018-06-26 17:50:38 6429 0

原创 Android Bmob项目(已完成登录、注册、留言板功能)

项目地址https://github.com/979451341/BmobTest原本想自己写个功能比较完整的app,但是自己不会写后台,而使用公开的API做个新闻类APP,我的毕业设计就这个(PS:过些天我把毕业设计的源码发出),所以我找了Bmob网络存储做后台,一天500次,实名认证20000...

2018-06-22 16:01:43 2743 6

原创 Flutter 所有UI控件使用教程

本篇博客将把Flutter所有UI控件的使用方法写出,我学习Flutter是通过Flutter官网来学习的,不需要科学上网,比如这这个网址说的就是Flutter的UI控件的使用方法  https://flutter.io/widgets/widgetindex/   1.基础控件   首先...

2018-06-14 17:20:07 26910 2

原创 我的第一个Flutter APP

首先需要说明本次博客我是用的电脑是mac,并且在下没有使用科学上网,额,对使用window的同学不太友好,日后再来一篇window配置Flutter环境的博客1.环境配置关于环境配置,我是根据范玉刚大神的博客做的 (https://blog.csdn.net/singwhatiwanna/arti...

2018-06-14 13:52:41 3157 2

原创 JobScheduler API的使用详细

首先需要注意,本人使用的测试手机是Android7.0,荣耀华为6x1.简介JobScheduler API是在Android5.0开始有的,使用场景:在稍后的某个时间点或者当满足某个特定的条件(连接电源,网络状态变化、手机是否空闲)时需要执行一个任务。2.API函数开发者主要通过三个类JobSe...

2018-06-07 18:08:44 4996 0

原创 彻底搞定Android软键盘

首先说明在下使用的手机是Android7.0 华为荣耀6X,如何在下的代码没有做到一些手机或者版本的适配,请大神回复教在下 一.windowSoftInputMode属性 1.概念 (此小节抄录来自https://blog.csdn.net/mynameishuangshuai/arti...

2018-05-31 10:50:08 1031 0

原创 LocalBroadcastManager的使用和源码解析

LocalBroadcastManager能够让自己发送的广播不被外部App接收,这样既安全,也又优化了性能,因为传送和接收广播也是跨进程通信。而通过LocalBroadcastManager发送广播和该BroadcastReceiver接收广播都是在自己应用的进程完成的。接下来我会先简单的说Lo...

2018-05-25 16:16:14 819 0

原创 Application少为人知的用法

平常我们都是在onCreate初始化一些应用程序级的对象或配置,但是这还是Application众多用法的其中之一。   1.监听所有activity的生命周期   在onCreate函数里通过注册接口来实现   @Override public void onCrea...

2018-04-16 16:17:51 1874 0

原创 Fragment生命周期情景分析和源码分析

onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。onCreate():Fragment被创建时调用。onCreateView():创建Fragment的布局。onActivityCreat...

2018-04-10 11:28:26 1262 0

原创 Android 插件化学习 加载apk并调用类的函数

项目地址https://github.com/979451341/PlugStudy/tree/master/LoadSimpleClass知识点在于通过加载apk,复制成一个个FIle,然后通过使用DexClassLoade加载File(也可以说是Dex文件)获取DexClassLoade实例,...

2018-03-31 10:00:40 1248 0

原创 Android驱动开发知识储备(纯手打,更新:2018.4.11)

Android软件层次结构(1)操作系统层显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Binder IPC驱动,Power Management  ,这些都包括在Linux内核里。(2)各种库和Android运行环境C库、多媒体...

2018-03-29 19:26:08 3589 0

原创 ThreadLocal使用方法与源码解析

1.ThreadLocal的使用方法ThreadLocal能够存储数据,作用域是线程。首先我示范一些下这个ThreadLocal如何使用,并分析一下使用的结果,让我们能够更加清晰的理解ThreadLocal作用域为线程这个特点,方便后面源码解析。我在Activity里创建一个静态的ThreadLo...

2018-03-26 14:24:55 1374 0

原创 Android 性能优化实践(更新:2020-3-20)

1.根据Android Lint的提示来修改代码 菜单栏上面的Analyze——》Inspect Code,他这里可以选择整个项目、一个module、或一个java来进行扫描 我这里选择整个项目,Android Lint能够指出一些你没有发现的隐患或者能够优化代码的地方,如果看到er...

2018-03-22 11:54:00 1385 0

原创 Android SQLite多线程读写和线程同步源码分析

没啥诀窍,只需保证几个线程都是用的一个SQLiteDataBase对象就行了。如果我们非要在不同线程中用两个或更多的SQLiteDataBase对象呢,当然这些SQLiteDataBase对象所操作的是同一个数据库,也就是同一个db文件,这个就是这篇博客的重点了(ps:使用到的代码将在博文结尾贴出...

2018-03-17 16:56:22 3387 1

原创 Java 线程调度我就写一篇(Object与Semaphore、Lock、Callable、Future、FutureTask)

一.Object 一般来说Synchronized 同步锁就能解决大部分线程同步问题,但是如果情况比较复杂就不行了,这就得用Object的wait(),notify(),notifyAll()。但是这个三个函数只能实现不公平锁,Semaphore能够实现公平锁和不公平锁,后面再说。 概念 S...

2018-03-17 10:11:49 1274 0

原创 Android面试重难点(更新:2020.7.10)

现在分为Android篇和Java篇、还有一些其他人收集的面试题网页地址。关于笔试用 牛客网就可以了 Android篇 Retrofit源码解析 https://mp.weixin.qq.com/s/2B5WpV220FKSMbDvX7A4zQ NewsApi api...

2018-03-15 15:04:50 3996 0

原创 Path我就写一篇(更新:添加圆形表格实现,2018.10.26)

我就一篇写完Path几乎所有的用法,有点长,请细心看   先贴出GcsSloop大神整理的Path函数图片(ps:Android5.0以上的方法,他没整理) 直接来正题,创建自定义View,创建画笔设置颜色 public class MyView extends View { ...

2018-03-14 16:17:32 1201 0

原创 Java反射一篇讲完

想用完成反射得一步一步的来,需要Class、实例、还有想要调用的函数地址,传入的参数获取Class TestClass testClass = new TestClass(); Class<?> cls = testClass.getCla...

2018-03-12 13:59:53 1060 0

原创 Android 音视频深入 二十一 FFmpeg视频剪切

视频剪切我意外的发现上一次的视频压缩的代码能够运行FFmpeg视频剪切的命令,但是不能做视频合并的命令,因为不能读取记录了几个视频的路径的txt文件。这里我就说直说视频剪切的过程,不说代码,只说log,毕竟我也不清楚代码往哪运行了
上一次的项目地址https://github.com/979451...

2018-03-10 15:38:38 2004 2

原创 Android 音视频深入 二十 FFmpeg视频压缩(附源码下载)

项目源码https://github.com/979451341/FFmpegCompress       这个视频压缩是通过类似在mac终端上输入FFmpeg命令来完成,意思是我们需要在Android上达到能够执行FFmpeg命令。其实做到这一点还比较容易,这一次重在说说这压缩过程,不是看代码运...

2018-03-10 12:57:37 2198 5

原创 Android 音视频深入 十九 使用ijkplayer做个视频播放器(更新:增加了小框,2018-3-12)

项目地址https://github.com/979451341/Myijkplayer前段时候我觉得FFmpeg做个视频播放器好难,虽然播放上没问题,但暂停还有通过拖动进度条来设置播放进度,这些都即便做得到,可以那个延缓。。。。。现在学习一下目前移动端最知名的视频播放器的框架ijkplayer,...

2018-03-09 16:39:34 3164 3

转载 Android视频开发进阶(part2-MP4文件的解析)

上一期文章我分享了一些视频播放里面的术语和基本概念。这一篇文章我会主要介绍容器(container format file)格式文件的细节,以最常见的MP4文件入手。然后会简短的介绍一个标准的播放器的启动,解析,播放流程。本篇还是以基础知识为主,虽然很枯燥,但是对视频开发的学习有非常大的好处,我自...

2018-03-08 11:31:20 1337 0

转载 Android视频开发进阶(part1-关于视频的那些术语)

说到安卓的视频开发,大多数朋友们都是用着开源的播放器,或者安卓自带的native mediaplayer,拿来主义居多,我曾经也是。。。最近这半年因为开始着手重构公司的播放器,也开始学习了很多视频音频开发的相关知识,抱着独乐乐不如众乐乐的想法,开始写一些值得分享的东西。这次的连载和之前的RxJav...

2018-03-08 11:30:00 1207 0

原创 iOS开发常用知识点(持续更新2018.6.25)

1、去除数组中重复的对象NSArray *newArr = [oldArr valueForKeyPath:@“@distinctUnionOfObjects.self"];2、强/弱引用#define WeakSelf(type) __weak typeof(type) weak##...

2018-03-07 19:15:00 1950 0

原创 Android 虹软SDK人脸识别图文使用说明(更新:2019.5.14)

因为这篇博客开始写的时候是2018.3,到现在有一年多了,而虹软的sdk发生了很大的变化,所以我这里重新把博客写一遍。 多谢各位看官在这一年对该篇博客的关注。 1.账号注册 首先在虹软开发者网站上注册(用手机号注册) http://www.arcsoft.com.cn/ai/arcf...

2018-03-07 11:47:48 18985 47

原创 讯飞SDK图文使用说明 语音听写、语音合成、声纹密码、人脸识别(适配Android7.0)

关于讯飞,他们关于语音做的AI功能SDK特别好,我经过使用有了深刻的体验,这次讲一讲语音听写、语音合成、声纹密码这三种的功能的体验。首先到讯飞开放平台注册账号,然后到右上角点击我的应用创建应用,并给应用添加新功能http://www.xfyun.cn/然后在我的应用界面点击对应应用的栏目的SDK下...

2018-03-07 10:40:36 2584 1

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