自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(101)
  • 资源 (51)
  • 收藏
  • 关注

原创 OkDownloader,基于 OkHttp的现代化开源下载框架

OkDownloader是一款基于 OkHttp 编写的适用于Kotlin/Java/Android平台的开源下载框架,可以运行在任何JVM 机器上

2023-08-01 08:30:00 303

原创 Compose自定义条形进度条

Compose自定义View其实比View系统更方便简单,比如接下来本文要介绍的就是使用Compose实现View系统中常见的条形进度条。

2022-06-21 23:24:20 824 1

原创 Android性能优化之布局优化

在开始性能优化前我们先需要知道从哪些方面入手,本篇文章介绍的布局优化可以从如下几个方向入手减少布局树的层级减少布局树中View的数量减少单个View的绘制时间(将在下一篇文章中归到绘制优化部分)提高布局的复用性减少布局树的层级我们知道在Android中View布局是一个树的数据结构,这个树里面的元素是我们编写或定义的View或ViewGroup,而每个ViewGroup元素又可以有View或ViewGroup子元素,这样ViewGroup嵌套子View,子ViewGroup又嵌套子View形

2020-09-20 23:49:09 660

原创 【Android AAC】第三篇 ViewModel源码解析

前言先看一个ViewModel的使用例子,这里使用Kotlin语言(读者不该困惑于语言,主要是看用法,Java的类似,不懂欢迎留言):class ShareViewModel : AndroidViewModel { private val userLiveData:MutableLiveData<User> = MutableLiveData() constr...

2019-08-14 16:07:21 1064

原创 【Android AAC】第二篇 LiveData的源码解析

前言首先看一下如下一个简单的使用例子,本文范例使用Kotlin语言进行介绍,Java版的类似,不懂的可以留言问我哈。// 1.创建LiveDatavar loginLiveData:MutableLiveData<LoginEntity> = MutableLiveData<LoginEntity>()// 2.观察LiveDataloginLiveData.ob...

2019-08-09 17:28:27 383

原创 【Android AAC】第一篇 Lifecycle的源码解析

前言AAC是Android Architecture Components的缩写,翻译过来就是Android架构组件的意思,是Google IO 2017大会期间发布的一组架构组件,它可以用来帮助开发搭建更加简单便捷的APP架构。AAC里面涉及到了LiveData,ViewModel,其中LiveData的工作需要依赖于Lifecycle,所以本篇文章将介绍Lifecycle的工作原理,并从源码...

2019-08-08 20:50:09 474

原创 Gradle私服上传自己的库项目

nexus私服(3.14)下载地址:https://www.sonatype.com/download-oss-sonatype安装:管理员身份运行cmd,进入nexus bin目录,nexus /install nexusnexus /run(之前版本用bat启动,nexus start启动)修改配置(etc目录nexus-default.properties)如:修...

2018-12-22 22:36:22 2129

原创 Android沉浸式状态栏

在使用沉浸式状态栏时需要注意设置的沉浸颜色为白色还是其他深色的区别1. 状态栏字体图标黑色(深色)// 5.0以上系统状态栏透明if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.clearFlags(WindowManager....

2018-12-14 17:00:57 302

原创 Android自定义圆角矩形ImageView,支持Glide加载图片及颜色填充

前言: 之前用到圆角的情况大都是自定义一个shape背景drawable及用到v7包下的CardView包裹View实现圆角矩形效果,还有就是在用户圆形头像的时候需要使用到圆角矩形(圆形可以看做是特殊的圆角矩形),诸如Button,Editext,TextView的圆角矩形颜色背景可以用shape实现,但是ImageView Res圆角还没用到过,它就不能简单地设置一个圆角矩形shape作为背...

2018-05-14 11:43:40 5617 1

原创 Android自定义PopupWindow,高仿炫酷的IOS对话框

前言: 最近在使用IOS系统的过程中发现IOS底部弹出框甚是漂亮,大气,上档次,于是乎就想啊能不能在Android中实现类似的对话框呢?你说,这不是废话吗,除了一些极少数的系统级的不能模仿外(版权)还有啥不能依瓢画葫芦的呢,所以啊,这篇文章将介绍如何在Android中实现高仿IOS对话框效果,先上图,给大家养养眼:大家在看到上面的对话框时有没有想到简单的实现思路呢?我这里给出的思路是我...

2018-05-12 20:39:59 1405

原创 Android自定义Dialog,炫酷主流的加载对话框

前言 最近开发中用到许多对话框,之前都是在外面的代码中创建AlertDialog并设置自定义布局实现常见的对话框,诸如更新提示等含有取消和删除两个按钮的对话框我们可以通过代码创建一个AlertDialog并通过它暴露的一系列方法设置我们自定义的布局和style,但有时候系统的AlertDialog并不能实现更好的定制,这时,我们就想到了自定义Dialog。通过查看AlertDialog的类结构...

2018-05-12 11:59:14 5348 1

原创 Android自定义RecyclerView分割线,打造无边缘分割线

前言: 现在的RecyclerView几乎已经完全取代ListView和GridView了,已经几年没使用ListView和GridView了,想当年还需要自己在getView方法中复用convertView。而现在的RecyclerView一出生就被设计成convertView复用的,尽管你不想复用(才怪)。RecyclerView功能如此强大的同时就会面临许多需求,如给RecyclerVi...

2018-05-02 22:01:58 3937 1

原创 Android自定义ViewPager图片指示器,兼容实现底部横线指示器

前言 记得以前自己使用过的ViewPager Indicator有JakeWharton大神的开源库ViewPagerIndicator,v4包自带的PagerTitleStrip以及Android Support Design库的TabLayout。它们基本上可以实现项目中常见的ViewPager指示器的需求,除非你的项目有特色的指示器需求,如指示器不再是tab底部横线,而是一个三角形或是其...

2018-04-22 16:05:40 4134 1

原创 Android自动填充短信验证码

前言 短信验证码获取并自动填写现在已经成为一个人性化App的标配了,这篇文章将实现一个短信验证码获取并自动填写的demo。其实就是读取指定号码的短信并提取出验证码,然后赋值给EditText显示。demo效果图:读取短信 Android系统在接受到一条短信的时候会发出一条Action为android.provider.Telephony.SMS_RECEIVED的有序广播,因此我们读取短信的验证码只

2017-09-28 15:28:23 5024 1

原创 Android开发技巧之使用自定义注解

前言 一些优秀的开源框架如比较早的xUtils网络加载框架及现在最新版本的greenDao 3.X ORM框架支持注解,注解的使用可以使得我们的代码架构变得更加清晰,同时也更能体现出面向对象语言的继承的特征及反射机制的强大。我们在Android开发过程中可以使用注解来优化我们的代码结构。Java注解简介注解Annotation其实是一种元数据,不包含业务逻辑,它的作用是用来给类,接口,域等提供数据。

2017-09-28 10:17:11 1264

原创 Android视图动画浅析

视图动画 视图动画共有四种,分别为透明度,旋转,平移,缩放动画,如同名字所说一样,它是一种视图上的动画,改变的只是视觉上的效果,实际上View的属性如位置,大小,透明度等并没有受到动画的影响。下面将演示四种视图动画的代码及xml定义使用。代码定义:public void alpha(View v){ AlphaAnimation alphaAnimation = new AlphaAnima

2017-09-19 18:54:44 956

原创 Android使用ViewDragHelper实现侧滑菜单(一)

前言 对于处理View的滑动,除了Android实现滑动的几种方式写到的四种外,Android v4包中还提供了一个ViewDragHelper类来帮助我们更加方便地处理滑动事件,ViewDragHelper使得View与View之间的滑动交互更加简单方便。不过在学习ViewDragHelper处理滑动事件前需要掌握View的事件处理机制,可以参考:Android事件的分发与拦截机制。ViewDra

2017-09-16 09:56:48 1470 1

原创 Android实现滑动的几种方式

前言 View的滑动对于View交互性及效果有很大影响,我们可以通过5种方式来实现View的滑动,准确地说是View位置的改变。要改变View的位置,首先我们需要了解Android的坐标系,因为View的是通过坐标来定位的。绝对坐标系 Android系统中,屏幕的最左上角为坐标原点,如下图所示。屏幕最左上角的点为坐标原点,向右向下分别为x轴和y轴视图坐标系 视图坐标系是在View的层级体系中使用到的

2017-09-14 15:24:24 6135

原创 Android事件的分发与拦截机制

前言 Android为我们提供了丰富的View及ViewGroup控件,使得我们可以轻松的地完成Android应用界面的绘制,同时还可以自定义精美的View控件。绘制一个界面往往需要众多的View及ViewGroup不断嵌套,由于View可能需要与用户交互,如Button响应用户的点击,EditText响应用户的输入,而ViewGroup也可以响应事件,当多个ViewGroup和View嵌套的时候就

2017-09-11 16:00:47 1927

原创 CTS,GTS,CTS Verifier失败项总结(持续更新)

在CTS,GTS,CTS Verifier测试中经常会遇到许多问题,需要寻找相应的解决方法以便通过测试,出来IP V6及Google 豁免项外不允许出现其他问题。那么其他问题通常又会是由以下一些原因导致的。软件问题(软件人员配置或是定制Framework导致)驱动问题(如Camera2问题)测试方法问题网络问题(有些项需要使用静态ip地址测试,有些需要使用动态ip)签名问题(找软件帮忙)

2017-09-07 14:04:21 8574

原创 Android N 多窗口模式

前言 在智能手机更新换代越来越快,手机屏幕越来越大,手机可以做的事情越来越多,人们已经离不开智能手机了,甚至有的人开始在用手机办公了。在大屏幕手机上,如果一个手机可以一边播放视频,一边上着网,那种体验是非常爽的。终于,在Android 7.0(N)(API 24)引入了多窗口(Android N 的 Nexus Player还有画中画)的支持,也就是分屏显示,可以是上下排列,也可以是左右排列,可以在

2017-09-01 16:47:59 1942 1

原创 Android运行时权限

前言: Android 6.0(api23)引入了运行时权限,它允许应用程序在运行的时候请求权限而不像5.1及更低版本一样在安装的时候请求权限。这样一来,需要请求危险权限(涉及到用户隐私…)的应用在安装的时候就不需要请求权限了,而5.1以前如果安装的时候请求的权限没有通过的话应用就安装不了。同时,这种运行时权限可以由用户随时在设置->应用信息中开启或关闭某项权限,即使某个应用刚才还拥有读取联系人的权

2017-08-30 19:09:57 765

原创 浅谈BroadcastReceiver

前言: 广播作为Android四大组件之一,类似于现实生活中的广播,经常用来传递及处理消息,有时候我们的应用程序需要在特定的情况下执行不同的逻辑,如系统开机,网络状态的变化,电源电量的变化…,这些都需要通过广播来实现。不仅如此,有时候我们还需要为我们的程序自定义广播,实现相应的逻辑功能。广播分为标准广播,有序广播,注册又有动态注册及静态注册,按作用域也有全局广播及本地广播。1、广播的静态注册与动态注

2017-08-29 21:06:09 454

原创 Android百分比布局库

前言: Android在6.0(api23)引入了百分比布局库,这个库以support包的形式供我们使用。以前的那几种布局中要实现等比分割布局只有LinearLayout的layout_weight属性可以轻松实现,现在不同了,有了这个百分比布局库我们可以更加方便灵活地百分比分割我们的布局,从而使得我们的界面编写更加方便。Android百分比布局库中提供了PercentFrameLayout和Per

2017-08-29 19:42:27 1156

原创 Activity的四种启动模式

前言: Activity为什么会有启动模式? 我们可以想想Activity作为Android四大组件中使用最多的一个,经常需要使用Activity将界面显示给用户,这也就设计到了Activity的频繁创建新的Activity(切换Activity)或是已经启动的Activity再次启动(切换回来)。尽管Activity有完整的生命周期回调,但系统又是通过什么来管理众多的Activity的呢?答案是A

2017-08-26 16:25:14 436

原创 Activity之间数据相互传递

不同的Activity之间可以相互传递数据,针对以下两种情况可以有两种方法传递数据,相同的地方都是通过Intent进行数据的传递。1、前后Activity的数据传递前一个Activity(A)启动后一个Activity(B)可以在intent中通过putXXX方法添加相应的数据,B则可以通过getIntent方法来得到这个intent,从而取得数据。而当B要向A传递数据的时候就需要通过Ac

2017-08-25 17:43:22 3823

原创 【Android】DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs

问题描述:Android Studio在安装应用的时候弹出一个安装失败需要卸载应用的窗口,点击OK后Run控制台显示DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs错误。解决办法:该问题是因为手机安装内存不足,卸载一些软件重新运行安装程序即可。

2017-08-25 16:01:09 673

原创 Android开源框架greenDAO 3.X的使用

前言 greenDAO是greenrobot Open Source Libraries的一个开源框架,同时greenrobot Open Source Libraries还有一个优秀的开源框架EventBus。greenDAO是用来替代Android原始的SQLite数据库操作以便节约开发者开发成本的一款优秀的ORM(object/relational mapping)框架,将SQLite数据库的

2017-08-19 05:40:08 1067

原创 Java实现常见的排序算法

1、冒泡排序基本思想:比较两个相邻的数,如果满足条件则交互顺序(从小到大还是从大到小),这样数组中的元素就会像气泡一样由底部上升到顶部。Java代码示例:/** * @param arr 待排序的数组 */public static void bubbleSort(int[] arr) { for(int i=1;i<arr.length;i++) { for(int

2017-08-17 09:03:42 254

原创 Android反编译,修改apk启动页

前言 不得不说自从有了IDE之后,很多原本很基本的开发命令开发步骤似乎被人们慢慢淡忘了,特别是Android开发,先是eclipse+adt作为Android开发的IDE,到现在的Android Studio2.3.3的功能可谓是如此得强大,编译速度越来越快。然而很多基础的东西却被这强大的IDE悄悄地替我们完成了,比如apk的编译,打包,签名设计,而开发者需要做的仅仅是在GUI界面点击编译,打包按钮

2017-08-14 19:18:49 10918 1

原创 面向对象的六大原则

一、 单一职责原则 正如字面上所说,这一原则体现在“单一”二字,描述的是一个类的职责应该是单一的,与该类无关的功能或者完全不一样的功能不应该出现在该类中,而需要将该类所具有的功能独立出来。而这个类中仅有的是一组相关性很高的函数,数据的封装。

2017-08-10 16:27:15 277

原创 Android Preference初探,另一种布局方式

记得android五大数据存储中有个SharePreferences,其他四种分别是:SQLite数据库ContentProvider(内容提供者)文件存储网络存储这里简单回顾一下SharePreference是的使用:// 1. 得到sharedPreferences,第一个参数指定SharePreference保存的xml文件的文件名,第二个参数是SharedPreferences模式

2017-03-17 20:09:08 5401

原创 Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enable

问题描述: 在android studio运行app的时候出现这个问题导致android studio无法运行module。解决方法: 根据错误描述,使得ADB integration可用就行,即android studio:Tools->android->Enable ADB integration前面打上勾,如下图:

2016-05-02 21:55:39 983

原创 Android异步更新UI的几种方法

前言:我们知道在android开发中不能在非ui线程的其他线程中更新ui,但是,有的时候我们需要在代码中执行一些诸如访问网络、查询数据库等耗时操作,为了不阻塞ui线程,我们时常会开启一个新的线程(工作线程)来执行这些耗时操作,然后我们可能需要将查询到的数据渲染到ui组件上,那么这个时候我们就需要考虑异步更新ui的问题了。android中有下列几种异步更新ui的解决办法:Activity.runOn

2016-04-26 12:37:54 12489 3

原创 Android5.0 xUtils报错IOException: stack size 1036kb

这时xUtils低版本在android5.0上的一个bug,将xUtils的jar包替换成最新版本的就行,目前最新版本为2.6.14,下面是下载地址:GitHub下载地址:https://github.com/wyouflf/xUtilscsdn下载地址:xUtils-2.6.14

2016-04-16 17:24:12 1093

原创 c++类型转换

前言:c++提供了四种类型转换,分别是static_cast,reinterpret_cast,dynamic_cast,const_cast。它们都有各自的运用场景.语法形式(四种都一样):Type dist = *_cast<Type>(src);1. static_cast(静态类型转换) c/c++中自动类型转换的数据都可以使用static_cast进行转换,这种类型转换使得c++编译器在编

2016-04-16 12:05:02 748

原创 c++类模板遇上static关键字

前言: 在c++中我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。 在c++中,我们不能把静态成员放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从

2016-04-10 21:42:42 13580 3

原创 c++函数模板和类模板

一、函数模板定义形式:template ...> return-type func-name(parameter list){ // 函数的主体} 说明:type1和type2…是占位符,用来泛指任意类型,如T,K…。template和typename是关键字;函数模板的调用:显示类型调用自动类型推导例子:#include using namesp

2016-04-10 21:42:11 904

原创 c++友元函数及运算符重载

前言: c++的类和java的类机制着实不大一样,不仅仅是语法,还包括一些特殊的东西,如c++用友元函数来破坏类的封装性,使得外界(友元函数体)可以访问类的私有属性,而java呢,java则可以通过反射机制类在类的外部访问类的私有属性,从而破坏类的封装性,而不仅这点,java中没有什么运算符重载,而c++中提供了运算符重载技术使得我们自定义的类型(类)也可以想基本数据类型一样进行的运算符(+,-,*

2016-04-10 21:39:53 3628 1

原创 python数据类型

1. 数据类型分类python大约有以下8种数据类型,分别是:Number(数字)String(字符串)List(列表)Tuple(元组)Sets(集合)Dictionary(字典)None(空类型)Object(对象类型)Number类型: Python3 中支持 int、float、bool、complex(复数),在Python 3里,只有一种整数类型 int,表示为长整型,

2016-04-08 21:00:38 6830 2

PullParseXmlDemo

【XML解析(三)】PULL解析XMl的文章的示例代码,下载导入eclipse运行测试

2015-12-06

DomParseXmlDemo.zip

【XML解析(二)】DOM解析XML这篇文章的示例代码,手把手教你学会DOM解析XML

2015-12-05

SaxParseXmlDemo.zip

【XML解析(一)】SAX解析XML文章的Demo,下载导入Eclipse测试SAX解析XML

2015-12-05

sax.jar 包

sax.jar,使用SAX解析xml使用该jar包

2015-12-04

jsax.jar包

sax.jar,SAX解析xml使用的jar包,使用SAX解析xml

2015-12-04

ReflectTest

java反射机制一些常用方法的测试,包括测试属性,方法,注解,泛型的获取等等

2015-11-29

adb常用命令

adb常用命令md文件,列举了一些常用的adb命令,忘记了随时查,不要硬背

2015-11-25

Genymotion-ARM-Translation.zip

Genymotion-ARM-Translation.zip,拖到Genymotion模拟器即可安装

2015-11-06

genymotion-2.5.2.exe

genymotion-2.5.2,号称史上最快的android模拟器就在这了

2015-11-06

Everything-1.3.4.686.exe

Everything-1.3.4.686.exe,32位和64位都有,window上快速查找文件

2015-11-06

android开发常用工具类集锦

android快速开发常用工具类,包含10多个工具类,直接拿来用。

2015-10-25

android开发工具类

android快速开发必备工具类,包含10个常用的android工具类,直接拿来用

2015-10-25

com.lifesting.tool.encoding_1.0.0.jar

com.lifesting.tool.encoding_1.0.0.jar,eclipse项目编码转换插件

2015-10-18

项目编码转换成UTF-8

项目编码转换,选择一个项目文件夹,将该文件夹下的所有文件转换成utf-8

2015-10-18

fastjson-1.0.3.jar

fastjson-1.0.3.jar,解析json数据非常方便

2015-10-11

volley.jar

volley,最火google官方推出的android网络框架

2015-10-10

litepal.jar

该框架使得操作android的sqlite数据库非常方便

2015-10-10

jsoup-1.7.2.jar

jsoup,解析html超级方便,只要你会一点js dom,你就会用该框架解析任意的html

2015-10-10

cocos2d-master.zip

cocos2d-master,android版cocos2d游戏引擎

2015-10-10

gson-2.3.1.jar

goole的gson,用来解析json的,解析非常方便。

2015-10-10

test_from_to_patch

patch是Unix上的應用程式,由美國程式設計師拉里·沃尔(Larry Wall)於1985年所開發。它會利用一種名叫「patch file」(有時直接被稱為 patch)的文字檔案,來更新文字檔案

2020-11-13

CTS总结表格

Android CTS,GTS,CTS Verifier常见失败项总结excel,有相应原因的分析及问题解决方案。Android CTS,GTS,CTS Verifier常见失败项总结excel,有相应原因的分析及问题解决方案。

2017-09-07

python-3.6.0.exe

官网最新版下载

2017-03-10

Git-2.12.0-64-bit.exe

Git-2.12.0-64-bit.exe,64位window操作系统可以下载。

2017-03-10

反编译工具包(最新)

反编译工具包(最新),包含dex2jar2.0,jd-gui,apktool2.1.0。

2016-05-06

xUtils-2.6.14.jar

xUtils最新版本,修复了xUtils在android5.0上报错IOException: stack size 1036kb的bug。

2016-04-16

AppBarLayoutDemo.zip

Material Design (四),AppBarLayout的使用 文章示例代码,基于as

2016-03-19

ToolbarDemo

android 5.X Toolbar加DrawerLayout实现抽屉菜单 文章的演示demo,下载解压导入Android Studio。

2016-03-17

AIDLDemo.zip

android使用AIDL实现跨进程通讯(IPC) 文章的示例代码,下载解压导入Android Studio中使用。

2016-03-08

CustomTitleBar

android组合控件Titlebar的定制 文章的示例代码,一个高度可定制的组合控件TitleBar,下载导入as中即可使用。

2016-03-05

titlebar.zip

android组合控件Titlebar的定制文章的示例代码,一个可多组合的titlebar组合控件

2016-03-05

ValicationCode.zip

android自定义view(一),打造绚丽的验证码文章的示例代码,下载导入android studio中使用。

2016-03-03

Eventbus.zip

EventBus3.0使用笔记(详细)文章的演示demo,方便下载导入eclipse测试

2016-02-24

TabLayout.zip

TabLayout轻松实现仿今日头条顶部tab导航效果 文章的示例代码

2015-12-14

TabLayoutTest

TabLayout轻松实现仿今日头条顶部tab导航效果 文章的示例代码

2015-12-14

BottomTabDemo.zip

【Tab导航】ViewPager+RadioButton轻松实现底部Tab导航(一)的示例代码

2015-12-09

HtmlParseDemo.zip

文章【HTML解析】HTML解析,网络爬虫 的示例代码,下载导入eclipse测试

2015-12-08

jsoup-1.8.3.zip

jsoup-1.8.3.zip,全套jsoup,包括jar包:jsoup-1.8.3.jar;源码:jsoup-1.8.3-sources;文档:jsoup-1.8.3-javadoc。

2015-12-08

gson-2.5.jar

之前上传了一个损坏的gson-2.3.1的gson jar包,非常抱歉,这里是2.5版本的。

2015-12-07

JsonParseDemo

文章:【JSON解析】JSON解析的示例代码,下载导入eclipse运行测试,丰富的JSON解析方式。

2015-12-07

空空如也

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

TA关注的人

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