- 博客(43)
- 资源 (26)
- 收藏
- 关注
原创 安装与配置Flutter开发环境
这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter。由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好使用Mac系统,这样我们可以同时测试两个平台的运行效果。本文我们就来介绍在Mac系统下安装与配置Flutter开发环境,并且运行我们的第一个Flutter应用!为了Flutter的安装配置顺利,请...
2019-03-22 07:38:29
381
原创 Spring Boot 2 - 使用CommandLineRunner与ApplicationRunner
本篇文章我们将探讨CommandLineRunner和ApplicationRunner的使用。在阅读本篇文章之前,你可以新建一个工程,写一些关于本篇内容代码,这样会加深你对本文内容的理解,关于如何快速创建新工程,可以参考我的这篇博客:Spring Boot 2 - 创建新工程概述CommandLineRunner和ApplicationRunner是Spring Boot所提供的接口,他...
2019-03-21 14:13:34
1309
原创 Flutter介绍 - Flutter,H5,React Native之间的对比
Flutter介绍Flutter是Google推出的开源移动应用开发框架。开发者可以通过开发一套代码同时运行在iOS和Android平台。它使用Dart语言进行开发,并且最终编译成各个平台的Native代码,这样既保证了开发效率,也保证了各个平台的运行效率。其相当于从头到尾重写了一套UI框架,不依赖具体平台的组件。其所有的组件都是"Widget"。渲染引擎则依靠高效渲染库Skia实现。下面我...
2019-03-20 18:35:29
1270
原创 Spring Boot 2 - 初识与新工程的创建
Spring Boot的由来相信大家都听说过Spring框架。Spring从诞生到现在一直是流行的J2EE开发框架。随着Spring的发展,它的功能越来越强大,随之而来的缺点也越来越明显,以至于发展到后来变得越来越臃肿,使用起来也非常的麻烦。到后来由于过于强调配置的灵活性,有时即使只为了加入一个简单的特性,而需要相当多的XML配置,从而被人们诟病为"配置地狱"!后来许多优秀的服务端框架涌...
2019-03-19 22:16:50
297
原创 Android开发 - 掌握ConstraintLayout(十一)复杂动画!如此简单!
介绍本系列我们已经介绍了ConstraintLayout的基本用法。学习到这里,相信你已经熟悉ConstraintLayout的基本使用了,如果你对它的用法还不了解,建议您先阅读我之前的文章。使用ConstraintLayout创建动画的基本思想是我们创建两个不同的布局,每个布局有其不同的约束,从而我们使用其动画框架来进行两种约束之间的切换。传统动画以往在我们创建简单动画时,通常我们会使用...
2018-12-05 10:12:00
313
原创 Android开发 - 掌握ConstraintLayout(十)按比例设置视图大小
有时候在布局界面的时候,UI要求某个View或者某张图片按比例显示,以适应不同的屏幕分辨率。通常我们时通过自定义View或者引入第三方的库来解决。现在我们既然已经使用了ConstraintLayout,它本身就支持这样的按比例设置View大小的功能。下面我们来介绍如何使用:首先我们在布局中添加一个View:此时,没有添加任何约束,显示的比例就是原始图片的比例。添加水平方向的约束:...
2018-12-04 15:29:27
3256
原创 Android开发 - 掌握ConstraintLayout(九)分组(Group)
使用ConstraintLayout后我们的布局是没有层级关系的,各个View之间都是平级关系,但是如果根据某个业务条件来控制多个View的显示与否,我们需要分别对每个View进行控制,需要调用多次setVisibility()。这样就显得非常不方便。本文所介绍的Group就是解决这个问题的。Group就是一个分组,可以关联多个View,从而只需要对这个分组进行控制就可以实现这样的场景。我们...
2018-12-03 13:47:43
788
原创 Android开发 - 掌握ConstraintLayout(八)障碍线(Barrier)
本文我们来介绍障碍线(Barrier)的使用,平常在开发中用的相对要少一些,但是在需要时会非常方便。它的作用是将多个元素放到这个障碍线里面使时,其中的任何元素的大小或位置变化时都会使它的位置进行改变。可以理解成一面墙,"墙"里面任何元素的位置或大小改变时都会导致它的改变,从而保证所有的元素都在"墙"里面。下面我们来举例进行说明,会更加直观。首先,我们先创建两个元素:接下来,我们...
2018-11-29 14:02:51
1106
原创 Android开发 - 掌握ConstraintLayout(七)辅助线(Guideline)
了解过UI设计的同学都知道,在设计的时候,我们经常在界面上拖进一些辅助线来帮我们对齐UI元素,或者方便我们统一的页边距。在ConstraintLayout的编辑器中,同样也支持这样的功能,我们可以创建一些横向的或者纵向的Guideline,在布局界面的时候可以充分利用这些辅助线,对齐我们的View,避免重复写一些marginXXX。创建Guideline打开编辑器,选择Helpers -&g...
2018-11-08 14:14:32
5801
原创 Android开发 - 掌握ConstraintLayout(六)链条(Chains)
本文我们介绍链条(Chains),使用它可以将多个View连接起来,互相约束。可以创建横向的链条,也可以创建纵向的链条,我们以横向的链条举例:我们先创建三个按钮:我们选中三个按钮后在上面点右键创建链条:创建后我们发现这三个View平均分布地排列了:最简单的使用是平均分布,当然也可以不平均分布,具体看约束的具体设置,比如将第一个Button的marginEnd设置成10后...
2018-11-07 14:57:00
2880
原创 Android开发 - 掌握ConstraintLayout(五)偏差(Bias)
比如实现这样一个场景:“在屏幕宽度的1/4的地方放置一个View”使用传统布局时,实现按照屏幕的宽度(高度),或者相对两个View之间距离的一个比例来进行布局,就显得非常麻烦,但是当使用ConstraintLayout时,就可以很简单地实现这样的需求。BiasBias就是为了实现这种需求而设计出来的。我们来举例说明,看下图:当前我们是将这个按钮相对屏幕宽度居中显示。那么我们如何...
2018-11-06 17:44:58
695
原创 Android开发 - 掌握ConstraintLayout(四)创建基本约束
上一篇我们介绍了编辑器的基本使用,本文我们介绍创建基本的约束。"约束"表示View之间的位置关系。当我们在ConstraintLayout布局中创建View时,如果我们没有添加任何约束,虽然在设计视图我们可以拖动它们到任意位置,但是运行后都会在左上角的原点位置,同时代码中也会给出警告:所以我们必须确保我们的View都被添加了适当的约束。我们常用的约束通常有两种,一种是相对父View的约束,...
2018-11-05 18:15:58
232
原创 Android开发 - 掌握ConstraintLayout(三)编辑器
从本篇博客开始我们开始介绍如何使用ConstraintLayout。既然ConstraintLayout叫约束布局,首先我们先介绍什么叫约束(Constraints):约束(Constraints)一个约束表示View之间的"布局约束"关系,以及约束的位置,类似RelativeLayout的"相对"概念。编辑器介绍在工程中我们新建一个布局activity_main.xml,整个界面如下:...
2018-11-01 14:13:27
306
原创 Android开发 - 掌握ConstraintLayout(二)介绍
介绍发布时间ConstraintLayout是在2016的Google I/O大会上发布的,经过这么长时间的更新,现在已经非常稳定。支持Android 2.3(API 9)+目前的Android设置几乎没有低于Android4.4(Api 19)的,所以ConstraintLayout可以支持所有的设备。单独的依赖包ConstraintLayout并不是Android SDK的一部分,...
2018-10-31 15:05:40
254
原创 Android开发 - 掌握ConstraintLayout(一)传统布局的问题
在传统的Android开发中,页面布局占用了我们很多的开发时间,而且面对复杂页面的时候,传统的一些布局会显得非常复杂,每种布局都有特定的应用场景,我们通常需要各种布局结合起来使用来实现复杂的页面。随着ConstraintLayout的推出,这种现象有了很大的改善,而且它可以实现很多传统布局难以实现的功能。本系列我们就一起来学习ConstraintLayout的使用,来大幅提高我们的生产力。传统...
2018-10-30 15:17:07
620
原创 Android开发 - 解决DialogFragment在全屏时View被状态栏遮住的问题
我的上一篇文章:设置DialogFragment全屏显示 可以设置对话框的内容全屏显示,但是存在在某些机型上顶部的View被状态栏遮住的问题。经过测试,发现了一种解决办法,在DialogFragment的onCreateView()中添加一个布局监听器:@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup co...
2018-10-29 11:56:52
3618
原创 Android开发 - 设置DialogFragment全屏显示
默认的DialogFragment并不是全屏,但有些需求需要我们将对话框设置为全屏(内容全屏),Android并没有提供直接的API,通过其它不同的方法设置全屏在不同的机型上总有一些诡异的问题,经过测试,下面的方法可以实现各个机型的全屏。测试 SDK Version = 28覆写Fragment的onStart()方法:@Overridepublic void onStart() { ...
2018-10-22 18:56:06
1061
原创 Android开发 - Retrofit 2 使用自签名的HTTPS证书进行API请求
为了确保数据传输的安全,现在越来越多的应用使用Https的方式来进行数据传输,使用https有很多有点,比如:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。但是即使使用HTTPS有很多有点...
2018-10-19 15:47:28
670
原创 Android开发 - 更"聪明"的申请权限方式
在Android6.0以后,很多权限需要动态申请,只有在用户点同意后,我们才能使用对应API,因此,正确申请权限就显得很重要。常用方式通常我们使用这种方式来判断权限状态:private static boolean isGranted(final String permission) { return Build.VERSION.SDK_INT < Build.VERSION_...
2018-10-18 15:25:46
253
原创 Android开发 - 获取Android设备的唯一标识码(Android 6.0或更高)
在我们的APP开发中,通常需要获取到设备的唯一标识。在Android6.0之前,有很多方法我们可以方便获取到硬件的唯一标识,但是在Android6.0之后,Android系统大幅限制了我们获取设备的硬件信息。Android6.0之前的方法(已过时)DEVICE_ID通getSystemService(Context.TELEPHONY_SERVICE).getDeviceId()获取...
2018-10-17 16:39:59
1440
原创 Android开发 - 获取系统输入法高度的正确姿势
问题与解决在Android应用的开发中,有一些需求需要我们获取到输入法的高度,但是官方的API并没有提供类似的方法,所以我们需要自己来实现。查阅了网上很多资料,试过以后都不理想。比如有的方法通过监听布局的变化来计算输入法的高度,这种方式在Activity的配置中配置为"android:windowSoftInputMode=“adjustResize”"时没有问题,可以正确获取输入法的高度,...
2018-10-17 13:57:28
2136
原创 Android开发 - ImageView加载Base64编码的图片
在我们开发应用的过程中,并不是所有情况下都请求图片的URL或者加载本地图片,有时我们需要加载Base64编码的图片。这种情况出现在服务端需要动态生成的图片,比如:二维码图形验证码…这些应用场景有个共同点就是,这些图片都是由服务器动态生成,并不需要生成后保存成文件再返回给客户端。Android中ImageView加载Base64图片其实非常简单,并不需要引入第三方库,方法如下:imp...
2018-10-15 14:00:04
9763
2
原创 使用Python请求http/https时设置失败重试次数
使用Python的requests库时,默认是没有失败时重试请求的,通过下面的方式可以支持重试请求设置请求时的重试规则import requestsfrom requests.adapters import HTTPAdapters = requests.Session()a = HTTPAdapter(max_retries=3)b = HTTPAdapter(max_retr...
2018-09-19 14:14:31
3008
原创 Windows下安装配置爬虫工具Scrapy及爬虫环境
爬虫工具Scrapy在Mac和Linux环境下都相对好装,但是在Windows上总会碰到各种莫名其妙的问题。本文记录下Scrapy在Window上的安装过程。本文是基于Python2.7及Windows 10安装Scrapy及各种爬虫相关库。下载安装ScrapyScrapy官方文档按照官网建议下载安装Anaconda,使用这个安装比直接pip安装会少很多问题。下载地址安装完...
2018-09-19 14:09:22
620
1
原创 Python地理位置信息库geopy的使用(二):根据中心点坐标,方向,距离计算坐标
上一篇文章我们介绍了geopy的基本使用,这一篇文章我们根据中心点坐标,方向,距中心点距离计算出对应的坐标点,这种用法官网并没有给出详细的文档,我们这里做一下说明生成坐标点的具体方法import geopy.distancedef get_distance_point(lat, lon, distance, direction): """ 根据经纬度,距离,方向获得一个...
2018-09-18 15:06:05
4421
原创 Python地理位置信息库geopy的使用(一):基本使用
geopy是Python关于地理位置的一个第三方库,用这个库来进行地址位置信息的查询和转换非常方便,本文介绍关于geopy的常用的几种用法geopy的安装pip install geopy根据地址查询坐标及详细信息>>> import json, logging>>> from geopy.geocoders import Nominatim&...
2018-09-18 14:53:50
8003
原创 使用Charles对Android App的https请求进行抓包
本文背景 公司新项目要求抓取目前市面上一些热门App的数据,经过研究发现很多App的网络请求都使用https进行数据传输,这样问题就来了,http使用明文传输所有请求都能拦截到,而https请求无法拦截。 所以这里我们要使用Charles来抓取https,但是笔者看了网上很多使用iOS设备进行抓取https的文章,经测试iOS8/10/11均无法进行正常抓取,即使信任证书也不行。 ...
2018-09-17 14:00:34
1360
原创 Mac下更改Mysql5.7的默认编码为utf8
Mac上从官方安装完Mysql5.7后,有一部分的字符集默认为latin1,而非utf8,为避免乱码的产生,本文介绍将所有字符集设置为utf8查看当前字符集编码show variables like '%char%'; 我们会发现这些字符集为latin1修改字符集为utf8关闭Mysql服务新建一个my.cnf配置文件,执行下面命令,如果已存在则会...
2018-09-15 12:27:55
752
原创 Linux系统CentOS 7配置Spring Boot运行环境
从阿里云新买的一台Linux服务器,用来部署SpringBoot应用,由于之前一直使用Debian版本,环境配置有所不同,也较为繁琐,本文主要介绍CentOS下配置SpringBoot环境的过程新建用户由于新拿到的机器只有root用户,用root用户直接进行各种操作会有一定的安全问题,所以我们先创建用户点击这里:创建新用户安装Oracle Java 8Sprin...
2018-09-14 14:01:17
1108
原创 CentOS 7 - 配置服务实现开机自启动
新建系统服务描述文件cd /etc/systemd/systemsudo vim myapp.service添加以下配置:[Unit]# 这里添加你的服务描述Description=myappAfter=syslog.target[Service]# 这里更改为你的用户名User=myapp# 这里路径为你的spring boot工程的jar包路径Exe...
2018-09-14 13:56:09
635
原创 CentOS 7 - 安装Nginx
Nginx是一个高性能的Web服务软件。相比Apache HTTP Server更加的轻量级和灵活,是在WEB及服务端开发中必不可少的工具。 本文我们将介绍CentOS 7下Nginx的安装。添加仓库sudo yum install epel-release安装Nginxsudo yum install nginx启动Nginxsu...
2018-09-13 19:38:06
168
原创 CentOS 7 - 安装MySQL 5.7
CentOS 7的默认yum仓库中并没有MySQL5.7,我们需要手动添加,好在MySQL官方提供了仓库的地址,所以我们能够比较简单地安装MySQL。 本文我们将介绍CentOS 7下MySQL5.7的安装。添加Mysql5.7仓库sudo rpm -ivh https://dev.mysql.com/get/mysql57-community-release-e...
2018-09-13 19:37:21
200
原创 CentOS 7 - 安装Oracle JDK8
我们要在CentOS安装最新版本的JDK8,需要首先将JDK下载到服务器,然后通过操作系统自带的工具yum进行安装。 本文我们将介绍CentOS 7下JDK8的安装。从官网下载页面找到JDK8的下载链接,下载到本地wget --header "Cookie: oraclelicense=accept-securebackup-cookie" http://downlo...
2018-09-12 14:27:39
1336
原创 CentOS 7 - 创建新用户
当进行服务器操作时,我们尽量不要使用root用户进行操作,特别是当我们使用生产环境时。 本文我们将介绍CentOS 7下用户的创建。创建新用户adduser 用户名更改用户密码passwd 用户名输入以上命令后输入两次同样的密码,即可修改成功将用户添加到wheel用户组里,因为wheel用户组拥有sudo的权限usermod -...
2018-09-12 14:26:38
399
原创 Android开发教程 - 使用Data Binding Android Studio不能正常生成相关类/方法的解决办法
有时候新建布局文件时或者定义布局中的变量时,不能即时生成相关Binding类或方法(其实是不能正确索引),也许是IDE支持的一些BUG,不过Android Studio对Data Binding的支持问题也仅限于这些,并且可以比较简单地解决这些问题。方法一(经常不起作用):菜单 -> Build -> Clean Project -> Rebuild Pro...
2018-09-12 14:07:15
1215
原创 Android开发教程 - 使用Data Binding(八)使用自定义Interface
为什么要使用自定义Interface我们平常在Android的开发中,比如如果要设置一个View的点击事件,通常通过view.setOnClickListener()来实现的,这种方式略显繁琐,而且要通过findViewById()来获取到此View的引用。使用了Data Binding技术以后,我们无需这样做,可以直接通过在xml布局文件中设置一个Interface的实现来直接调用某个方法...
2018-09-11 13:49:06
468
原创 Android开发教程 - 使用Data Binding(七)使用BindingAdapter简化图片加载
什么是BindingAdapterBindingAdapter用来设置布局中View的自定义属性,当使用该属性时,可以自定义其行为。下面是一个简单的例子:@BindingAdapter("android:bufferType")public static void setBufferType(TextView view, TextView.BufferType bufferTyp...
2018-09-11 13:48:08
1443
原创 Android开发教程 - 使用Data Binding(六)RecyclerView Adapter中的使用
前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,除此之外,Data Binding也可以使用在RecyclerView/AdapterView的Adapter中,本文以RecyclerView为例。获取Binding对象按照通常的做法,我们在Adapter中会定义一个ViewHolder,在此ViewHolder中取得一些布局Vie...
2018-09-10 14:15:14
1777
原创 Android开发教程 - 使用Data Binding(五)数据绑定
前面我们讲到了Data Binding在Activity中的使用和在Fragment中的使用,在两者的布局文件中,都可以绑定数据(对象),本篇文章我们就来介绍数据的绑定。<data>标签在这个标签中,我们通常用来做下面的事情: - 定义所绑定的数据的名称(变量名)及对应类型 - 引入页面所需的类示例如下:<data> <im...
2018-09-10 14:14:27
350
原创 Android开发教程 - 使用Data Binding(四)在Fragment中的使用
修改fragment的布局同上一篇:在Activity中的使用中一样,在Fragment中使用Data Binding同样需要修改布局,修改方式也跟Activity一样,在最外层加上\标签:<?xml version="1.0" encoding="utf-8"?><layout xmlns:andro
2018-09-06 14:45:40
7563
Android行业及上路
2013-05-30
Android UI开发专题
2013-05-30
Android framework详细分析 PDF
2013-05-30
Cocosbuilder 3.0 alpha4 场景编辑器 Mac
2013-05-30
Echo 1.2 for Mac - HTTP服务测试工具
2013-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人