自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 2019Android面试总结

嘀d出行:1、handler原理,主线程发送message给子线程2、recyclerview列表的优化3、自定义view,onmeasure的如何测量,测量模式起什么作用?4、大图片如何处理?5、sp支持多进程吗?多线程呢?6、数据库读写在同一个线程吗?9、一个文本文件中每行有一个手机号或电话号,给定一个手机号,判断该文件中是否存在。给出时间复杂度较低的方案。最y...

2019-05-29 11:58:05 110

原创 教你如何自定义实现可上下滑动的ViewPager

前言:要问最近什么App最火?那必须是抖音啊!火的不要不要的!抖音的界面在App中算是独树一帜,一进去就是全屏的视频播放界面,上下滑可以切换视频,左滑进入故事相机界面,右滑进入个人中心。这样的效果在Android中应该如何实现呢? 我想到了ViewPager,但是ViewPager只支持左右滑动,上下滑动该怎么实现?我可以不可以把它翻转一下呢?答案是肯定的!OK,我们进入正文。githu

2018-04-08 10:56:54 4555

原创 Retrofit2.0使用姊妹篇——带进度上传文件

之前的一篇博客讲了Retrofit带进度下载文件的实现,算是Retrofit使用的“姐姐篇”,那今天我们就讲讲它的“妹妹篇“——用Retrofit实现带进度上传文件!github地址:https://github.com/kb18519142009/UploadService.git 大家喜欢的话,就给个star^_^,有问题或者建议,可以直接提issues,也可以在博客下面给我留言。谢谢~...

2018-03-19 23:05:24 4885 13

原创 Retrofit2.0使用姊妹篇——带进度下载文件

Retrofit是目前最主流的网络框架了,它对网络请求几近完美的封装,大大降低了我们开发者的研发难度,缩短了研发周期。最近项目中遇到了下载视频和图片文件的需求(还有上传视频和图片的需求,请移步这篇博客),我第一反应是用retrofit做呀,so easy!产品接着说,要带下载进度条哦!我一想,retrofit好像并没有给我们提供显示下载进度的接口,哎呀,看来还是得自己个儿整整喽!接下来,我把自己实...

2018-03-12 09:34:20 16148 7

原创 Android Studio3.0之让人懵逼的错误:Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2...

我的其它文章:Retrofit2.3使用姊妹篇——带进度下载文件Retrofit2.3使用姊妹篇——带进度上传文件最近将Android Studio从2.3.3升级到3.0.1后,出现了一个莫名其妙的错误,又让人一顿懵。。。错误信息如下:解决方式一:只需在工程的gradle.properties文件中添加以下命令:android.enableAapt2=false然后点击Sync Now即可这种方...

2018-01-06 14:23:39 45652 17

原创 Android App内版本更新完美适配7.0、8.0

Android应用在版本更新上并不像IOS那么暴力(在后台悄悄咪咪给你升级),很多时候还是需要在App内提示用户下载更新的,这也就意味着我们需要自己下载apk,并跳转安装!而随着Android的版本更新迭代,越来越注重应用安全,以及对危险权限的限制,使得我们以前的下载、安装变得不靠谱了,下面我们就来一一填坑。。。一、兼容Android7.0Android 7.0 做了一些权限更改,为了提高...

2019-02-01 10:04:11 938

原创 WebView调用js方法获取返回值的完美解决方案

在Android项目中我们或多或少会涉及到与js交互的问题,这其中WebView是必须掌握的控件,今天主要说说我们通过WebView调用js方法,然后如何很好的获取返回值。这里我总结了三种方式,大家可根据需求选择。一、Android版本在4.4及以上mWebView.evaluateJavascript("javascript:jsMethod()", new ValueCallback...

2019-01-28 12:15:18 3557

原创 动手撸一个Android路由框架LuRouter

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2018-12-27 17:47:38 199

原创 Android进程间通信——ContentProvider的使用

前言ContentProvider作为四大组件之一,一直以来存在感都很低,但其实它的功能还是很强大的,尤其是在实现进程间通信的时候。和AIDL一样,ContentProvider的底层实现也是Binder,但是由于系统已经为我们做了封装,所以它的使用过程要简单的多。一、什么是ContentProvider?内容提供者,是Android四大组件之一。是Android中提供的专门用于不同应...

2018-10-17 10:48:31 273

原创 Android进程间通信——一步步揭开AIDL的神秘面纱

前言在我心中AIDL一直是个神秘的存在,它就像武侠世界中的上乘内功心法,让我这个只会点三脚猫功夫的人一直敬而远之!虽然说在平时开发中确实很少使用AIDL,但是它在面试中出现的频率还是相当高的,况且想要成为一名合格的Android开发人员,是无法避开AIDL的。最近又拿起了《Android开发艺术探索》这本书,看到了“IPC机制”这个章节,就借这个机会彻底揭开AIDL的神秘面纱,看看它究竟是何方...

2018-09-19 12:12:55 177

原创 Android快速实现签到日历

需求描述:市场上很多App都会有签到功能,实现方式不尽相同,有直接展示整张日历的,也有只提供近7日或15日的签到情况的。我遇到的需求是展示一张包含35天的日历,没有翻页功能,但当前日期必须在日历最中间的那一行,我去,人家的日历都是整月整月的展示,你家日历咋这么特殊呢?PM给出的理由是“必须让用户看到连续签到的情况啊”。行,你说啥就是啥,大不了我自己一天一天的算呗!实话实说,PM提出的需求,只要...

2018-08-31 18:58:58 6171 12

原创 RecyclerView之利用ItemDecoration实现万能分割线

上一篇文章讲了如何使用ItemDecoration去实现RecyclerView的万能间距,可是很多时候我们的需求里还会有分割线,有时候既要有合适的间距,也要有分割线,这种需求多出现在列表中,也就是网格布局中,这个时候就需要我们自己去画了,如果你天真的把分割线加到布局里,那效果将会是奇丑无比。。。直接看代码吧:import android.content.Context;import andro...

2018-06-28 18:58:20 1293

原创 RecyclerView之利用ItemDecoration实现万能间距

目前在Android开发中RecyclerView的使用率依然很高,提到RecyclerView就绕不开Item间距的问题,下面我介绍一个万能间距!拿去直接用!代码如下:package com.example.downloadfile.util;import android.graphics.Rect;import android.support.v7.widget.GridLayoutMa...

2018-06-19 19:30:33 3697 3

原创 最好用的Android权限申请库——EasyPermissions使用解析

一、前言:从 Android 6.0(API 级别 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予。这种方式可以简化应用安装过程,它还让用户可以对应用的权限进行控制。例如,用户可以选择为相机应用提供相机访问权限,而不提供设备位置的访问权限。用户还可以随时进入设置界面对应用的权限进行修改。系统权限分为两类:正常权限和危险权限:如需了解详细信息,请参阅正常权限和危险权限。二、我们...

2018-06-12 19:16:11 3103

原创 ImageView加载网络图片的大小适配

我们在项目中经常会遇到给ImageView加载网络图片的需求,而服务端给我们的图片size五花八门,我们也得面对五花八门的手机分辨率,此时我们应该给ImageView的layout_width和layout_height设置什么值合适呢?直接match或者wrap肯定不行,会拉伸,导致图片模糊,又不能写固定值,否则可能展示不全。。。下面我说说我的处理方式,解析服务端下发的Url中的size,然后用...

2018-06-05 15:10:15 1680

原创 Android面试总结

“金三银四”这句话真的不是说说而已,每年的三四月份确确实实是招聘旺季,各公司人才缺口大,但是求职者也众多,奇虎3601、Activity启动模式及应用场景2、handler机制、以及和message、looper等之间的关系3、与service通信的几种方式,进程间通信和进程内通信的区别4、线程死锁、用代码实现5、写出两种单例模式,说出优缺点6、实现recycleview侧滑删除7、http、tc...

2018-05-14 10:52:40 487

原创 Android中添加Fragment的正确姿势

前言:我们在平时开发中必定会运用到Fragment,经常会出现一些莫名其妙的问题,比如在旋转屏幕或被系统杀掉重启时,出现bug,这说明你添加Fragment的姿势不对!在这里我总结一下自己在项目中添加Fragment的方式,我且称之为正确姿势,如有不对的地方或者更好的方式,欢迎大家留言指出!正文:一、在一个Activity中添加一个Fragment的正确姿势Activity...

2018-04-03 21:33:10 2552

原创 快速获取手机本地所有图片或视频

获取图片和视频是app中很常见的需求,这里我提供两种方法,各有利弊,大家可以根据自己的需求选择。方法一:/** * 扫描本地图片 */public static void getLocalPhoto(List<String> list) { new Thread(new Runnable() { @Override public

2018-03-16 13:50:30 3707

原创 仿小咖秀倒计时

前言:2017年的短视频行业,盛况空前,风头无二,市场中不断涌现出各类短视频平台,已多达上百家,小咖秀可以说是短视频中的“元老”,功能齐全,拍摄体验也很棒。我个人觉得小咖秀的拍摄倒计时设计是很人性化的,支持选择时长,有三秒、五秒、十秒等,玩起来还是很舒服的。作为移动端开发者,看到有意思的功能,第一个想到的当然是我能不能也做成这样!所以我简单写了个demo,仅仅模仿了一下倒计时效果。gith...

2018-03-01 18:47:10 250

原创 Postman没有返回结果

现如今进行接口开发或者移动端开发的,大都在使用Postman调试接口,这是Google的一款浏览器插件,可以用于创建和发送任何的HTTP请求,非常方便接口调试!还没接触过的小伙伴,赶快去了解吧,先把下载链接奉上!想要了解如何使用的请参考简书的这篇介绍,写的挺详尽的!我今天要说的是在使用过程遇到的一个问题:Postman不返回任何结果! 起初我使用的Postman是直接拷贝的别人的,版本是4.4.2

2018-02-13 14:26:45 4886

原创 Android分离合成音视频(用MediaExtractor和MediaMuxer)

前言:最近在做类似小咖秀的视频录制功能,也就是俗称的对嘴型表演,录制视频我用的是三方SDK,但是视频合成就需要自己搞了,在网上搜了挺多资料,国内国外网站看了不少,踩了很多坑,总算整出来了,在此分享给大家,希望对以后要做类似功能的兄弟们有所帮助!需求:将视频一的音频提取出来,视频二的视频图像提取出来,然后把它们合成新的视频。工具准备:视频的分离合成我主要用到了MediaE...

2018-01-26 18:19:30 3938 1

原创 AndroidStudio3.0多渠道打包:我用一行命令打出N个包

前言:做Android开发的绕不开多渠道这件事,因为Android应用市场大大小小有几百个,而我们需要在发布应用之后统计各个渠道的用户下载量,这个时候就要多渠道打包,也就是对各个渠道进行标识,以便于统计。多渠道和统计时息息相关的,因为我们做多渠道打包的目的就是要统计,友盟统计是大家日常开发中常用的渠道统计工具,使用相当普遍,接下来我讲到的打包方法就是基于友盟统计实施的。正文:一、按

2018-01-20 11:53:28 9020 1

原创 Android两行代码真正杀死你的App

Android上杀掉进程的方式有两种,分别是System.exit(0)和Process.killProcess(Process.myPid()),这两种方法比较暴力,App进程会被直接杀掉,但是由于Android的安全机制,你会发现,在调用上述两种方法后,App会被自动重启,并未达到我们想要的杀死状态!那我们该怎样实现真正的杀死App呢?我认为需要两个步骤:一、关闭打开的所有

2018-01-05 17:41:51 6066

原创 点击EditText外部隐藏软键盘的小技巧

在Android编程中,我们经常需要实现点击EditText,软键盘弹起,带点击外部区域,软键盘隐藏,下面我提供两种方式: 1、我们给布局的最外层ViewGroup设置点击事件,点击就隐藏软键盘,是不是很简单,但是这种方式只能解决布局简单的情况,复杂的请直接看第二种,代码如下:布局中:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmln

2017-12-14 18:55:21 1001

原创 软键盘弹出顶起布局的小技巧

在安卓开发中我们会很频繁的和软键盘打交道,但是软键盘本来是不属于我们的布局的,它的出现会遮挡布局,比如,布局中有一个EditText是位于底部的,点击之后弹出软键盘,如果我们不做任何处理,那软键盘必然会将EditText遮挡,这是很糟糕的效果,该怎么避免呢?首先我想到了Activity的windowSoftInputMode属性,这个属性能影响两件事情: 1、当有焦点产生时,软键盘是隐藏还是显示

2017-11-15 20:34:23 6998 2

原创 Android Studio 打包时 Signature Version V1 V2

最近在提交测试的时候,用Android Studio给测试打了个包,如下图,我打包时,没注意选择Signature Versions,结果测试就找来了,说给他的包安装失败。。。 再次打包的时候仔细看了看,原来问题出在这个V1和V2的选择上啊。先简单介绍一下这两个选项: Android 7.0中引入了APK Signature Scheme v2,v1呢是jar Signature来自JDK

2017-11-03 11:34:25 211

原创 SurfaceView相关概念的整理

前言 最近在写视频播放器的时候用到了SurfaceView和MediaPlayer,在各个功能完成后,竟得意忘形,感觉自己又get到新技能,可以嘚瑟几天了,直到前两天被人问到: 问“SurfaceView和Surface有什么区别啊?它们是一个东西吗?” 答“当然不是啊,肯定不是啊…SurfaceView就是一个View啊…Surface是…” …… 紧接着脑海里就响起了我五月天的那首歌…

2017-09-08 11:41:06 226

原创 Android Studio之让人懵逼的错误:Failed to load native library 'native-platform.dll' for Windows 10 x86.

在使用Android Studio的时候,经常会遇到各种莫名其妙的错误,让人一脸懵逼,无从下手,有时候整一天都弄不明白,既浪费了时间又让人身心俱疲。下面我把我这次遇到的奇葩问题和解决办法贴到这里,希望能够帮到大家,让大家1分钟就爬坑成功!(心疼自己个儿)1.错误描述: Error:Unable to start the daemon process. This problem might be

2017-09-02 15:36:26 2323

原创 C++中string字符串切割的两种方法

工作中经常会遇到字符串切割的问题,但是一直是临时找方法或者搬旧代码,下面简单总结一下:一、通过stl实现 涉及到string类的两个函数find和substr: 1、find函数 原型:size_t find ( const string& str, size_t pos = 0 ) const; 功能:查找子字符串第一次出现的位置。 参数说明:str为子字符串,pos为初始查找位

2017-08-28 17:49:13 2260 1

原创 Java设计模式详解之单例模式

1.单例模式是什么 Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收(garbage collection)。 使用单例模式最核心的一点是体现了面向对象封装特性中的“单一职责”和“对象自治”原则。单例模式主要有3个特点,: 1、单例类确保自己只有

2017-08-25 14:28:45 175

原创 Java关键字之synchronized

1.synchronized是Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然可以访问该

2017-08-11 12:40:58 142

原创 多个Fragment之间的切换,该用什么方法呢?

最近在开发过程中使用Fragment做很常见的类微信界面,底部四个可选项,首页、课程、发现和我的,每点击其中一个,在上方显示不同的Fragment,如下图:起初我并没有考虑太多,用了最简单的方式,直接使用replace方法,代码如下:getSupportFragmentManager().beginTransaction().replace(R.id.rl_main_content,...

2017-08-01 14:01:39 7972 4

原创 提升ListView的运行效率

ListView的运行效率是很重要的,如果不对其进行优化,那么当ListView快速滚动的时候,它的性能就会很低下,下面我们谈谈对ListView的两种简单优化。 1.避免在ArrayAdapter的getView()方法中,重复加载布局。 我们对getView()方法的参数convertView进行判断,若为null,则使用LayoutInflater去加载布局;若不为null,则直接对con

2017-07-17 13:44:31 261

原创 关于Activity的四种启动模式的总结

一、Activity的四种启动模式: standard、singleTop、singleTask、singleInstance 。下面我们一一道来1.standard Activity默认的启动模式,在不指定启动模式的情况下,所有Activity均使用standard模式;这种模式下,每启动一次Activity,就会在返回栈中入栈,并处于栈顶位置,每次启动都是一个新的实例。 2.singleTo

2017-07-17 11:40:53 313

原创 比较Activity与Fragment的生命周期

前言:熟练掌握Activity与Fragment的生命周期非常重要,简单给大家整整 一、Activity 生命周期 二、Fragment 生命周期 三、Activity与Fragment生命周期对比图 四、代码测试 下面是MainActivity的代码:import android.app.Activity;import android.os.Bundle;import a

2017-07-11 19:52:53 680

原创 第一次使用Git将AS项目提交至GitHub

GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。作为目前相当火的开源网站,GitHub还支持团队远程协作开发,只要将AS项目通过Git提交到GitHub上,并邀请你的小伙伴共同开发,我们就可以实现天南海北一起搞项目的需求啦!接下来就试试将AS项目提交至GitHub吧!1.首先,要安装Git客户端,直接上网搜索Git,下载

2017-07-04 11:39:18 2372

原创 C++中各种类型之间相互转换

1.string类型转为CString类型: 先将string类型变量转换为const char*类型,然后再直接赋值就可以了。例如: CString cstr; sring str =“asdasd”; cstr = str.c_str();2.CString类型转为char*: CString str = _T(“qwer”); USES_CONVERSION; char*

2017-03-20 18:10:22 334

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