自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android Arcgis 优化--------道格拉斯-普克抽稀算法

最近偶然接触到抽稀相关的算法。发现道格拉斯抽稀算法很适合目前项目某一个功能优化。所以我抽空看了一下,也写了针对经纬度路径点抽稀的工具类。下面我们先看看该算法的结束。介绍道格拉斯-普克算法(Douglas–Peucker algorithm,亦称为拉默-道格拉斯-普克算法、迭代适应点算法、分裂与合并算法)是将曲线近似表示为一系列点,并减少点的数量的一种算法。该算法的原始类型分别由乌尔斯·拉默(Urs Ramer)于1972年以及大卫·道格拉斯(David Douglas)和托马斯·普克(Thomas

2021-06-25 10:25:44 1009 1

原创 浅谈 Flutter 空安全

浅谈 Flutter 空安全介绍使用使用过程容易出现的问题常用场景总结介绍空安全(Sound null safety)是Flutter 更新之后 Dart 中新增的一项特性,它并不是独有的,像Kotlin、swift等语言也有此特性。有了空安全,Dart 分析器可以进行更好的检查。例如:它将在您读取一个可空的变量前提示您进行空检查。由于 Dart 的空安全是十分有效的, Dart 编译器和运行环境也同时可以通过优化减少内部的空安全检查, 这样应用就可以更快且更小。与空安全相关的新操作符和关键字有 ?、!

2021-04-28 09:16:45 2392 2

原创 Flutter 之 Dart 基础 ----- 函数

前言上一篇我们了解到Dart的变量声明方式和区别以及一些常见操作,也都比较的基础。我们今天再来讲一讲。在Dart语言中,函数(方法)相当于一个对象。定义函数的方法,也跟Java非常类似,不过也有一些区别。比如返回类型跟参数类型可以省略,不过我自己还是比较建议显示去指定类型。毕竟代码可读性和调试会方便点。看一下代码,两个函数的效果是一样的。main() { String s1 = printStr("李雷"); print('s1:'+s1); }String printStr

2020-05-19 20:36:05 407

原创 Flutter 之 Dart 基础语言入门

前言接下来一段时间自己可能要慢慢接触Flutter,Flutter采用Dart语言开发。因为前些时间开发过微信小程序,对于我这种不怎么接触前端语言的人来说,学习起来还是需要花费一定的时间和精力。而Flutter开发的话对于原生开发来说比较容易接受。介绍Dart在静态语法方面和Java非常相似,如类型定义、函数声明、泛型等。而在动态特性方面又和JavaScript很像,如函数式特性、异步支持等。总的来说,个人理解Dart有以下几点好处1、Dart可基于AOT(Ahead Of Time)

2020-05-19 08:38:26 326

原创 Android Jetpack 之 ViewModel

简介:官方解释:ViewModel 类旨在以注重生命周期的方式存储和管理界面相关的数据。ViewModel 类让数据可在发生屏幕旋转等配置更改后继续存在。其实简单来讲就是解决下面的问题:1、Activity配置更改重建时(比如屏幕旋转)保留数据;2、UI组件(Activity与Fragment、Fragment与Fragment)间实现数据共享。第一种情况下我们一般是通过onSa...

2020-04-21 11:45:26 439 1

原创 Android Jetpack 之 LiveData

简介:LiveData 是一个有生命周期感知 & 可观察数据持有者类。作用:持久化的观察数据的更改和变化。特点:1、感知对应的Activity的生命周期,只有生命周期处于onStart、onResume时,LiveData处于活动状态,才会把更新的数据通知至对应的Activity。2、当生命周期处于onStop 或 onPause 时,不回调数据更新,直至处于onResume时...

2020-04-09 14:26:13 304

原创 Android Jetpack 之 DataBinding

简介DataBinding 是 Google 在 Jetpack 中推出的一款数据绑定的支持库,利用该库可以实现在页面组件中直接绑定应用程序的数据源。使其维护起来更加方便,架构更明确简介。个人理解DataBinding 是以声明的方式,将布局中组件与应用程序数据源绑定在一起的框架库。作用:1,将布局组件与源数据绑定,使数据源变化的同时布局组件及时同步更新。2,减少Activ...

2020-04-08 16:40:13 259

原创 设计模式之代理模式

前面的几篇文章讲了简单工厂模式、工厂模式、建造者模式几种设计模式,其中这几种设计模式分创建型设计模式。设计模式分为三大类:第一类:创建型设计模式,常见的有单例模式、简单工厂模式、工厂模式(抽象工厂模式),建造者模式......第二类:结构型设计模式,常见的适配器模式、装饰模式、代理模式、外观模式......第三类:行为型设计模式,策略模式,模板方法模式,观察者模式、迭代器模式.........

2019-09-16 13:55:05 181

原创 设计模式之建造者模式

今天我们来说说设计模式中的建造者模式。日常开发中我们见过的建造者模式应该还不算少,平常用的Dialog和一些第三方框架,挺多一部分正是用了建造者模式。建造者模式是创建一个复杂对象的创建型模式,有人也称它为生成器模式,它将其构建复杂对象的过程和它的组件解耦,使得构建过程和组件分离开来。比如我们自己DIY一部手机,我们可以根据自己的喜好去选择它的CPU,是麒麟的还是骁龙的,还有它的屏幕, ...

2019-08-20 09:16:09 288

原创 设计模式之工厂模式

上篇的话我们简单介绍了简单工厂模式。这篇的话是介绍工厂模式。首先我们还是来了解一下工厂模式的定义。定义:定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。IProduct:抽象产品类。Product:具体产品类,继承IProduct或实现IProduct接口。Factory:抽象工厂类,该方法返回一个IProduct类型的对象。Conc...

2019-08-19 14:13:27 153

原创 设计模式之简单工厂模式

简单工厂模式(又叫作静态工厂方法模式),其属于创建型设计模式。首先先看看它的定义。定义:简单工厂模式属于创建型模式,其又被称为静态工厂方法模式,这是由一个工厂对象决定创建出哪一种产品类的实例。在简单工厂模式下有如下角色:Factory : 工厂类,这是简单工厂模式的核心,它负责实现和创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需产品对象。IProduct:...

2019-08-19 10:04:53 134

原创 工作中图片的三级缓存机制介绍

现在android应用中不可避免的要使用图片,有些图片是可以变化的,需要每次启动时从网络拉取,这种场景在目前市场的应用以及纯图片应用(比如百度美拍)中比较多。实现图片缓存也不难,需要有相应的cache策略。这里我采用 内存(memory)-本地(local)-网络(Internet) 三层cache机制,其实网络不算cache。当根据url向网络拉取图片的时候,先从本应用内存中找,如果内存中没...

2019-06-25 09:38:52 460

原创 设计模式之单例模式

挺久没更新博客。趁着最近不太忙。打算写一下设计模式方面的一些知识。今天写的时平时工作中比较常用的设计模式-----单例模式。定义:保证一个类仅有一个实例,并提供一个访问它的一个全局访问点。平时我们工作中比如需要经常的调用一个实例做某件事情时,并且这个实例只能有一个的时候,会用到这个模式。比如图片加载器,持久化存储等等情况下使用。单例模式有多种写法,每种有利有弊。需要我们自己权衡利弊去使用。第一种:...

2018-06-23 10:48:36 177

原创 利用Jsoup爬取糗事百科数据

在开始之前先日常介绍一波 Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。jsoup的主要功能如下:1. 从一个URL,文件或字符串中解析HTML;2. 使用DOM或CSS选择器来查找、取出数据;3. 可操作HTML元素、属性

2017-12-27 14:22:06 458

原创 简单进阶随手指移动的View

因为公司新开项目,好久没空更新博客,今天稍微练练手写了一个简单的小Demo,手指移动View。是很简单,所谓难点只是需要清楚控件TouchEvent的几个Action的了解及控件位置X坐标Y坐标和偏移量的计算。我们自定义一个class 继承View ,然后重写onTouchEvent方法,看下代码:@Override public boolean onTouchEvent(Moti

2017-12-13 11:49:17 356

原创 Kotlin学习(一)基础语法

玩了一整天的kotlin,发现根本停不下来,语法写的好痛快。今天就来写写Kotlin那些基本语法,其实跟Java有些一样又有些不一样,我们来看看:函数首先看一个基本的函数:基本函数 fun add(a: Int, b: Int): Int { return a + b } 简易写法 fun add(a :Int,b :Int) = a+b

2017-06-08 10:17:55 477

原创 AndroidStudio上第一个Kotlin项目

2017 Google爸爸的IO大会刚结束,想必小伙伴也知道了,谷歌宣布Kotlin语言将作为Android开发的一级编程语言,我自己也研究了一下,确实可以像网上吹的那样,减少3倍代码量。。。Kotlin有着新时代语言的各种新特性,但是现在想要自身完全脱胎换骨是不可能的,所以,Kotlin还有一个非常牛X的优势:完全兼容java,也就是说项目中可以同时具备java和Kotlin两种语言。我们老旧代

2017-05-19 13:31:10 1000

原创 运行第一个python简单hello world脚本

Python环境安装好之后我们就可以愉快写脚本了,如果上篇没看的话的话小伙伴可以看环境安装的介绍。传送门在这里:http://blog.csdn.net/tracy1024/article/details/72179323python脚本有IDE可以写,今天的话我只是用很原始的方式运行第一个python脚本,请见谅。首先的话我们新建一个文本文档,里面添加:#!/usr/bin/pyth

2017-05-17 11:20:43 8555

原创 Python Windows下环境安装

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。Python 是交互式语言: 这意味着,您可以在一个P

2017-05-15 17:19:16 508 1

原创 粒子动画显示文字的Android控件

偶然在github上看到用粒子动画显示文字的一个控件,觉得挺有意思。今天介绍一下怎么用。github 原地址:https://github.com/Yasic/ParticleTextView首先在build.gradle中 添加上依赖:compile 'com.android.support:appcompat-v7:23.4.0'这里需要注意的是要求最低sdk版

2017-05-11 16:13:26 951

原创 Android 下 编写自己第一个NDK Demo

废话不多说首先新建一个项目然后新建一个NDK工具类,然后内部声明native方法之后就build project ,之后会得到中间文件,我们关注的是classes文件夹:然后我们点出Android Studio 下面的Termina标签输入一下命令,首先进入classes文件夹下的debug文件下,然后输入javah命名cd app\build\intermed

2017-04-27 16:46:22 523

原创 Unity3D下把项目转成AndroidStudio项目

最近公司有个新需求需要用到3D引擎,然后自己就先了解了一下Unity3D的开发工具,我用的是Unity3D 5.0.0。因为只是简单转成AndroidStudio,没涉及到太多代码。我自己只是简单建了一些模板,然后我们就可以开始了。以下就是步骤:首先点击左上角File,然后选择Build  Settings 之后我们进入这个页面:然后如果在Scenes In Bui

2017-04-22 10:39:11 3519

原创 2017

共勉!

2017-02-19 16:15:39 514

原创 蓝牙ble实现空中升级功能

这阵子比较懒也比较忙,回到家里就不想弄代码0.0   博客也好久没更新。实在抱歉。这阵子公司App需要实现空中升级的功能。在网上也找了好久毫无头绪。偶然看到了nRF 工具箱的源码。翻了翻,终于把它实现了。今天就来说说空中升级的实现。首先我们需要往项目的build.gradle文件中导入我们空中升级所需要的第三方包:

2016-11-17 20:10:59 8071 34

原创 代码中解除手机已配对的蓝牙设备

这几天被一个问题困扰了很久,就是app里面连接蓝牙设备之后解绑断开,蓝牙回调也显示了断开,但是自己再去搜就搜不到了。找了很久原因发现在手机设置的蓝牙配对列表中发现该设备已被配对,导致手机搜不到。然后就找到一个方法得到手机配对的蓝牙列表然后再通过反射的机制取消蓝牙的配对,到这里之后手机就能搜到了蓝牙。但是之后的每一次连接都需要再重新配对。接下来贴下代码://得到配对的设备列表,清除已配对的设备

2016-10-19 11:09:12 7489 1

原创 MVP下扫描蓝牙得到列表实例

今天讲下一直让我很痛苦的蓝牙0.0。简单写了个小Demo来说下蓝牙扫描。MVP的架构其实自己也不是很熟悉,自己就简单玩了一下。首先看下需要定义的接口代码:/** * Created by Administrator on 2016/10/18. */public interface IDeviceControlPresenter { /** * 数据刷新与加载

2016-10-18 21:20:53 628

原创 Retrofit的简单介绍使用

今天说下关于网络的东西,公司的项目的网络请求都是用okhttp搭的,前阵子在网上看到Retrofit这东西,它跟okhttp一样都是Square公司,retrofit就是对okhttp做了一层封装。我觉得它对于okhttp的区别最大的一点就是用注解的方式来设置参数请求等。所以可以说RxAndroid跟它算是绝配。今天只是简单玩了下get请求。例子有点基础,我也在探究阶段0.0     好了。接

2016-09-29 21:33:54 342

原创 Universal-Image-Loader的简单介绍和使用

今天说的是Universal-Image-Loader的使用,它也是一个比较强大的开源的UI组件程序。它有如下几个特征1.多线程下载图片,图片可以来源于网络,文件系统,项目文件夹assets中以及drawable中等2.支持随意的配置ImageLoader,例如线程池,图片下载器,内存缓存策略,硬盘缓存策略,图片显示选项以及其他的一些配置3.支持图片的内存缓存,文件系统缓存或者SD卡缓

2016-09-24 11:32:34 724

原创 Fresco的简单介绍及简单使用

今天来说的也是一个图片框架,Fresco是Facebook推出的一个用于展示图片的图片库,可以从网络、本地存储等加载我们想要的资源。平时我用过的话都是从网络中获取图片。它相对ImageLoader来说,加载、下载速度来说更具优势,它还支持GIF图的加载显示。今天我就来简单介绍下吧。首先是它的github地址:github地址:https://github.com/facebook/fr

2016-09-22 20:48:14 573

原创 Picasso的简单介绍和使用

写了之前的几篇Design下的UI框架,觉得是时候说说之前用过的图片框架。怎么说呢。由于现在公司做的都是蓝牙手环方面,网络请求图片方面的我都怕自己忘了,而听说现在其他公司做手环是用了新的一种模式,就是把手环数据上传到网络,而手机端再从网络下载所需要的数据显示。而我们公司却不是这样 0.0.。。。总之,好怀念以前写CallBack的日子。所以写了个简单的Picasso小例子自己熟悉一下。好了,牢骚发

2016-09-21 22:33:17 1068

原创 MaterialDesign下的多个UI框架的综合案例详解

写了几篇关于Design下的UI框架,今天打算结合协调者布局CoordinatorLayout及ToolBar等多个Design下的控件。然后集成成一个小Demo供大家学习。不多说了,大家先看下效果图吧。首先是布局文件,大体框架是DrawerLayout里面包含一个NavigationView和一个CoordinatorLayout。CoordinatorLayout中则包括AppBarL

2016-09-10 13:03:10 1680

原创 RecycleView和CardView的简单介绍和用法

很久之前在公司上遇到一个需求就是需要将ListView中的item布局改成每张每张卡片的那种样式,那时候还没接触到Design的各种UI框架,也算是挺久之前了。当时基本就慌了,心里骂了很多次什么傻B需求。后来也是自己找了挺久发现了RecylerView,也发现了Design,也学习了这些东西。今天旧事重谈,就写了个简单小Demo,因为在现在公司做的都是手环蓝牙方面的东西,把之前学过,弄过的东西都差

2016-09-07 21:31:40 1190

原创 Design下TextInputLayout结合EditText的简单使用

今天写的是Design下的TextInputLayout。稍微介绍一下,一般我们在App上面登录注册页面时,都需要去检测用户输入的内容是否正确,然后给出提醒或错误显示。之前我们都是布局写一大堆代码,显示错误信息,判断控件内容。总的来说比较麻烦。而现在有了TextInputLayout,我们不在需要这么麻烦。TextInputLayout给我们提供了两种功能:1,给EditText添加一

2016-08-30 17:29:43 511

原创 Design下的TabLayout和Fragment和ViewPager联动的简单使用

首先介绍下TabLayout,实际开发中我们经常需要用到Viewpager,而已需要跟头部的Tab实现联动效果。而Design的出现,给我们一种更加方便的UI框架去实现这种效果。今天就介绍它与Viewpager和Fragment之间的联动效果。首先需要先有design包:之后我们的build.gradle文件下多了这样一句代码就ok啦。然后接下就是布局文件:activity_mai

2016-08-25 22:06:32 2769 3

原创 Design下FloatingActionButton的简单使用

今天说下Design包下的FloatingActionButton浮动按钮。关于Design的介绍就不说了。上一篇的博文有。大家可以看看。简称FAB,浮动操作按钮一般作为进阶操作的开关,在用户界面中通常是一个漂浮的小圆圈,它有自身独特的动态效果,比如变形、弹出、位移等等,代表着在当前页面上用户的特定的操作。现在说下使用方法,首先需要导入design包。搜索design包然后导入

2016-08-22 23:26:02 554

原创 Design包下NavigationView的使用

首先介绍一下由来,只属于个人见解。Design包是5.0之后出现的新特性,其包含了许多新出现且具有自己特色的控件。除今天要说的NavigationView导航布局之外,还有TabLayout、RecyclerView、CardView、FloatActionButton、Snackbar、TextInputLayout,还有协调者布局CoordinatorLayout等等等等。我对于这个的理解

2016-08-13 22:14:11 4202 3

原创 垂直和水平滑动刻度尺

公司有个需求需要自定义的滑动设置升高体重的界面。首先感谢github上的这个开源让我学习。https://github.com/LichFaker/ScaleView。因为需求有点不一样。需要自定义颜色。所以在它的基础上改了画线的位置和刻度的颜色。看一下界面。上代码。首先需要有个基础的基类BaseScaleView。public abstract class BaseScaleView ext

2016-07-28 15:07:37 2706

原创 监听手机来电与手机短信往蓝牙发送协议实现通讯

因为公司主要做蓝牙手环这块。这阵子负责来电提醒和短信提醒。其实原理比较简单。就是开启一个Service监听手机的来电和短信。然后判断手机跟蓝牙的连接服务是是否连接,已连接的话则根据协议完手环发送来电、短信所需要的协议。不多说了。上代码。首先是Service类

2016-07-15 22:17:27 3822 5

SourceTree

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和Hg客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subversion版本控制系统工具.支持创建、提交、clone、push、pull和merge等操作.

2017-05-16

空空如也

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

TA关注的人

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