自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (25)
  • 收藏
  • 关注

原创 Kotlin协程

协程是一种非抢占式或者说协作式的计算机程序并发调度的实现,程序可以主动挂起或者恢复执行。我们在 Java 虚拟机上所认识到的线程大多数的实现是映射到内核的线程的,也就是说线程当中的代码逻辑在线程抢到 CPU 的时间片的时候才可以执行,否则就得歇着,当然这对于我们开发者来说是透明的;而经常听到所谓的协程更轻量的意思是,协程并不会映射成内核线程或者其他这么重的资源,它的调度在用户态就可以搞定,任务之间的调度并非抢占式,而是协作式的。协程示例:coroutineScope.launch(Dispatchers

2020-09-12 21:51:04 470

原创 Kotlin伴生对象companion object与内联函数

在大多数情况下,kotlin推荐的做法是使用包级别的函数来作为静态方法,kotlin会将包级别的函数当作静态方法来看待;在kotlin中,一个类中只能有一个伴生对象,伴生对象的名字可以省略,如果省略(不提供伴生对象的名字),那么编译器会提供一个默认的名字Companion。如下所示:class MyCompanion { companion object MyObject { ...

2020-04-22 18:11:22 465

原创 Dart之Stream异步事件流

在此先插播一句观察者模式观察者模式常见案例:RxJava、LiveData、Dart中通过Stream异步事件流构建Widget的Bloc观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。观察者模式是一种对象行为型模式,其主要优...

2020-04-11 19:48:36 1637

原创 Flutter应用页面的生命周期

此生命周期指的StatefluWeidgetFlutter 也有自己的生命周期,官方定义的生命周期只有五个,配合WidgetsBindingObserver接口的配合。initState() 表示当前 State 将和一个 BuildContext 产生关联,但是此时BuildContext没有完全装载完成,如果你需要在该方法中获取 BuildContext ,可以 new Future.d...

2020-04-11 19:00:17 953

原创 RxJava初探

众所周知,rxjava是一种响应式编程,也可以叫做观察者模式,简单来形容一下就是:观察者模式是一种对象行为模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。在观察者模式中,主题是通知的发布者,它发出通知时并不需要知道谁是它的观察者,可以有任意数目的观察者订阅并接收通知直接上代码: /** * 被观察者 * 1.0泛型为被...

2019-08-29 17:38:27 202

原创 Retrofit网络请求之注解

之前写过一篇关于retrofit的笼统介绍,但是碍于当时对于retrofit了解不多,很多东西都是一带而过,没有讲明白,在接下来的文章中将陆续介绍转换器、注解、拦截器、Call与Observable的区别本篇首先介绍注解,我们先来给注解分一下类: a. @GET、@POST、@PUT、@DELETE、@HEAD---->>>>>>网络请求方法示例:@G...

2019-08-29 15:14:06 657

原创 Python异步之aiohttp

#asyncio可以实现单线程并发IO操作。如果仅用在客户端,发挥的威力不大。#如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多用户的高并发支持。#asyncio实现了TCP、UDP、SSL等协议,aiohttp则是基于asyncio实现的HTTP框架。参考文章1参考文章2参考文章3直接上代码import a...

2019-08-28 14:00:39 1168 1

原创 Python第三方模块之requests

Python内置的urllib模块,用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。更好的方案是使用requests。它是一个Python第三方库,处理URL资源特别方便以下请求都是同步的1.0 无参数的get请求r = requests.get('https://api.apiopen.top/getJoke?page=1&count=2&typ...

2019-08-22 16:59:02 324

原创 Python常用内置模块之datetime、collections、base64、hash、request

1.datetime时间格式转化from datetime import datetime, timedelta# datetime 当前时间t1 = datetime.now() # 当前时间 2019-08-14 16:05:41.923949# timestamp 默认是秒t2 = t1.timestamp() * 1000 # 时间毫秒值 1565769941923# d...

2019-08-22 14:31:37 226

原创 Python_IO操作与序列化反序列化

# 由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。 # 所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try ... finally来实现: # 但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法: # 调用read()会一次性读取文件的全部内容,如果文件...

2019-08-21 16:24:16 149

原创 Python_面向对象

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想。OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。数据封装、继承和多态是面向对象的三大特点面向对象的设计思想是抽象出Class,根据Class创建Instance面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。定义类及初始化变量:...

2019-08-21 14:29:49 160

原创 Python中的偏函数Partial function

Python 的 functools 模块提供了很多有用的功能,其中一个就是偏函数(Partial function)通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以做到这一点比如:#int(s,base) 将其他进制转换为十进制 s为要转化为数值类型的字符串,base则为转换前的进制。print(int("1234"))#默认十进制print(int("1234",bas...

2019-08-08 14:38:29 204

原创 Pytnon中的装饰器>>Decorator

#在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)#装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,#装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,#比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,#有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继...

2019-08-08 14:15:52 114

原创 Kotlin类和对象_接口_抽象类

Kotlin支持面向对象编程(OOP)以及函数式编程。 面向对象编程基于对象和类。Kotlin还支持OOP语言的支柱,如:封装,继承和多态。Kotlin类与Java类基本类似,类是具有共同属性的对象的蓝图。 Kotlin类使用关键字class声明。 Kotlin类有一个类头,它指定了它的类型参数,构造函数等,以及由花括号包围的类体。class Account { var acc_no...

2019-07-04 11:10:20 255

原创 Kotlin入门

Kotlin中使用var、val来声明对象,区别在于:var(可变变量):在程序中可更改使用var关键字声明的变量的值。val(不可变变量):不能改变使用val关键字声明的变量的值,可简单理解为常量定义。var data=“mmp”val data2= 200val data3= true//变量通常不需要声明类型,编译器会根据数值推断数据类型var data4:String = “...

2019-07-03 16:02:29 748 1

原创 Futter组件整理汇总

Container(容器组件)自身具备以下属性:1.alignment:child对齐方式(AligenmentGeometry枚举值)2.padding组件内边距(EdgeInsets.only/EdgeInsets.all)3.color容器颜色4.decoration装饰器,决定组件样式,不能跟color属性共用5.width 宽度 (double.infinity宽度撑满)6....

2019-06-24 16:14:24 926

原创 Dart语言入门介绍

Dart诞生于2011年10月10日,google Dart语言项目的领导人Lars Bak在丹麦举行的Goto会议上宣布,Dart是一种结构化的web编程语言,它被ECMA认定为标准,用于Web、服务器、移动应用和物联网等领域的开发,是宽松开源许可证下的(开源软件)。Dart适合用于移动开发的特性:1:Dart是AOT(Ahead Of Time)编译的编译成快速,可预测的本地代码,使Flu...

2019-04-08 16:59:54 4813 4

原创 Python高阶函数map()、reduce()、 filter()、sorted()、匿名函数lambda

先介绍一个名词:函数式编程#函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回...

2018-10-24 14:38:19 184

原创 Python高级特性之二迭代Iterable

#Python的迭代跟java不同 java的迭代必须要有下标才可以迭代#但是Python只有是可迭代对象无论有没有下标,都可以迭代#比如list,tuple,dict,set,甚至字符串都可以#比如dictdict_f = {'aa':12,'bb':13,'cc':14}#dict字典list_f = [213,3213,3213,32432,432542]#list#key迭代...

2018-10-08 17:01:13 197

原创 Python高级特性之一Slice切片

1:python切片操作#对list tuple string执行切割操作 前闭后开L = ['aa','bb','cc','dd','ee','ff','gg']L2 = L[0:3]#切割前3个元素print(L2)#如果是从0开始截取,开头的0还可以省略print(L[:3])#如果不是从0开始,开头的数字不能省略print(L[1:3])#切片操作同样支持倒数操作 注:倒...

2018-10-08 15:56:11 133 1

原创 Python函数小结

在编程语言中一般包含顺序,条件,循环,等各种结构当我们经常会做一些功能的时候每次都写一模一样的代码就会显得很繁琐,我们就想把这些个功能一样的代码封装到一个某块中,方便下次使用,这种东西我们一般叫做函数或者方法一般的函数函数一般有以下几个要素 函数名、返回值、参数、函数体一个基本的Python函数格式是这样的def 函数名(参数): 函数体 return 返回值#python本...

2018-09-26 15:59:34 323 1

原创 Python中的集合列表

本文所列举的所有的关于Python的知识中都是基于Pyhon3的,本人作为一个初学者也是通过这个自己来学习Python,如有错误,欢迎各位指正。在java开发中我们会用到各种集合比较常用的有List和Map,用于初始化原始数据或者作为数据源传入一个方法中,在Python中主要有集合或者说列表list[],dict{},set{},tuple()这几种,本人将逐一列举之:1:首先是list,li...

2018-09-26 14:12:33 1487

转载 Android_WebView踩坑系列

WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,同时它也是一个ViewGroup可以有很多其他子View。在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit(http://www.webkit.org/)内核,而在Android 4.4及其以上Google 采用了chromium(http://www.chromium.org

2017-06-30 17:27:26 1116

原创 利用Android的api获取经纬度的方法

我们知道 在移动开发中涉及到定位的问题 我们通常采用高德,百度等第三方api来实现 ,虽然各家api的坐标体系是不一样的但是他们都提供了相互转换的方法,其实 在Android的官方api中也有定位的api,都在android.location包下。借助这个包下的几个类 我们同样可以实现定位的功能。我这里简单的写了一个demoimport android.content.Context;impo

2017-06-22 10:59:24 693

原创 Retrofit2.0初探

随着Google对HttpClient 摒弃,和Volley的逐渐没落,OkHttp开始异军突起,而Retrofit则对okHttp进行了强制依赖。 Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,Retrofit其实质上就是对okHttp的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络接口请求的底层, 其将请求返回jav

2017-05-11 13:49:54 372

原创 HttpURLConnection实现网络请求

自从Android5.x时代google将Apache抛弃之后,HttpURLConnection变成了Android系统默认的请求方式.两者的区别在于: 1、标准Java接口(java.net) —-HttpURLConnection,可以实现简单的基于URL请求、响应功能; 2、Apache接口(org.appache.http)—-HttpClient,使用起来更方面更强大。一般来说,用这

2016-11-26 15:47:01 1409

原创 Android沉浸式状态栏一体化最终版本

百度百科对沉浸式的定义是给用户提供一种完全沉浸的体验,使用户有一种置身于虚拟世界之中的感觉,比如现在大热的VR就是主打的沉浸式体验,对应到操作系统,这种沉浸式体验我们就经常看到了,游戏类或者影视类的应用都希望让用户完全沉浸在其中,享受他们提供的娱乐内容,也就是说让屏幕100%的空间用来展示内容。 先来两张截图 一张是游戏 一张是播放视频的时候 这时候你看不到导航栏和状态栏,整个屏幕都

2016-09-21 23:13:30 1078

原创 Service结合BroadcastReceiver实现跨进程通信的例子

在Android中跨进程通信是能够经常遇见的 ,像下载大文件需要更新下载进度这种东西,因为我们设置了下载的Service是在独立的进程里边,也就是说不是在默认的UI线程里边,传统的handler就无法实现了,跨进程通信的方法或许有好多,寡人知道的有三种分别为AIDL、Messenger、BroadCastReceiver.本文讲述第三种借助BroadCastReceiver实现跨进程通信。 roa

2016-08-18 17:30:24 3913 3

原创 AsyncTask结合HttpHrlConnection的例子

最近打算换工作了,看了一下面试题 发现我原来知识是如此的匮乏 吓得我赶紧去写个Demo冷静下,异步和网络请求在Android开发中是最基本的东西,在Android6.0中抛弃了Httpclient 我们只能使用Httpurlconnection了 在上一篇博客中我们看了AsyncTask 我们知道 它是采用handler+线程池的方式来实现的异步请求,自己再写一个http网络请求工具类就行了

2016-08-04 14:18:39 460 1

转载 AsyncTask是什么鬼

Android UI是线程不安全的,如果想要在子线程里进行UI操作,就需要借助Android的异步消息处理机制,在Android中实现异步任务机制有两种方式,Handler和AsyncTask。Handler模式需要为每一个任务创建一个新的线程,任务完成后通过Handler实例向UI线程发送消息,完成界面的更新,这种方式对于整个过程的控制比较精细,但也是有缺点的,例如代码相对臃肿,在多个任务同时执行

2016-08-03 16:59:28 1252

原创 Android中的IPC跨进程通讯

我们知道在Android开发中通讯传值是经常能够遇到的,像进程内部 进程与进程之间,如果是在进程内部 我们可以通过接口回调 或者EventBus来实现,尤其是第二个 在各个界面间传值非常方便,然而 如果是跨进程 的话他就隔屁了 什么时候应用会有多进程呢 比如在一个应用中要使用定位的功能,定位服务就可以交给一个进程去处理,第三方的服务都可以这样去提供,这样定位问题就很快了 在多进程中有多种实

2016-08-01 16:41:11 472

转载 从Mvc到Mvp

记得刚入行那会儿,Mvc架构都被吹上了天,去那家面试,都必须要问Mvc,突然一天风向一转来了一个Mvp,为什么会这样呢,让我们先来捋一下这两个概念 MVC: M : 业务层和模型层,相当与javabean和我们的业务请求代码 V : 视图层,对应Android的layout.xml布局文件 C : 控制层,对应于Activity中对于UI 的各种操作 看起来MVC架

2016-07-22 16:37:21 2892

原创 Android自定义View之画笔与画布(2)

上片文章初步讲述了自定义View的一些方法 还有一些小东西梳理下,不知道怎么了 突然的感到头疼,,真是一个悲伤的故事。 先来看一下DrawText方法/**baseLine和FontMetrics * 关于baseLine和FontMetrics * x,y并不是文字左上角的坐标点,它比较特殊,y所代表的是基线坐标y的坐标。基线 * drawText(String text, float

2016-07-18 16:31:27 595

原创 Android自定义View之画笔与画布

现在做的这个项目需要一个折线图的功能,当时想着使用第三方库来实现,结果总不能令我满意,只能通过自定义View用画笔去画了,这才发现 妈的 这东西我不会 赶紧去百度下,后来李大神把他画的折线图给我了,我一看那叫一个顶礼膜拜啊,通过百度和看源码翻译,一个方法一个方法的去看,,总算理出来一丢丢头绪,先记录下吧 在这里边有三个对象非常重要 Paint画笔 Canvas画布 Path路径 不多说了

2016-07-15 15:35:00 2738 1

转载 ListView单选多选

Android中,ListView可以设置choiceMode,可见Android对ListView的单选或多选是有进行封装的,然而我看到的许多单选或多选的ListView,包括我搭档以前写的例子,以前几个老外封装的库,都是自己维护了一个集合,用于存放每个item的选中状态。这样一来,不但代码显得繁复,逻辑上也成冗余,而且容易出BUG。 其实,ListView中,已经自己维护了一个SparseBo

2016-07-14 11:06:50 717

原创 Android5.x之沉浸式状态栏(2)

以前仿照鸿洋大神的方法写过一个沉浸式状态栏的例子 在他的那片博客中提到了一个工具类叫做SystemBarTintManager是用来实现沉浸式状态栏的,今天特意去了解了下这个类 确实比较屌,,借助ToolBar来实现 先贴一下SystemBarTintManager这个类的代码import android.annotation.SuppressLint;import android.annot

2016-07-13 13:56:34 408

转载 Android内存泄漏的情况

原文Eight Ways Your Android App Can Leak Memory 这篇文章是别人翻译的,,然后我觉得挺好 ,就拿过来了这是原文博客的地址 Java是垃圾回收语言的一种,其优点是开发者无需特意管理内存分配,降低了应用由于局部故障(segmentation fault)导致崩溃,同时防止未释放的内存把堆栈(heap)挤爆的可能,所以写出来的代码更为安全。不幸的是,在Jav

2016-07-13 10:16:13 587

原创 Android5.x之RecyclerView使用(5)网格布局

众所周知RecyclerView有所谓三种布局管理器 1:LinearLayoutManager线性布局管理器 2:GridLayoutManager网格布局管理器 3:StaggeredGridLayoutManager瀑布流布局管理器 用于取代ListView 和rGridView,本文讲述如何使用GridLayoutManager实现一个方形带分割线的网格布局分割线代码/**

2016-07-08 16:20:29 6666 1

原创 Android5.x之CardView

今天发现了一个好玩的东西,,CardVeiw卡片式布局,是Google在5.0新推出的v7兼容包继承自FramLayout,也就是说它是一个ViewGroup,那么他比Framlayout多了什么呢 A FrameLayout with a rounded corner background and shadow. /** *这个FrameLayout特殊点就是有rounded corner

2016-07-08 14:37:23 602

原创 Android中的服务Service初步(1)

我们知道在Android开发中UI线程是主线程,在主线程不能进行耗时操作 所以当我们访问接口或者现在的时候都需要开启线程 在这样的环境下 handler AsyncTask就是用来解决这样的问题的,还有一种方法就是Service 我们可以将一下耗时操作放在服务中,来避免ANR错误。 Service有如下两个特征 //1.并不依赖于用户可视的UI界面(当然,这一条其实也不是绝对的, // 如

2016-07-07 16:11:38 408

最新Android_Studio环境配置.pdf

Android Studio的配置文档,包括主题 字体 自定义导包,常用插件,方便快捷,版本不是最新,个别可能有差异,不过也大差不差,配置好了 开发效率成倍提高

2020-03-11

修改后的沉浸式状态栏在fragment中的使用,去吃状态栏阴影

修改后的沉浸式状态栏在fragment中的使用,去除状态栏阴影,实用版本,自己使用过

2017-09-02

一个简单的网络框架

一个简单的网络框架 自己写着玩的

2017-06-22

Image_loader的https请求

Image_loader的https请求

2017-06-22

沉浸式状态栏在fragment中的使用

现在我们借助一些flag或者一些第三方的库比如SystemBarTintManager,但是如果Activity有嵌套的fragment,每个fragment的沉浸式要求不同有的要求状态栏标题栏一致,有的要求全屏 有的要求颜色渐变 这种我们需要设置activity全屏 然后自定义一个状态栏

2017-05-17

Handler使用

整理了Handler的各种使用方法

2017-02-14

ViewPager切换动画

带切换动画的ViewPager切换

2017-02-06

通过PhotoView来实现微信朋友圈的图片预览效果

通过PhotoView来实现微信朋友圈的图片预览效果

2017-02-06

Hand;er的使用

自己写了一个handler用法的demo

2016-10-08

listView和recyclerView实现的上下拉刷新 以及接口回调

通过自定义的swieprefreshlayout来实现的列表刷新,封装通用adapter,接口回调来实现子item的子View的点击事件

2016-10-08

沉浸式状态栏

通过各种方式来实现的沉浸式

2016-09-22

AsyncTask结合HttpUrlConnection的例子

自己写了一个基于httpurlconnection和Asynctask的例子

2016-08-04

RecyclerView上下拉刷新

RecyclerView的上下拉刷新功能

2016-05-20

RecyclerViewDemo

解决RecyclerView和ScrollView的滑动冲突

2016-05-20

微信支付资源Demo

修改后的代码 因为未使用正式的签名包,所以支付只能调用一次 只有清楚微信缓存或者卸载重新安装微信才能再次使用

2016-05-19

银联支付练习

屌屌的银联支付

2016-05-18

Android5.x之沉浸式状态栏

定制状态栏的颜色,使我们的app看起来不是那么无聊,生硬,,更能够有特点,,实现跟IOS一样的效果

2016-01-06

自定义二次封装Volley

自定义二次封装Volley,实现json下载,文件上传.

2015-12-22

Picasso下载网络图片

利用Picasso毕加索框架进行网络图片的下载.

2015-12-21

利用universal-image-loader下载图片

利用universal-image-loader进行网络图片的下载操作,比其他框架更高效,防止OOM

2015-12-21

xUtils3.0Demo

最新Xutils3.0使用

2015-12-17

Android常用工具类

Android常用工具类,包括各种屌炸天的工具类,应有尽有

2015-12-17

Android接入支付宝

接入支付宝 傻瓜式操作.

2015-12-17

Volley二次封装,用于网络请求(上传,下载)

通过对Volley进行二次封装,可以更方便的完成各种网络请求,json, 图片的下载,文件的上传,更方便的完成内存的管理,减少重复代码。 提高代码的执行效率

2015-12-17

实现像支付宝一样的密码框

实现像支付宝一样的弹出密码框界面,当在APP中涉及到安全操作时,可照此操作,也可用于验证用户身份,增加安全性

2015-12-16

空空如也

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

TA关注的人

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