自定义博客皮肤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

  • 博客(134)
  • 资源 (11)
  • 收藏
  • 关注

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

1.再见SharedPreferences,你好MMKV!https://mp.weixin.qq.com/s/VBMDIE0QHXQAMuIjon-Fjg

2019-11-08 17:27:52 83310 35

原创 Dialog源码解析

1.构造函数 Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { mContext = context; //获取WindowManager为后续操作做准备 mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW.

2021-06-02 10:51:22 248

原创 CountDownTimer源码解析

CountDownTimer适用于做倒计时,时间间隔一样的任务,比如5秒上传一次经纬度,这次我们看看它的源码。1.初始化 countDownTimer = object : CountDownTimer(Long.MAX_VALUE, 1000) { override fun onFinish() {} override fun onTick(millisUntilFinished: Long) {

2021-03-24 14:46:59 448

原创 Android 11 上传图片适配 和 第三方登录

本次适配,不添加android:requestLegacyExternalStorage="true" ,过程都用原生系统代码1.首先选择图片 Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); .

2021-01-28 12:33:43 1688

原创 Android 崩溃记录

这篇文章用于记录各种崩溃细节,从而对处理和预防崩溃更加游刃有余。

2020-12-29 15:51:07 491

原创 LiveData 机制详解

一.粘性消息机制首先展示一个最简单能体现粘性消息的例子

2020-08-06 11:28:45 1513

原创 Android蓝牙开发小结

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

2020-04-02 14:09:00 774

原创 IdleHandler的使用和源码解析

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

2020-03-07 10:36:39 672

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

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

2019-09-17 10:48:30 2918 3

原创 Android 极光IM-基础篇

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

2019-05-15 17:37:53 4160 26

原创 Android 学看ANR日志(2021.11.3)

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

2019-01-23 16:20:24 3528

原创 指定TabLayout的指示器宽度

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

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

原创 PopupWindow的源码解析

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

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

原创 RecyclerView滚动控制大全

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

2018-07-26 18:23:42 6023

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

项目地址一.项目简介本项目实现了对Lifecycle,LiveData,ViewModel,Room,Paging,Navigation这六个官方构架组件的全面使用,组件的单独使用或者合作使用都有(PS:WorkManager bug 太多,不建议使用,我这里也不会提到他,因为我反正是有坑,迈不过去)贴一张项目主界面图,大家可以先下载项目自己运行一下二.对于六大组件的简...

2018-07-24 16:04:26 5840 3

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

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

2018-07-19 12:49:36 1025

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

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

2018-07-14 16:27:10 2690

原创 Android项目组件化实践

本博客使用的示例项目都来自以下地址https://github.com/979451341/MDemo一.组件化的概念和作用      组件化的概念就是将一个项目分成多个组件进行完成,各个组件能够单独编译和运行,而又可以组合成一个完成的项目编译和运行。      组件化使得多人同时编写一个项目更加方便,比如你编译一个组件就比编译一个完整的项目更加快捷,而且这样开发者之间只需要确定界面的跳转逻辑和服...

2018-07-06 10:05:26 1006

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

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

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

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

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

2018-06-26 17:50:38 7603

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

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

2018-06-22 16:01:43 4022 9

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

本篇博客将把Flutter所有UI控件的使用方法写出,我学习Flutter是通过Flutter官网来学习的,不需要科学上网,比如这这个网址说的就是Flutter的UI控件的使用方法  https://flutter.io/widgets/widgetindex/ 1.基础控件 首先说一下最基础的控件有哪些,基础使用方法文字显示new Text('Hello World',...

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

原创 我的第一个Flutter APP

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

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

原创 JobScheduler API的使用详细

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

2018-06-07 18:08:44 6881

原创 彻底搞定Android软键盘(更新:2021.6.24)

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

2018-05-31 10:50:08 1400

原创 LocalBroadcastManager的使用和源码解析

LocalBroadcastManager能够让自己发送的广播不被外部App接收,这样既安全,也又优化了性能,因为传送和接收广播也是跨进程通信。而通过LocalBroadcastManager发送广播和该BroadcastReceiver接收广播都是在自己应用的进程完成的。接下来我会先简单的说LocalBroadcastManager如何使用,然后在使用的基础上从源码角度讲解这是如何实现的。1.使...

2018-05-25 16:16:14 933

原创 Application少为人知的用法

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

2018-04-16 16:17:51 2029

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

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

2018-04-10 11:28:26 1513

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

项目地址https://github.com/979451341/PlugStudy/tree/master/LoadSimpleClass知识点在于通过加载apk,复制成一个个FIle,然后通过使用DexClassLoade加载File(也可以说是Dex文件)获取DexClassLoade实例,后面在通过加载这个DexClassLoader实例获取class文件,再通过反射调用函数。我们首先需要...

2018-03-31 10:00:40 1654

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

Android软件层次结构(1)操作系统层显示驱动(Frame Buffer),Flash内存驱动,照相机驱动,音频驱动,WiFi驱动,键盘驱动,蓝牙驱动,Binder IPC驱动,Power Management  ,这些都包括在Linux内核里。(2)各种库和Android运行环境C库、多媒体框架、SGL(2D图像引擎),SSL(安全),OpenGL ES(3D),界面管理工具,SQLite,...

2018-03-29 19:26:08 4570

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

1.ThreadLocal的使用方法ThreadLocal能够存储数据,作用域是线程。首先我示范一些下这个ThreadLocal如何使用,并分析一下使用的结果,让我们能够更加清晰的理解ThreadLocal作用域为线程这个特点,方便后面源码解析。我在Activity里创建一个静态的ThreadLocal类,并且创建了三个线程,这个三个线程通过点击按钮来触发执行。这里要注意我已经赋值ThreadLo...

2018-03-26 14:24:55 1575

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

1.根据Android Lint的提示来修改代码菜单栏上面的Analyze——》Inspect Code,他这里可以选择整个项目、一个module、或一个java来进行扫描我这里选择整个项目,Android Lint能够指出一些你没有发现的隐患或者能够优化代码的地方,如果看到error程度的提示也不要晃,它可能有些误会,至于warnings,太多了,大家根据内容选...

2018-03-22 11:54:00 1600

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

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

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

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

一.Object一般来说Synchronized 同步锁就能解决大部分线程同步问题,但是如果情况比较复杂就不行了,这就得用Object的wait(),notify(),notifyAll()。但是这个三个函数只能实现不公平锁,Semaphore能够实现公平锁和不公平锁,后面再说。概念Synchronized:同步锁,指的是他能锁住对象、类、函数、代码块,使得同一时间不同线程这些东西只能...

2018-03-17 10:11:49 1366

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

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

2018-03-15 15:04:50 4516

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

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

2018-03-14 16:17:32 1608

原创 Java反射一篇讲完

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

2018-03-12 13:59:53 1175

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

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

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

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

项目源码https://github.com/979451341/FFmpegCompress       这个视频压缩是通过类似在mac终端上输入FFmpeg命令来完成,意思是我们需要在Android上达到能够执行FFmpeg命令。其实做到这一点还比较容易,这一次重在说说这压缩过程,不是看代码运行过程,通过log来观察代码运行的结果。1.首先普及一下相关专业名词      视频尺寸:指的就是视频...

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

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

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

2018-03-09 16:39:34 4272 4

阿里百川 IM SDK,经修改适配Android8.0

阿里百川 IM SDK,经修改适配Android8.0,因为其中有用到Notification,但是因为没有创建channid,所以在Android8.0的手机上运行,IM SDK创建的新进场会崩溃,导致IM SDK 不能正常运行

2018-10-08

apktool反编译工具包(附带教程)

其中包含了apktool2.3.3.jar,还有apktool.bat,还有相关apktool反编译教程

2018-07-10

一头扎进JDBC视频教程源码

一头扎进JDBC视频教程源码 一头扎进JDBC视频教程源码 一头扎进JDBC视频教程源码 一头扎进JDBC视频教程源码

2018-06-15

安卓开发外文翻译--安卓应用基础

安卓开发外文翻译--安卓应用基础 安卓开发外文翻译--安卓应用基础

2018-05-03

IOS 日记代码(Objective-C)

1.框架 我使用Realm来作为数据库的框架,还有SDAutoLayout做适配。不会用的,也没关系,这两个框架简单的很。 2.逻辑设置 日记记录的时候就记录三个数据,标题,内容,写日记的时间。这个时间精确到秒,相当于数据库的主键。我们点击以前写的日记项,也可以对其进行修改,这个时间也会修改。 3.界面设置 我先贴两个图片大家理解一下就好,反正用的控件不多 主界面一个列表心事所有日记的信息,和一个添加按钮跳转写日记的界面

2017-12-18

Android基础笔试题

Android基础笔试题,摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!摘要必须大于100个字节!

2017-09-17

Kotlin app

一个具有完整环境配置的Kotlin app

2017-08-07

QQ高仿(需要网络数据)

这是一个我花了两个星期做出的QQ高仿,可以看一下,各种QQ特效都有

2017-07-26

Realm应用例子

Realm数据库框架的比较完善的例子

2017-07-20

LayoutAnimation为ViewGroup子View添加出现特效

LayoutAnimation为ViewGroup子View添加出现特效

2017-04-21

RemoteView制作自定义Notification

通过RemoteView制作自定义Notification

2017-04-10

空空如也

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

TA关注的人

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