android开发
文章平均质量分 90
MingHuang1024
Blog:http://blog.csdn.net/MingHuang2017
Github: https://github.com/MingHuang1024
Email: MingHuang1024@foxmail.com
展开
-
一个自定义滑动验证组件
一个自定义滑动验证组件前段时间项目要求登录的时候加个滑动验证的功能。效果如下:乍一看,还真不知道怎么下手,后来想了想之前做过一个左滑删除的控件源码在这里觉得可以将这个改一下拿来用,只是换个滑动方向,估计成功概率比较大。接着就把以前的代码翻出来,看看怎么改,虽然修改过程中遇到些问题,但最终还是达到了想要的效果。下面说说实现的原理:实现过程中借助了ViewDragHelper这个类来简化代码,ViewDragHelper的用法可以参考这篇文章。实现原理是这样的,用一个水平方向的LinearLay原创 2020-06-27 15:41:50 · 563 阅读 · 0 评论 -
android studio 3.6 新特性
android studio 3.6 新特性android studio 3.6 稳定版已经在2月份就发布了,一直也没去看看,这两天决定看一下,老是提示我更新。新特性还是很多的,这里把自己感兴趣的几点记下来。完整的请看官方文档:https://developer.android.com/studio/releases0、gradle 离线模式设置当我一打开studio 3.6的时候,首先就是...原创 2020-03-29 08:28:34 · 803 阅读 · 0 评论 -
android自定义drawable的state属性
android自定义drawable的state属性在drawable中使用selector在开发中太常用了,不过用的最多是根据系统提供的一些状态来选择图片,比如:android:state_checked、android:state_pressed等等,其实这些状态也是可以自定义的,比方说天气状况有很多种情况,天晴、多云、下雨等等,那能不能根据这些状况来显示不同的示意图呢?这里是指通过 sel...原创 2020-03-20 08:04:38 · 1757 阅读 · 0 评论 -
Android多渠道打包配置
Android多渠道打包配置之前为了在同一台手机能同时安装测试包和生产包,采用配置buildType的方式来实现,相比于flavor,感觉是挺轻量又恰到好处的配置,具体见通过配置applicationId来实现测试包和生产包安装在同一台手机上。最近因为业务需要,需要多个渠道的包了,这就必须要用到flavor这个大杀器了。一路配置下来,感觉还挺顺,下面就具体记录一下。###目标先说一下需求,增...原创 2019-12-15 11:22:53 · 1200 阅读 · 0 评论 -
Android Studio中多moudle依赖aar的配置
Android Studio中多moudle依赖本地aar文件的配置在Android开发中,我们有时会引入其他第三方的库或者资源等,可能是添加一个jar文件,也可能是添加一个aar文件,又由于aar可以包含资源文件,所以android库通常会打成aar格式的文件,在工程中引用的时候通常有两种方式,一种是引用Maven库中的aar,一种是将aar拷下来,放在libs文件夹下。引用Maven库中的...原创 2018-05-27 11:45:11 · 1738 阅读 · 0 评论 -
通过JitPack发布Android Library
通过JitPack发布Android Library烦恼相信大家在刚接触Gradle的时候都被其使用依赖库的方式折磨过,在Gradle中配置依赖库确实非常简单,可是一旦出了什么问题就会很懵逼。明明是按人家的开发文档进行配置的,却老是报错,这时候如果对Gradle的依赖机制不够了解的话就不知道该怎么去处理了,能不能依赖成功全看老天的心情了。对于一个不怎么有追求的程序猿来说,一定会想去探个...原创 2018-06-04 01:12:02 · 624 阅读 · 0 评论 -
什么是MD5
什么是MD5?一、概念MD5在软件行业是再常见不过的一个词了,即使你从没使用过它,也不知道它到底是个什么东西,但你肯定听过这个词。那么到底什么是MD5呢?是加密算法吗?不是的,它是一种信息摘要算法,它可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串(这个特殊的字符串就被称之为摘要,我理解就是从文件中摘一些信息片段加工而来),并且一个文件所对应的MD5摘要是固定的,当文...原创 2018-08-05 13:42:42 · 8391 阅读 · 4 评论 -
底部弹框动画及渐变背景色
Android底部弹框动画及渐变背景色概述手机应用中的底部弹框经常都会用到,应该说也比较容易实现,网上有非常多的例子,不过都是视觉效果比较单一的,比如瞬间弹出、从底部慢慢升起、带半透明的背景色。如果把这些效果组合起来实现就会有些瑕疵,等下我会具体说一下我认为的瑕疵。现在来说一下实现以上几种效果的常见方法:一、 动画效果实现方法对于PopupWindow的动画效果,一种是用style, 一种...原创 2019-03-17 20:10:02 · 888 阅读 · 0 评论 -
通过配置applicationId来实现测试包和生产包安装在同一台手机上
通过配置applicationId来实现测试包和生产包安装在同一台手机上概述开发人员或者测试人员经常需要将测试的内容与生产上的内容对比,用于做一些确认,可是通常情况下在一部手机上不能同时安装测试包与生产包,因为它们的application id 都是一样的,这是android系统的规定。为了达到这个目的,可以通过应用gradle灵活的配置方式来实现,通常有两种实现方式:1、多渠道打包通过P...原创 2019-03-24 18:58:11 · 1318 阅读 · 0 评论 -
自定义可设置MaxHeight的RecyclerView
自定义可设置MaxHeight的RecyclerView引言在实际工作中,可能会遇到这样一种需求,在一个列表下面紧跟一个按钮,就像垂直的LinearLayout中,先是一个RecyclerView然后跟着一个button,但是这样布局会有一个问题,当RecyclerView的内容超过一屏时,这个button就被移到屏幕外了,看不见了。如果用相对布局呢,把button定在底部,这也显然不是那么完...原创 2019-05-02 15:25:51 · 3358 阅读 · 0 评论 -
使用gson将null String对象转换成空白字符串
使用gson将null String对象转换成空白字符串在app开发中,页面上可能会有‘null’字眼出现,如,姓名:null这是因为后端返回的json数据相应字段的值为null造成的,如:{ "name": null, "phone": "13800138000"}将null显示在界面上给用户带来很不好的体验,当遇到这种问题时,最简单的方法就是显示前先判一下,可是要每个字...原创 2019-06-07 14:53:39 · 5170 阅读 · 0 评论 -
签名apk安装失败,都是signature version惹的祸
签名apk安装失败,都是signature version惹的祸新建的一个项目由于引用了一些三方库,还没打过签名包,担心混淆会有问题,准备先打个签名包试一下,结果一打出来就遇到个很让人郁闷的问题:安装失败!!!一开始我以为是混淆的问题,因为在打包过程中还遇到过几个错误和警告,所以重点都放在了这几个问题上,以为自己排除这些错误和警告的方法不对,导致虽然能打包成功但无法安装。折腾了好久也没有弄好。后来想原创 2018-05-05 13:45:16 · 8173 阅读 · 3 评论 -
cmake使用独立工具链交叉编译可在android中运行的so包
cmake使用独立工具链交叉编译可在android中运行的so包在在命令行下用CMake交叉编译可在android中运行的so包一文中说了一下使用NDK自带的工具链来编译so包,当时讲到还有另一种方法来编译so包,即使用独立工具链来编译,现在就来讲一讲这种方式。主要包含以下两个步骤:编译独立工具链使用独立工具链编译so包一、编译独立工具链编译独立工具链是利用$NDK/tool原创 2018-01-08 10:40:11 · 10456 阅读 · 4 评论 -
ViewPager实现循环滑动
android中用ViewPager实现循环滑动ViewPager在android开发中是个非常常用的组件,最为大家所熟悉的应用场景大概是在app中自动滚动的广告了。当然了,还有很多其它的地方也会用它来实现。不过美中不足的是,它没提供相应的API来实现循环滑动,当滑到最后一页后就不能前进了,只能回退,而当退到第一页时也不能再回退了。可我们的需求中往往有些地方需要循环的效果,比如上面说的广告,一般都是原创 2017-10-22 11:55:21 · 941 阅读 · 0 评论 -
Android6.0权限申请示例
Android6.0权限申请示例从Android6.0开始,系统在权限上做了大幅度的改变,6.0之前只要在AndroidManifest.xml文件中声明使用相关的权限就可以了,在安装的时候将会提示用户授权,如果用户不授权就无法安装。6.0之后则不同,安装apk时不会提示用户授权,而是将所有权限都默认为拒绝,只有要应用到某项权限时,才会询问用户是否授权。此时如果我们的老代码不做任何变动的话App就会原创 2017-10-15 17:57:54 · 405 阅读 · 0 评论 -
给我一岁的儿子写的小游戏
给我一岁的儿子写的小游戏一岁左右的小孩好奇心很强,我在一旁玩手机时我儿子总是要凑过来看一看,看到屏幕上的东西就喜欢去摸一摸,特别是运动的东西更能吸引他的注意。我就突然想到写个小游戏给他玩玩吧。然后就写了一个,不过他并不买账,只玩了一会儿就不玩了。可能是俺的游戏不太符合他的需求吧,嘿嘿。。虽然这游戏没啥用,但从写程序的角度来说也积累了一点点经验,所以在这里记录一下。说是游戏,其实就是个非常简单的小应用原创 2017-11-04 20:46:51 · 340 阅读 · 0 评论 -
在命令行下用cmake交叉编译可在android中运行的so包
在命令行下用CMake交叉编译可在android中运行的so包最近在写一个通过录屏生成gif的小应用,由于要用到NDK,所以开始去解这方面的知识,总的来讲也还算简单,不过对于之前从没接触过ndk的小白来说,一切都是需要摸索的,在一个不熟悉的领域有时候一个微小的问题也能让你摸个半天才能搞明白。我写博客的大部分原因就是为了记录下这些摸索的过程,以后要是忘记了还可以翻出来看,当然,要是还能帮到其他跟我一样原创 2017-12-30 19:08:19 · 8824 阅读 · 0 评论 -
Android录屏并利用FFmpeg转换成gif(一)录屏
Android录屏并利用FFmpeg转换成gif(一) 录屏写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方式还是比较困难的。本来我以为应该也有能直接在手机上录屏并生成gif文件这样的app,下载一个这样的APP来录gif要方便得多。结果发现目前几乎没有此类APP,我就想能不能自己写一个,然后查了查原创 2018-01-13 12:28:53 · 1840 阅读 · 0 评论 -
Android录屏并利用FFmpeg转换成gif(二)交叉编译FFmpeg源码
Android录屏并利用FFmpeg转换成gif(二)写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方式还是比较困难的。本来我以为应该也有能直接在手机上录屏并生成gif文件这样的app,下载一个这样的APP来录gif要方便得多。结果发现目前几乎没有此类APP,我就想能不能自己写一个,然后查了查资料,原创 2018-01-20 10:45:17 · 1437 阅读 · 2 评论 -
Android录屏并利用FFmpeg转换成gif(三) 在Android中使用ffmpeg命令
Android录屏并利用FFmpeg转换成gif(三)写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方式还是比较困难的。本来我以为应该也有能直接在手机上录屏并生成gif文件这样的app,下载一个这样的APP来录gif要方便得多。结果发现目前几乎没有此类APP,我就想能不能自己写一个,然后查了查资料,原创 2018-01-28 14:23:00 · 1152 阅读 · 1 评论 -
Android录屏并利用FFmpeg转换成gif(四) 将mp4文件转换成gif文件
Android录屏并利用FFmpeg转换成gif(四)写博客时经常会希望用一段动画来演示app的行为,目前大多数的做法是在电脑上开模拟器,然后用gif录制软件录制模拟器屏幕,对于非开发人员来讲这种方式还是比较困难的。本来我以为应该也有能直接在手机上录屏并生成gif文件这样的app,下载一个这样的APP来录gif要方便得多。结果发现目前几乎没有此类APP,我就想能不能自己写一个,然后查了查资料,原创 2018-01-28 14:24:39 · 1577 阅读 · 2 评论 -
结合源码说说使用Handler发送异步消息的实现过程
结合源码说说使用Handler发送异步消息的实现过程在Android开发中,我们经常会遇到这样一种情况:如果在UI界面上执行一段很耗时的代码,比如我们在界面上点击了一个“下载”按钮,那么我们需要执行网络请求,此时如果下载量大,或网络比较差,很容易就会造成ANR(Application Not Responding)错误,为了保证不影响UI线程,我们通常会创建一个新的线程去执行我们的耗时的代码。当我们原创 2018-02-11 17:01:28 · 613 阅读 · 0 评论 -
Java线程池中的核心线程是如何被重复利用的?
Java线程池中的核心线程是如何被重复利用的?引言在Java开发中,经常需要创建线程去执行一些任务,实现起来也非常方便,但如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。此时,我们很自然会想到使用线程池来解决这个问题。使用线程池的好处:降低资源消耗。java中所有的池化技术都有一个好处,就是通过复用原创 2018-03-15 17:44:07 · 9548 阅读 · 55 评论 -
巧用ViewPager实现日历场景
巧用ViewPager实现日历场景在 android中用ViewPager实现循环滑动 一文的结尾我们曾留了个小问题: 提个小问题:如果换一个场景,比如在日历中,我们每滑一下就显示下一个月或上一个月的日历,一般做个日历的话都要可以查询上百年的日期吧,如果使用上述方法,难道我们要传N多个view到ViewPagerAdapter里面吗?显然这是不可能的。如果只用三个view呢,让它们循环使用,这也原创 2017-10-28 15:10:37 · 1884 阅读 · 0 评论