自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 Android8.0以上Wi-Fi信息权限管理

Android8(API级别26)引入了有关权限和WLAN扫描允许频率限制。为了提高网络安全和性能稳定性,Android9(API级别28)收紧了权限要求,并进一步限制WLAN扫描频率。权限:Android 8.0 和 Android 8.1成功调用WifiManager.getScanResults()需要以下任意一项权限:• ACCESS_FINE_LOCATION• ACCESS_COARSE_LOCATION• CHANGE_WIFI_STATE如果调用应用没有其中任意一项权限

2020-05-14 21:34:08 1564 1

原创 外部跳转APP

为了推广项目公司提出要求:需要根据短信链接跳转APP指定界面,即外部跳转app的功能实现。此功能的实现主要是利用白名单,首先在manifest.xml文件中间中添加白名单,使自己的app能够识别此链接; <activity android:name=".view.activity.common.IntentParseActivity"> <intent-filter&...

2019-08-07 12:02:27 288

原创 java.lang.VertifyError错误踩坑之旅

前段时间公司要求开发一个闪光SDK,然后开发好之后,运行在6.0和7.0,以及8.0版本的手机上运行是没有问题的,但是在4.4.4版本的手机上时出现java.lang.VerifyError:com.example.sdk.FlashActivity 报错信息;然后查阅各种相关的问题,总结大概和三种情况有关:1、dex文件超过了限制字节,所以app会打两个dex文件,Android在5.0之前...

2019-08-07 11:56:09 360

原创 解决方法数越界的问题

在Android中单个dex文件所能包含的最大方法数是65536,这包含AndroidFrameWork、依赖的jar包以及应用本身的代码所包含的方法。一般来说,一个简单的应用的方法数很难达到65536,但对于一些大型项目来说,就很容易达到了。当应用的方法数达到65536时,编译器就无法完成编译工作并抛出DexIndexOverflowException异常。还有一种情况,有时候方法数并未达到6...

2019-08-07 11:37:21 187

原创 Bitmap的高效加载

BitmapFactory类提供了四类方法:decodeFile,decodeResource,decodeStream,decodeByteArray,分别用于支持从文件系统、资源、输入流和字节数组中加载出一个Bitmap对象。如何高效加载一个Bitmap?其核心思想就是采用BitmapFactory.Options来加载所需尺寸的图片,主要是用到它的inSampleSize参数,即采样率。通过...

2019-08-06 11:28:36 67

原创 线程池

在操作系统中,线程是操作系统调度的最小单元,同时线程又是一种受限的系统资源,不可能无限制的产生,线程的创建和销毁都会有相应的开销,因此正确的做法是采用线程池,一个线程池中会缓存一定数量的线程,通过线程池就可以避免频繁创建和销毁线程所带来的开销。线程池有如下几点好处:1、重用线程池中的线程,避免因为线程的创建和销毁所带来的性能开销。2、能够有效控制线程池的最大并发数,避免大量线程之间因为互相抢...

2019-08-06 11:00:57 121

原创 动画中的插值器和估值器

TimeInterpolator 时间插值器,它的作用是根据时间流逝的百分比来计算出当前属性值改变的百分比。系统预置的有LinearInterpolator(线性插值器,匀速动画),AccelerateDecelerateInterpolator(加速减速插值器,动画两头慢中间快),DecelerateInterpolator(减速插值器,动画愈来越慢)等。TypeEvaluator 估值器,他...

2019-08-02 13:30:25 119

原创 Android的动画分析

Android的动画可以分为三种:View动画,帧动画和属性动画。下面就简单介绍这三种动画的使用方法:1、View动画View动画通过对场景里的对象不断做图像变换(平移,缩放,旋转,透明度)从而产生动画效果,它是一种渐进式动画。View动画可以通过xml来定义,也可以通过代码来创建,对于View动画来说,建议采用xml来定义动画,因为xml格式的动画可读性更好。在res/anim/filen...

2019-08-02 11:59:36 115

原创 Android的Drawable

Drawable表示的是一种可以在Canvas上进行绘制的抽象概念,他的种类很多,都表示一种图像的概念,但又不全是图片,通过颜色也可以构造出各式各样的图像效果。在实际开发中,Drawable常被用来作为View的背景使用。Drawable一般都是通过xml来定义的,也可以通过代码来进行创建具体的Drawable对象,只不过代码创建会稍显复杂。在Android的设计中,Drawable是一个抽象类,...

2019-07-31 15:17:10 94

原创 滑动冲突的解决方案

一般来说,不管滑动冲突多么复杂,它都有既定的规则,他们之间的区别仅仅是滑动规则不同而已,抛开滑动规则来说,我们可以找到一种不依赖具体的滑动规则的通用解决方法。以场景一为例,外部滑动方向和内部滑动方向不一致的情况,针对滑动冲突这里给出两种解决方式:外部拦截法和内部拦截法。1、外部拦截法外部拦截法是指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,不需要就不拦截,这样就可以解决滑动...

2019-07-17 11:01:06 736

原创 查看应用签名和手动签名

我们在使用一些第三方时需要提供应用签名,如果我们想要获得签名文件的指纹,我们可以在cmd中输入如下命令:keytool -list -v -keystore <签名文件路径>然后输入正确的密码就可以了。其结果如下所示:证书指纹: MD5: A3:F4:03:25:6F:AE:01:E9:53:F1:86:36:A8:23:7A:4F SHA1: 1A:2B:C2:B...

2019-07-02 11:13:27 286

原创 可折叠式标题栏

虽说我们现在使用的标题栏是使用Toolbar来编写的,不过它看上去和传统的ActionBar其实没什么两样,只不过可以相应RecyclerView的滚动事件来进行隐藏和显示。而Material Design并没有限定标题栏必须长这个样子,事实上我们可以根据自己的喜好随意定制标题栏的样式。那么我们就可以借助CollapsingToolbarLayout 这个工具来实现可折叠式标题栏。Collaps...

2019-06-19 11:25:19 227

原创 Service的两种启动方式

服务(Service)是Android中实现程序后台运行的解决方案,他非常适合去执行那些不需要和用户交互,而且还需要长期执行的任务。服务的运行不依赖任何用户界面,即使程序被切换到后台,或者用户打开了另外一个应用程序,服务仍然能够保持正常运行。不过需要注意的一点是,服务不是运行在一个独立的进程当中的,而是依赖创建服务时所在的应用程序进程。当某个应用程序进程被杀掉时,所有依赖于该进程的服务也会停止运行...

2019-06-14 11:51:16 966

原创 XMl和JSON数据解析

在网络上传输数据时最常用的格式有两种:XML和JSON格式。XML格式的数据扩展性比较好,格式比较统一;JSON数据格式比较简单,体积比较小,在实际的项目中应用比较多。对于XML解析方式挺多的,比如Pull解析,SAX解析和Dom解析。现在逐一用一个案例说明该如何使用。假设解析的数据格式如下:String responeData = "<apps> <app>...

2019-06-13 12:43:32 144

原创 Android中的危险权限

Android6.0系统增加了运行时权限这个功能,对于危险权限需要用户手动授权,否则用户就无法使用相应的功能。Android中所有的危险权限如下:权限组名权限名CALENDARREAD_CALENDARWRITE_CALENDARCAMERACAMERACONTACTSREAD_CONTACTSWRITE_CONTACTSGETA_ACCOUNTSL...

2019-06-05 11:54:21 257

原创 Git基本用法

1、安装Git如果是Linux系统,只需要打开shell界面,输入:sudo apt-get install git-core按下回车之后输入密码即可完成Git的安装;如果是Windows系统,需要去Git官网下载安装包进行安装;2、创建代码仓库首先配置你的身份,这样在提交代码的时候就知道是谁提交的,命令如下:git config --global user.name "Tony"...

2019-06-03 17:00:20 91

原创 Activity的启动模式

1、standard即标准模式,也是系统默认模式。每当启动一个新的活动时,他就会在返回栈中入栈,并处于栈顶位置,而对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。2、singleTop栈顶复用模式。当活动的启动模式是singleTop,在启动该活动时,如果发现返回栈的栈顶已经是该活动,那么直接使用它,而不会再重新创建该活动...

2019-05-28 17:04:39 91

原创 Activity的生命周期详解

oncreate() 表示activity正在被创建,这是生命周期的第一个方法,在这个方法里,我们可以做一些初始化工作,比如加载布局资源,初始化activity所需数据。onStart() 表示activity正在被启动,此时activity已经可见了,但是还没有出现在前台,还无法和用户交互。onResume() 表示activity已经可见了,并且处于在前台。onPause() 表示ac...

2019-05-24 17:38:37 166

原创 AS创建的Android项目目录结构

Android studio创建新项目默认使用的是Android模式,这种项目结构比较简洁明了,适合快速开发,但这并不是项目真实的目录结构,而是被Android studio转换过的。当我们切换结构模式为Project,就可以看到以上图的结构,这就是项目真实的目录结构。1. .gradle和.idea这两个目录下放置的是Android studio自动生成的一些文件,我们无需关心,也不要手动...

2019-05-23 18:20:43 749

空空如也

空空如也

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

TA关注的人

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