- 博客(136)
- 资源 (11)
- 收藏
- 关注

原创 Android 开源项目和文章集合(更新:2022.03.21)
1.再见SharedPreferences,你好MMKV!https://mp.weixin.qq.com/s/VBMDIE0QHXQAMuIjon-Fjg
2019-11-08 17:27:52
182565
36
原创 玩安卓-鸿蒙版 二 首页横幅、搜索、跳转链接功能
本篇涉及鸿蒙组件TextInput、Image、Menu、Swiper、Web、路由跳转传参、POST请求。
2024-12-18 18:04:43
915
原创 玩安卓-鸿蒙版 一 首页
https://top.chinaz.com/http://www.zhyw.net/https://www.cbzr.com/http://m.dajiazhao.com/https://m.12ky.com/http://www.fodizi.net/http://m.fodizi.com/m/http://m.9d19.com/https://services...
2024-12-17 17:46:31
339
1
原创 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
918
原创 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
1160
原创 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
2701
原创 IdleHandler的使用和源码解析
1.作用IdleHandler用于执行耗时较短且非必须的任务,它会在消息队列空闲时执行任务,可以用于性能优化。2.使用queueIdle函数返回false的话,这个任务会被执行一次,如果返回true,则消息队列空闲时就执行(注意不是只要空闲了就不断执行,而且空闲后就执行一次) var handler:MessageQueue.IdleHandler = obje...
2020-03-07 10:36:39
940
原创 Android 极光IM-高级篇-玩聊天app诞生,更新2020.12.15
距离上一次写 基础篇有了4个月,终于我写了一个 功能完善的即时通讯app,作为高级篇的担当出现。废话不多说,上图app预览实现功能1.用户的登录注册2.单聊,能清空聊天记录,且对于单人可以进行.语音通话,(这个部分我做的比官方demo要好得多,可以全局监听,但是没做群聊语音通话和视频通话)3.群聊,能清空聊天记录、修改群名和修改群头像(只有群主才可以做)...
2019-09-17 10:48:30
3429
4
原创 Android 极光IM-基础篇
本篇为基础篇,这里我就来给大家演示一下如何 完成自定义聊天界面和相关 SDK对接还有高级篇,为一个功能完整的项目,可供看官选择首先,我要说极光IM好坑,界面需要自己画,自己去对接API。虽然他给了一个demo,但是那个demo太大,而且不好移植到其他项目里。这是效果图,画的一般大家见谅,毕竟是我亲手设计1.配置环境这一步不是本文重点,我这里只给个链接,大家按照官方文...
2019-05-15 17:37:53
4727
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
4780
原创 指定TabLayout的指示器宽度
引言:关于TabLayout的指示器宽度,无法进行指定,默认宽度为所在TabView的宽度。虽然可以通过setTabIndicatorFullWidth(false)使指示器宽度为标题长度,但是还是达不到效果。 解决思路:我先查找指示器的绘画代码,这里把我的查找流程放出来setupWithViewPagersetPagerAdapterpopulateFromPagerA...
2018-11-23 15:08:14
3002
2
原创 PopupWindow的源码解析
PopupWindow还是很常用的,所以为了更好的使用这个控件,今天看看PopupWindow的源码,把其中的原理理一理 1.首先看看构造函数PopupWindow的构造函数和一些系统控件一样,一层套一层,最后调用的是这个函数public PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int ...
2018-07-27 17:46:45
2047
1
原创 RecyclerView滚动控制大全
项目地址本次是通过RecyclerView实现两个列表:主列表、详情列表。通过点击主列表某个item,详情列表通过自动移动显示相应的item,并使其置顶,通过滑动详情列表,主列表也会自动移动到相应的位置。上效果图一.预备知识获取当前RecyclerView可见的第一个和最后的item在整体列表里的顺序 layoutM.findFirstVisi...
2018-07-26 18:23:42
6786
原创 Android Jetpack 六大架构组件全面了解
项目地址一.项目简介本项目实现了对Lifecycle,LiveData,ViewModel,Room,Paging,Navigation这六个官方构架组件的全面使用,组件的单独使用或者合作使用都有(PS:WorkManager bug 太多,不建议使用,我这里也不会提到他,因为我反正是有坑,迈不过去)贴一张项目主界面图,大家可以先下载项目自己运行一下二.对于六大组件的简...
2018-07-24 16:04:26
6761
2
原创 Kotlin版 极简 干货集中营 APP
项目地址首先这是我的一个Kotlin练手项目,规模很小,显示干货集中营的几个分类模块,使用的还是我习惯使用的java框架,虽然遇到了一些问题,不过提高了Kotlin的熟练度,踩了一些Kotlin的坑。上效果图项目说明项目比较简单,主界面是TabLayout&ViewPager&Fragment,Fragment懒加载模式,Fragment里就一个Recycl...
2018-07-19 12:49:36
1231
原创 Android 自定义滚动选择控件开发
为何要从头开发滚动组件,为了能够让自己更加清楚和理解拖动效果是如何实现的,投掷效果是如何实现的。 我自己完成一个滚动选择控件,能够拖动选择,并且可以手指进行投掷操作(fling),手指离开,他也会继续滚动一段距离。因为做的是滚动选择,所以需要每次回自动滚动到恰好的位置。效果图如下 1.实现基本绘画首先我需要绘画出一个类似LinearLayout里排放很多个相同的Tex...
2018-07-14 16:27:10
3286
原创 Android项目组件化实践
本博客使用的示例项目都来自以下地址https://github.com/979451341/MDemo一.组件化的概念和作用 组件化的概念就是将一个项目分成多个组件进行完成,各个组件能够单独编译和运行,而又可以组合成一个完成的项目编译和运行。 组件化使得多人同时编写一个项目更加方便,比如你编译一个组件就比编译一个完整的项目更加快捷,而且这样开发者之间只需要确定界面的跳转逻辑和服...
2018-07-06 10:05:26
1314
原创 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
12215
3
原创 Flutter 自定义UI控件并设置交互能力
1.自定义UI控件首先UI控件按照是否能够与用户交互分为交互型控件和非交互型控件。下面就是创建了一个交互型控件,只是关于界面是空的,如果我们继承StatelessWidget就是创建了一个非交互型控件,比如我们最顶层的容器MyApp就是一个非交互型控件至于MyWidgetState是来实现UI控件的界面class MyWidget extends StatefulWidget { @overr...
2018-06-26 17:50:38
8212
原创 Android Bmob项目(已完成登录、注册、留言板功能)
项目地址https://github.com/979451341/BmobTest原本想自己写个功能比较完整的app,但是自己不会写后台,而使用公开的API做个新闻类APP,我的毕业设计就这个(PS:过些天我把毕业设计的源码发出),所以我找了Bmob网络存储做后台,一天500次,实名认证20000,还可以。目前还是个半成品,功能太少,大家可以帮我想一下功能,我是认真的,我做的出来,就做废话不多说,...
2018-06-22 16:01:43
4319
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
31812
2
原创 我的第一个Flutter APP
首先需要说明本次博客我是用的电脑是mac,并且在下没有使用科学上网,额,对使用window的同学不太友好,日后再来一篇window配置Flutter环境的博客1.环境配置关于环境配置,我是根据范玉刚大神的博客做的 (https://blog.csdn.net/singwhatiwanna/article/details/79571364),我自己在进行一些补充在我们执行flutter doctor...
2018-06-14 13:52:41
4299
原创 JobScheduler API的使用详细
首先需要注意,本人使用的测试手机是Android7.0,荣耀华为6x1.简介JobScheduler API是在Android5.0开始有的,使用场景:在稍后的某个时间点或者当满足某个特定的条件(连接电源,网络状态变化、手机是否空闲)时需要执行一个任务。2.API函数开发者主要通过三个类JobService和JobScheduler、JobInfo来使用JobSchedule API而且你要知道一...
2018-06-07 18:08:44
7835
原创 彻底搞定Android软键盘(更新:2021.6.24)
首先说明在下使用的手机是Android7.0 华为荣耀6X,如何在下的代码没有做到一些手机或者版本的适配,请大神回复教在下一.windowSoftInputMode属性1.概念(此小节抄录来自https://blog.csdn.net/mynameishuangshuai/article/details/51567357) android定义了一个属性,...
2018-05-31 10:50:08
1933
原创 LocalBroadcastManager的使用和源码解析
LocalBroadcastManager能够让自己发送的广播不被外部App接收,这样既安全,也又优化了性能,因为传送和接收广播也是跨进程通信。而通过LocalBroadcastManager发送广播和该BroadcastReceiver接收广播都是在自己应用的进程完成的。接下来我会先简单的说LocalBroadcastManager如何使用,然后在使用的基础上从源码角度讲解这是如何实现的。1.使...
2018-05-25 16:16:14
1282
原创 Application少为人知的用法
平常我们都是在onCreate初始化一些应用程序级的对象或配置,但是这还是Application众多用法的其中之一。 1.监听所有activity的生命周期 在onCreate函数里通过注册接口来实现 @Override public void onCreate() { super.onCreate(); Log.v(TAG_...
2018-04-16 16:17:51
2256
原创 Fragment生命周期情景分析和源码分析
onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。onCreate():Fragment被创建时调用。onCreateView():创建Fragment的布局。onActivityCreated():当Activity完成onCreate()时调用。onStart():当Fragment可见...
2018-04-10 11:28:26
1948
原创 Android 插件化学习 加载apk并调用类的函数
项目地址https://github.com/979451341/PlugStudy/tree/master/LoadSimpleClass知识点在于通过加载apk,复制成一个个FIle,然后通过使用DexClassLoade加载File(也可以说是Dex文件)获取DexClassLoade实例,后面在通过加载这个DexClassLoader实例获取class文件,再通过反射调用函数。我们首先需要...
2018-03-31 10:00:40
1998
原创 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
5748
原创 ThreadLocal使用方法与源码解析
1.ThreadLocal的使用方法ThreadLocal能够存储数据,作用域是线程。首先我示范一些下这个ThreadLocal如何使用,并分析一下使用的结果,让我们能够更加清晰的理解ThreadLocal作用域为线程这个特点,方便后面源码解析。我在Activity里创建一个静态的ThreadLocal类,并且创建了三个线程,这个三个线程通过点击按钮来触发执行。这里要注意我已经赋值ThreadLo...
2018-03-26 14:24:55
2036
原创 Android 性能优化实践(更新:2020-8-10)
1.根据Android Lint的提示来修改代码菜单栏上面的Analyze——》Inspect Code,他这里可以选择整个项目、一个module、或一个java来进行扫描我这里选择整个项目,Android Lint能够指出一些你没有发现的隐患或者能够优化代码的地方,如果看到error程度的提示也不要晃,它可能有些误会,至于warnings,太多了,大家根据内容选...
2018-03-22 11:54:00
1882
原创 Android SQLite多线程读写和线程同步源码分析
没啥诀窍,只需保证几个线程都是用的一个SQLiteDataBase对象就行了。如果我们非要在不同线程中用两个或更多的SQLiteDataBase对象呢,当然这些SQLiteDataBase对象所操作的是同一个数据库,也就是同一个db文件,这个就是这篇博客的重点了(ps:使用到的代码将在博文结尾贴出)第一种情况:一个SQLiteDataBase对象不同线程两个子线程执行修改数据库操作,三个子线程执行...
2018-03-17 16:56:22
5656
原创 Java 线程调度我就写一篇(Object与Semaphore、Lock、Callable、Future、FutureTask)
一.Object一般来说Synchronized 同步锁就能解决大部分线程同步问题,但是如果情况比较复杂就不行了,这就得用Object的wait(),notify(),notifyAll()。但是这个三个函数只能实现不公平锁,Semaphore能够实现公平锁和不公平锁,后面再说。概念Synchronized:同步锁,指的是他能锁住对象、类、函数、代码块,使得同一时间不同线程这些东西只能...
2018-03-17 10:11:49
1565
原创 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
4860
原创 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
1875
原创 Java反射一篇讲完
想用完成反射得一步一步的来,需要Class、实例、还有想要调用的函数地址,传入的参数获取Class TestClass testClass = new TestClass(); Class<?> cls = testClass.getClass(); try { cls = Class.forName("com....
2018-03-12 13:59:53
1316
原创 Android 音视频深入 二十一 FFmpeg视频剪切
视频剪切我意外的发现上一次的视频压缩的代码能够运行FFmpeg视频剪切的命令,但是不能做视频合并的命令,因为不能读取记录了几个视频的路径的txt文件。这里我就说直说视频剪切的过程,不说代码,只说log,毕竟我也不清楚代码往哪运行了 上一次的项目地址https://github.com/979451341/FFmpegCompress首先我们需要将项目代码里改一下,将runCommand函数传入的参...
2018-03-10 15:38:38
3250
阿里百川 IM SDK,经修改适配Android8.0
2018-10-08
IOS 日记代码(Objective-C)
2017-12-18
Android基础笔试题
2017-09-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人