自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

朝哥的博客

慢慢飞慢慢飞

  • 博客(48)
  • 资源 (5)
  • 收藏
  • 关注

原创 同一台电脑配置不同的ssh key

如今 Git 版本管理这么普及,那么我们除了在公司的账户除外,很可能还有一个属于自己的私人账户。如果是使用 ssh 的方式来拉取和提交代码,那么就要配置 ssh key 了。如果公司账户和个人账户是属于不同的平台,那就比较简单一些,比如公司的是码云,而个人的是 github。下面就分别介绍一下 github + gitee 和 gitee + gitee 的配置。一、github + gitee 的配置1、生成公司账户 gitee ssh key使用ssh-keygen -t rsa -C "用户名

2021-07-04 16:04:59 773 2

原创 谈谈Android源码——IntentService

IntentService 介绍IntentService 继承自 Service,所以它是一个 Service,并且它是一个抽象类,所以使用它必须要使用它的子类。按照国际惯例,先来看看 IntentService 源码中的注释/** * IntentService is a base class for {@link Service}s that handle asynchronous * requests (expressed as {@link Intent}s) on demand. C

2021-02-09 18:58:40 188

原创 谈谈Android源码——HandlerThread

HandlerThread 介绍HandlerThread 继承自 Thread,所以它本质上还是一个线程。那么它的作用是什么,与 Thread 又有什么区别呢?HandlerThread 源码中有这么几行注释/** * A {@link Thread} that has a {@link Looper}. * The {@link Looper} can then be used to create {@link Handler}s. * <p> * Note that just

2021-02-09 15:54:08 192

原创 Java并发编程(二):wait() notify() notifyAll()

wait()、notify()和notifyAll()方法是 Object 的三个方法。wait()使当前线程进入等待状态,直到:其它线程调用notify()方法或者notifyAll()方法其它线程中断了当前线程到了指定的 wait 时间它的使用方式是在一个循环中synchronized (obj) { // 条件不满足 while (condition does not hold) { obj.wait(); } // 执行满足条件的代码

2020-10-15 21:44:31 138

原创 Java并发编程(一):认识线程

进程和线程进程进程是操作系统进行资源分配的最小单元。默认情况下,一个 App 就是一个进程,也可以为 App 开启多个进程,多个进程之间是相互独立的。线程线程是 CPU 调度的最小单元,任务是执行在线程中。线程依附于进程存在,当一个进程中没有可执行任务的线程时,该线程就会被回收。一个进程可以有多个线程。CPU时间片轮转机制坐地铁的时候可能会一边在看文章一边听歌,我们就会认为文章 APP 和 听歌 APP 是同时运行的。其实它们并不是同时运行的,系统提供了一种CPU时间片轮转机制,进程被分配到时间

2020-10-14 15:30:18 92

原创 Java基础之泛型解析

什么是泛型泛型就是广泛的类型,同一套代码可以在多种类型中使用,使代码的可重用性更高。泛型是JDK1.5加的新特性。为什么使用泛型加入现在有对int类型数值求和的需求,那我们可能会这样写:public int sumInt(int x, int y){ return x + y;}这样写法没有任何问题,但是如果又来了一个新需求是需要对float类型的数值进行求和,那我们是需要再写一个sumFloat方法吗?public float sumFloat(float x, float y){

2020-10-02 11:35:49 212

原创 Handler机制源码详解

Handler对于Android系统来说可以是非常重要的了,因为它贯穿了整个Android系统,它随处可见,没有Handler,Android系统也就不起作用了。流程介绍Android系统是以消息驱动的,整个流程可以大致概括为:发送消息 --> 添加消息到队列 --> 从队列中获取消息 --> 处理消息上面的流程可以引出几个类分别是,发送消息的Handler,将消息Message发送到消息队列MessageQueue,Looper从消息队列循环取出消息,然后交给Handler处理

2020-09-16 21:26:51 1413 6

原创 Android实现搜索关键词高亮显示-Kotlin

在做Wandroid项目时有一个搜索功能,要在搜索结果中将匹配到的关键词高亮显示。但是 玩安卓API并没有提供颜色的高亮,只有字体斜体,效果看起来并不明显,并且昵称也参与了搜索,但并没有增加``HTML`标签返回,这就有点美中不足了。因此我们自己动手来做一个。API返回结果{ ... "title": "微信在Github开源了Hard<em class='highlight'>coder</em>,对Android开发者有什么影响?", ...}Wandroi

2020-08-26 15:21:53 1190

原创 时隔数周,玩安卓Kotlin版本的Wandroid终于来了

它来了,它来了,虽说是项目建立了比较长的一段时间,但是真正开始做用了2周。接触Kotlin也算是有一段时间了,但是都没有利用Kotlin输出点什么东西来,于是就有了此项目《玩安卓Kotlin版本的Wandroid》,当做学习Kotlin的练手项目。部分参考 wanandroid ,感谢。基本上都是自己瞎设计的。项目采用Kotlin语言,使用ViewModel + LiveData + 协程等。同时也非常感谢API提供者鸿洋大神。已有功能Banner、热门文章广场,可查看文章作者分享的所有文章

2020-08-25 22:25:32 561

原创 Flutter编程之BoxDecoration用法详解

Widget的装饰,使其改变其显示形式。Container的decoration用BoxDecoration来设置。BoxDecoration的参数如下:属性解释类型color颜色背景Colorimage图片背景DecorationImageborder边界BoxBorderborderRadius圆角边界半径BorderRadiusGeometryboxShadow阴影List<BoxShadow>gradient渐变

2020-08-06 09:13:52 17540 7

原创 Flutter编程之Container用法详解

Container是一个Widget容器,容器里面可以放置任意的Widget子组件,可以是一个文本组件Text,也可以是一个图片组件Image,甚至是一个和自己一样的Container。Container的子组件用child属性来指定。属性Container提供了很多属性,大体上包含大小、位置和装饰。属性解释类型alignment对齐方式AlignmentGeometrypadding内边距EdgeInsetsGeometrycolor背景色Color

2020-08-04 16:38:26 2431

原创 Flutter编程之Dart基础

Dart 是学习Flutter的前提条件,因此掌握一些Dart基础知识是必要的。Dart是一门强类型语言,和Java类型,而又和Kotlin、Swift等语言也很相似。搭建Dart开发环境因为最终是需要开发Flutter应用,因此开发工具是AndroidStudio,当然也可以使用Visual Studio Code,它也可以开发Flutter应用。首先需要安装Dart插件:File -> Settings -> Plugins -> ‘输入Dart’ -> 点击Instal

2020-07-31 17:11:32 415

原创 自定义TabLayout底部倒三角Indicaotor

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IQsFzdbj-1595837272450)(F:\Blog\images\自定义TabLayout底部倒三角Indicaotor\preview.gif)]本篇是通过自定义系统自带的material库里面的TabLayout来实现上图效果。通过分析,可以分为以下几个步骤:绘制矩形绘制倒三角合并矩形和倒三角设置indicator整体效果用 xml 的 layer-list 来绘制。整体背景是一个圆角矩形,一个

2020-07-28 11:22:48 1520

原创 Flutter编程 —— 搭建开发环境MAC OS

Flutter安装安装包获取添加环境变量想要在任何路径都可以使用flutter命令,就需要将flutter添加到系统环境变量中。1.命令vim ~/.bash_profile打开.bash_profile文件,如果不存在则会创建一个新的文件2.在文件结尾增加export PUB_HOSTED_URL=https://pub.flutter-io.cnexport FLUTTER_ST...

2020-03-23 20:38:56 232

原创 Gradle配置不同环境参数

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,目前也增加了基于Kotlin语言的kotlin-based DSL,抛弃了基于XML的各种繁琐配置。AS创建项目完成后默认提供了debug和release两种环境的包,前者是测试包,后者是正式发布包。在默认情况下,debug和r...

2019-12-16 19:10:32 1474

原创 引入RxAndroidBle报错引发的问题

在项目中引入RxAndroidBle的第一步就碰到了问题,Build后直接报错Manifest merger failed with multiple errors, see logsorg.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugManifest'. at o...

2019-12-04 21:28:39 473

原创 日常使用Git分支创建、删除、合并

案例小C在公司开发一个APP,在master分支上开发发布后,发现有一个Bug需要修复,然后就想新建一个新分支bugfix,修复后再将bugfix的代码合并到master分支上,然后将bugfix分支删除。这该怎么做呢?创建创建本地分支git branch bugfix创建本地分支并切换到该分支git checkout -b bugfix将本地分支推送到远程分支g...

2019-10-25 14:22:02 133

原创 AndroidStudio修改Git编辑器

AndroidStudio 默认的 Terminal 编辑器位 cmd,我们可以将它更换为其他编辑器。更换为git-bash打开 AndroidStudio 的Settings 页面,Tools -> Terminal,设置 Shell path 为本机中 git-bash.exe 的路径。再次打开 Terminal,发现页面变了个人感觉 git-bash 比 Windows 的 ...

2019-10-25 13:45:55 701

原创 Kotlin学习笔记(四)—— 函数

函数的定义定义一个函数由关键词fun、函数名、参数列表,返回值类型和函数体组成。fun是function的意思;函数名可以是任何符合命名规范的词;参数列表由0个或多个组成;形参在前,类型在后,用冒号(:)隔开;返回值类型紧接在函数列表括号后面,也是用冒号将函数列表和返回值类型隔开,无返回值默认是返回Unit,也可以省略不写;函数体是返回值类型右边一对大括号之前的代码块。fun funDemo(...

2019-08-24 22:22:49 207

原创 Kotlin学习笔记(三)—— 字符和字符串

字符串字符串判空val string = ""val string2 = " ">> println(string.isBlank()) // true>> println(string.isNotBlank()) // false>> println(string.isEmpty()) // true>> println(st...

2019-08-24 22:21:42 520

原创 Kotlin学习笔记(二)—— when

when 语句是 Java中 switch 的强化版,它对一个值进行判断,直到匹配到或者没有可匹配的值。有参数 whenwhen单值匹配当 when 语句没有返回值时,就不必要列举出所有的可能性,如:fun whenFun(x: Int) { when(x) { 0 -> "less than 2" 1 -> "less than 2"...

2019-08-24 22:16:02 450

原创 Kotlin学习笔记(一)—— Kotlin基础

数据类型基本类型和Java基本保持一致,只是Kotlin中是大写首字母CharByte Short Int Long Float Double BooleanKotlin不支持自动扩展数字范围,Java中int类型可自动扩展成long,但是Kotlin中必须要显式的指定类型。val intValue = 10val longValue = intValue.toLong(...

2019-08-24 22:15:32 168

原创 Linux常用命令笔记

date命令date :查看系统当前时间和日期cal命令cal :显示当月的日历df命令df :查看磁盘当前可用空间free命令free :查看可用内存(运行内存)exit命令exit :结束终端会话pwd命令pwd :查看当前工作目录cd命令cd :将主目录切换为工作目录cd ~ :将主目录切换为工作目录...

2018-04-28 08:54:59 224 1

原创 Android的进程间通信AIDL使用步骤

虽然很多应用都是在一个进程中,但是同样的也有很多应用是运行在不同进程中的,一个进程Crash了并不会影响其他的进程。因此在不同的进程中就需要相互通信了。这就引出了IPC(Inter-Process Communication)的概念。AIDL(Android Interface Definition Language)就是实现IPC的一种方式。AIDL支持的类型:基本类型、String、C...

2018-04-28 08:52:40 1192

原创 底部弹出框BottomDialog

BottomDialog日常需求中通常都会有这样的需求,点击按钮会从底部弹出一个对话框,选择操作。例如分享或者更换头像弹出对话框。因此抽空将此功能封装成库,方便以后引用。ScreenShotImportMavenStep 1. Add the JitPack repository to your build file&lt;repositorie...

2018-03-27 14:29:51 6521

原创 找不到DaggerApplicationComponent类

在学习开源项目微阅的时候,第一次打开碰到红色波浪线的错误DaggerApplicationComponent 类找不到解决办法:这个类是Dagger自动生成的,只需要rebuild一下项目就可以了。

2018-03-05 22:11:19 4347

原创 Kotlin For Android(一)——创建Kotlin项目并简单配置

Kotlin 前段时间被 Google 纳为开发安卓的首选语言,Kotlin可谓是水涨船高,学习它也是很有必要的。AndroidStudio3.0上可以直接支持Kotlin,2.x的可以通过安装插件来支持Kotlin。1. 安装插件 2. 创建项目 3. 配置 4. 开发写代码1、安装插件插件安装步骤File -> Settings -> Plugins ->

2018-01-31 22:37:05 543

原创 Android自定义View——风车

最近在Pure天气上看到一个风车的效果感觉不错,决定来模仿一个类似的。Pure天气的效果图:自己做的效果图:太大了感觉蛮丑的 (┬_┬)问题分析风车可以由一下几个部分组成:2条线架在一起是风车架子三个风车叶子组成,每个叶子可以看成2个等腰三角形组成(便于计算,小等腰三角形是一个等腰直角三角形),每个叶子对应边的夹角为120度让每条边绘制的时候角度递增形成动画为了避免叶子过长,在旋转的时候超出

2017-11-19 16:15:10 863 1

原创 Android自定义View时获取文字宽高

获取文字宽度:private int getTextWidth(String text, Paint paint) { Rect rect = new Rect(); // 文字所在区域的矩形 paint.getTextBounds(text, 0, text.length(), rect); return rect.width();}获取文字高度:private int

2017-11-16 20:36:10 2314

原创 Android开发问题日记

1. 使用 Rxjava2 和 Retrofit2 依赖库运行项目报错 :<问题出现>依赖库:compile 'io.reactivex.rxjava2:rxjava:2.0.7'compile 'io.reactivex.rxjava2:rxandroid:2.0.1'compile 'com.squareup.retrofit2:retrofit:2.3.0'compile 'com.sq

2017-10-16 13:03:06 358

原创 Live Templates提高Android开发效率

Live Templates 是 AndroidStudio自带的一个工具,通过设置一个固定格式的模板,根据设置的模板 “KEY” 来快速补全代码达到提高效率的效果。AndroidStudio 为我们提供了默认的一些模板,而且也支持自定义模板。 Live Templates 位于 File >> Settings >> Editor >> Live Templates AndroidStudio一

2017-07-26 22:06:02 398

原创 查看SharedPreferences中保存的数据

Android开发中一般都是将配置文件保存至 SharedPreferences 中,除了使用 getString 等方法获取保存的值之外有什么办法可以直观的看到所保存的值呢?答案是使用 adb 工具。步骤:一、打开命令提示符(Win+R)输入cmd回车; 二、输入命令 adb shell 打开终端;● 如果提示 'adb' 不是内部或批处理文件。说明系统环境变量中没有配置 adb 的路径。

2017-07-25 21:56:29 10102

原创 Git常用命令总结(持续收集...)

安装完Git后进行设置用户名和邮箱:git config --global user.name "xxx" git config --global user.email "xxx"Example: git config --global user.name "test" git config --global user.email "[email protected]"初始化仓库,

2017-07-06 20:55:14 389

原创 一步一步带你实现自定义圆形进度条(详解)

每次看到别人做出炫酷的都会想,这个应该很难吧?这是心理上先入为主的就这么认为了,其实实现很简单,下面一步一步的详细剖析自定义圆形进度条的步骤。首先看效果图: 篇幅有点长,耐心看完肯定get新技能。看每一个视图都包含了些什么。最里层一个蓝色圆形中间一层显示进度的橙色扇形圆弧最外层一个红色圆环显示进度百分比的文字以及下方提示文字下面来一步一步实现:创建一个类继承View,并实现几个构造方法

2017-06-28 09:05:24 5620

原创 AndroidStudio调试利器——Android WiFi Adb

一个好的工具能加快开发效率,调试工具亦然。        传统安卓调试就是拿着一根数据线和设备连接,这样既需要一根好的数据线,而且经常拔插USB接口,接口本身也有一定的损伤。还有一个致命的弱点就是,当有些设备不便于连接电脑时,我们就无法进,行直接编译运行测试了。不过万能的IDE给我们提供了插件Android Wifi Adb,这样我们就可以不需要数据线就可以爽歪歪的进行测试了。操作步骤File->S

2017-06-07 00:07:58 1158 1

原创 PyCharm、Python、Django安装以及环境变量配置(Windows)

开发Python有很多IDE工具,我选择了PyCharm工具,因为风格AndroidStudio极其的相似,对于我来说这个工具很容易上手。一、PyCharmPyCharm官网下载地址:http://www.jetbrains.com/pycharm/download/#section=windows这里有2个版本:Professional(专业版)、Community(社区版) 专业版功能齐全但是

2017-02-22 21:21:30 14283

原创 Android-RSA算法加密解密

被这个小问题困了2天,终于被干掉了。安卓中利用RSA算法加密和解密 整个流程大致为:生成密钥对->获取公私钥->对明(密)文加(解)密。package com.cc.encrypttest;import android.util.Base64;import java.security.InvalidKeyException;import java.security.KeyFactory;

2016-11-24 18:07:11 2419

原创 Android从相册选择图片和调用系统摄像头拍照

Android开发中很多情况下需要从图册或者相机中获取到图片, 下面就分享一个小栗子。效果为从相册或者拍照获得的图片然后设置给界面中的ImageView。至于对话框的弹出方式这里就不赘述了,请自行参考:Android实现QQ换头像的对话框在最底下会给出APK和源码。&lt;?xml version="1.0" encoding="utf-8"?&gt;&lt;Linea...

2016-10-17 22:32:07 869 2

原创 Android修改系统时间

最近碰到修改系统时间的需求,折腾了一段时间,发现网上有一种方法是通过 命令的方式修改的。在这里感谢那位老兄的方法。TimeManager.setSystemTime:public static void setSystemTime(Date date) { SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd

2016-10-13 18:11:59 6080

原创 使用EditText出现java.lang.StackOverflowError报错

最近项目中有个在EditText中输入子网掩码(xxx.xxx.xxx.xxx)形式的需求,只需 手动填入数字,自动添加”.”进去。于是想到了EditText的addTextChangedListener, 不过在editText.setText()时就碰到了问题,报了java.lang.StackOverflowError错误。 @Override public void onTextCha

2016-10-13 11:19:15 1317

自定义圆形进度条自定义圆形进度条

一个简单的自定义圆形进度条Demo,很简单。

2017-06-27

Android之RSA算法加密解密

Android之RSA算法加密解密

2016-11-24

Android从相册选择图片和调用系统摄像头拍照

Android从相册选择图片和调用系统摄像头拍照

2016-10-17

安卓仿QQ更换头像对话框Dialog

一个仿QQ更换头像的对话框

2016-10-12

Android设计模式——观察者模式

简单易懂的观察者模式

2016-09-27

空空如也

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

TA关注的人

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