Android
文章平均质量分 63
a10615
这个作者很懒,什么都没留下…
展开
-
Android启动动画bootanimation
Android的启动动画,不是gif,而是由N个png图片、和动画配置文件组成,跟帧动画一样一、准备工作png帧动画图片zip压缩软件预览工具二、制作启动动画路径: /system/media/bootanimation.zip文件构成:decs.txt:配置文件,主要包括动画分辨率、每秒帧数、循环次数、动画路径等part0:第1组动画所在的文件夹。里面的文件一般按序号来命名,eg:0001.png、0002.pngpart1:第2组动画所在的文件夹2.1 desc.txt 配原创 2021-02-02 00:16:06 · 853 阅读 · 0 评论 -
局域网主机广播寻找设备
源码及demo:UdpBroadcastSearcher一、背景介绍这是前面UDP网络编程中的实例(Android网络编程TCP、UDP(三)——UDP实例:搜索局域网所有的设备)。觉得这功能在以后可能会用上,就按照原思路优化了下代码。主要优化的地方:Android和Java工程中都可以使用用户可选择是否携带自定义协议数据。如设备(或主机)可以直接携带设备名称、房间等信息主机可把设备携带的信息原创 2016-09-23 20:01:48 · 9509 阅读 · 0 评论 -
自定义控件——圆形圆点进度条(仿安全卫士中的一键加速)
一、源代码源代码及demo下载(此进度条开源项目后续会持续添加、更新)二、行动由来在开发交流群中,一童鞋说要实现这个进度条,但在网上没有找到开源项目。 看到这个图片,很熟悉吧?有木有想点它的冲动?觉得有点意思,可以研究一下,再说也有一段时间没写自定义控件了,正好复习复习(说实话,一段时间没写,思路有,但就是不知道从哪开始)。昨天花了一天的时间才把它搞定,先看效果图:3种显示模式: 模拟进度动画效原创 2016-09-26 00:49:09 · 9164 阅读 · 22 评论 -
如何让自定义控件的字体瘦身(优化圆形圆点进度条)
一、开源源码及demo下载二、产品经理来了本以为写好的圆形圆点进度条没问题了,因为写前篇博客时优化了一些细节。那位提需求的童鞋下班后呼叫我,说UI有点问题:我的百分比字体偏壮,没原版的苗条(告诉我是百度手机助手,现在才知道⊙﹏⊙b)。 一对比,确实粗壮了不少。怀疑是不是系统的原因,特意去下载手机助手在同一手机上进行比对,,,确实如此,接下来,找办法解决:首先去查是不是有字体类型,一个一个试,都原创 2016-09-28 01:32:11 · 1250 阅读 · 4 评论 -
自定义动画(仿Win10加载动画)
一、源代码源代码及demo二、背景先看看Win10的加载动画(找了很久才找到): 每次打开电脑都会有这个加载动画,看上挺cool的,就想着自己能否实现它。要实现这个动画?首先想能否通过自定义SurfaceView控件(界面刷新是通过子线程来完成)来实现。这需要知道某一刻时间,那些小圆点在什么位置。小圆点都在做圆周运动,可以看出除了左上角,可以通过势能和动能的相互转化来计算速度。但速度是变化的,如何原创 2016-10-07 17:04:19 · 13570 阅读 · 1 评论 -
自定义动画(仿Win10加载动画)——优化
此为前文章写的仿Win10加载动画的优化版源代码已更新到github优化分析 原生 自定义高仿(v1版) 一直觉得自己写的与原生的有差别,经过仔细对比观察,发现:原生的圆点出发位置不是都在底部,而是第一个在底部,后面的紧接着前面一个,像球在管子里一样圆点结束的位置就是该圆点开始的位置经过比对,发现一个周期的时间是7500ms,非7000ms经过优化后的对比: 原生原创 2016-10-08 16:05:29 · 11156 阅读 · 4 评论 -
DataBinding快速入门(还在用findViewById?)
一、DataBinding介绍了解一门新技术,一般从三个W一个H入手:是什么?(What)干什么用?(What)有什么好处?(What)怎么用?(How)二、DataBinding使用2.1 准备工作2.2 快速使用 user.nickName ?? user.name user.name + `(` + user.age +`)` us原创 2016-11-21 23:26:28 · 16178 阅读 · 3 评论 -
MD5+DES在C#.NET与Java/Android中的加解密使用
一、背景后台(C#.NET)使用一个MD5+DES的加解密算法,查了下,很多网友都使用了这个算法。在Android里,也需要这个算法,如何把这个加解密算法切换成Java版,成了难题。毕竟好久没涉及到这一块了,只知道:MD5(Message-Digest Algorithm 5,信息-摘要算法5):是一种信息摘要算法、哈希算法,不可逆; DES(Data Encryption Standard,数据原创 2017-03-20 00:43:33 · 2276 阅读 · 1 评论 -
Hook技术实现免注册和登录验证的插件化框架
Hook技术实现登录框架1 找到hook点Activity.javapublic void startActivityForResult(@RequiresPermission Intent intent, int requestCode, @Nullable Bundle options) { ... Instrumentation.ActivityResul...原创 2018-05-09 01:01:27 · 1684 阅读 · 0 评论 -
热修复Sophix多渠道补丁的解决方案
1 背景最近,把Sophix集成到了一个多渠道的项目里。但,第一次使用就遇坑了。代码里使用了BuildConfig.FLAVOR来判断当前属于哪个渠道,如:有两个渠道:taobao和tianmao Test.java类中使用了BuildConfig.FLAVOR:if ("taobao".equals(BuildConfig.FLAVOR)){ toast("abc&a原创 2018-07-10 23:37:11 · 1056 阅读 · 1 评论 -
使用iconfont.ttf图标文字库代替图标图片
1 效果2 下载字体库1) 选中图标 —— 添加入库:2) 添加至项目:3) 下载项目中的图标字体库:4)获取图标字体库iconfont.ttf5)查看图标对应的unicode值3 使用1)把iconfont.ttf拷贝到项目assets目录中2)修改TextView的字体库3)xml中使用4)装逼神器1 效果APP肯定都会用到图标,比如...原创 2018-08-03 19:25:52 · 26966 阅读 · 0 评论 -
源码分析自定义ViewGroup中Fragment无法显示的问题
一、背景昨天接到同学的一个问题:用了别人的自定义侧滑菜单控件,这个控件继承自ViewGroup,想通过左侧菜单里的列表,更改右侧界面显示的内容,内容通过Fragment来显示。问题来了:点击列表时,replace一个新的Fragment,无法显示在onCreate()中直接replace,可以显示二、填坑过程这里完全是个自嘲过程,可以直接跳过。因为调试过几次后,觉得应该从...原创 2018-08-04 01:13:47 · 2091 阅读 · 0 评论 -
Android网络编程TCP、UDP(三)——UDP实例:搜索局域网所有的设备
接上面的UDP,本篇主要讨论如何在局域网中搜索所有的设备,这个需求在物联网应用的比较多,也比较综合,特把名字加在标题中了。最后一块是网络编程的常见问题。3.6 实例:在局域网内搜索设备假设你家里安装了智能家居,所有的设备都是通过Wifi连接自己家里的局域网(至于这些设备没有界面操作,如何连接wifi?有一个比较流行的牛逼技术,叫SmartConfig)。现在这些设备连入到局域网了,那如何通过Andr原创 2016-09-04 22:20:26 · 20766 阅读 · 16 评论 -
Android网络编程TCP、UDP(二)
先对上一遍的工具类,补充两点: 1、Client关闭异常 如果没有连接host就调用close()的话,会导致NullPointException,因为mInputStream为null。虽然socket关闭后,输入输出流也会随之关闭,但为了加快回收速度,建议把流也关闭。public void close() { if (mSocket != null) { try {原创 2016-09-04 00:23:19 · 7185 阅读 · 3 评论 -
如何在Android Studio中添加RecyclerView-v7支持包
一直知道RecyclerView可以代替ListView、GridView使用,听说功能很强大,但还没有去学习过。今天想学习,没想到还没开始便撞墙了。输入Recycler,只有这两个东西,没有提示RecyclerView,说明支持包中没有。 最后一番百度后,终于解决(真不敢想象没有网络的情况下,怎么开发、怎么解决问题)。1、打开SDK Manager,在Extras树下找到Android Supp原创 2016-04-28 01:39:33 · 96603 阅读 · 15 评论 -
自定义控件——可拖拽排序的ListView
前言最经研究了一下拖拽排序的ListView,跟酷狗里的播放列表排序一样,但因为要添加自己特有的功能,所以研究了好长时间。一开始接触的是GitHub的开源项目——DragSortListView,实现的效果和流畅度都很棒。想根据他的代码自己写一个,但代码太多了,实现的好复杂,看别人的代码你懂的了,就去尝试寻找其他办法。最后还是找到了更简单的实现方法,虽然跟开源项目比要差一点,但对我来说可以了,最重要原创 2016-05-12 01:44:35 · 17703 阅读 · 12 评论 -
Android系统Root原理初探——学习笔记
从慕课网上学习《Android系统Root原理初探》时记录的笔记。只进行了学习,还未实践过。1. 了解Root普通用户登录,命令行以$开始。从普通用户提升到root用户,使用su命令。/etc/profile是系统的环境变量配置文件,需要root用户才有权限操作。 操作系统使用的是Linux内核+文件系统(ext3/4),就是Linux系统,如Android系统。 Linux驱动:按照Linux原创 2016-05-06 02:01:11 · 1634 阅读 · 0 评论 -
setPadding()无效的原因分析
在ListView中经常使用view.setPadding(left, top, right, bottom)来实现下拉和上拉的效果(view代表headerView或footerView),主要设置top值即可。我现在在写一个自定义控件,里面就用到了这个setPadding( ),view的高度是给定的,结果就直接代码创建了一个View,通过LayouParams设置它的高度值为给定值,效果死活出原创 2016-05-17 13:31:16 · 17436 阅读 · 0 评论 -
Android问题——PopupWindow的isShowing()一直都是返回false
问题:查看是否这样的设计思路:用一个按钮,通过isShowing()来判断状态,然后展示和隐藏popup。且使能了外部触摸setBackgroundDrawable(new BitmapDrawable()); setOutsideTouchable(true)然后在按钮中获取isShowing()的状态,结果一直返回的都是false。原因分析:你触摸按钮的时候,它属于外部区域,触摸它肯定会把po原创 2016-05-20 13:17:25 · 9838 阅读 · 3 评论 -
AS中jar包和aar包的导出与导入
从Eclipse转Android Studio后,很多操作都不是很清楚,就包括jar包的使用,直到昨天出现了问题,才去找原因并解决。问题是这样的:自定义的控件打成jar包了,在其他工程中调用,在运行时出现错误,提示说在xml中的自定义控件无法填充。在xml中弹出错误,说NoClassDefFoundError,进入源码发现指向的是styleable,也就是自定义属性。毫无疑问,这就是R文件的问题了。原创 2016-06-12 22:39:07 · 26101 阅读 · 3 评论 -
Serializable的序列化与反序列化
使用Serializable序列化,只要实现Serializable接口即可。一般情况下都会显示设置静态成员变量serialVersionUID为固定值。序列化时使用ObjectOutputStream写入,反序列化时使用ObjectInputStream读出。如此简单,谁都会。但这是我碰到复杂点的情况,特作以下总结:1、Serializable可继承:父类实现了序列化,子类也会自动实现序列化Per原创 2016-07-12 03:08:09 · 5848 阅读 · 0 评论 -
XML序列化与反序列化+自定义XML注解框架XmlUtils
背景前面一篇总结了Serializable的序列化与反序列化,现在接着总结XML。主要内容:XML基本的序列化与反序列化方法、一些注意事项、以及自定义了一个XML注解框架(简洁代码,解放双手)。XML的序列化与反序列化先与Serializable进行简单的对比:Serializable存储的文件,打开后无法正常查看,安全性高。xml文件可通过文本编辑器查看与编辑,可读性高(浏览器会格式化xml文件原创 2016-07-25 03:00:29 · 6741 阅读 · 0 评论 -
C移植到Java中,byte[]与其他数据类型的转换
最近在把C代码移植到Java(Android)中,C中一般的数据都会使用byte[](unsigned char)来存储,且位操作特别频繁。我要把这些数据转换成在Java存储,或把byte转换成本语言的其他类型,掉进不少坑。这里,总结下这段时间我遇到的转换问题。一、C与Java的变量类型区别1、变量类型及所占字节数 变量类型 C中字节数 Java中字节数 char 1 2原创 2016-07-02 17:30:59 · 10366 阅读 · 0 评论 -
AS中SVN的安装、配置及常见问题的解决方法
这两天被AS中的SVN折腾了不少时间。安装和配置倒还好,就是提交的时候出现了问题,也没提示什么问题,郁闷了。经过一段时间的倒腾,终于解决了。一、安装参考服务器VisualSVN Server和客户端Tortoise SVN软件的安装说明,基本next就OK了。服务器安装完后,可创建仓库(一般创建带branches、trunk和tags的仓库): 客户端安装完后,在资源管理器中,右键菜单中会有SVN原创 2016-06-19 23:50:12 · 7885 阅读 · 0 评论 -
AS中Git与GitHub的使用入门
一直想把自己的写的开源小项目放到github中,这两天才花时间来学学git。遇到些问题,百度了很多才解决。跟SVN一样,值得写一篇总结记录下,虽然上资源很多,但作为入门,自己遇到的写出来完全不一样。一、 Git与GitHub的简单介绍Git是一个开源的分布式版本控制工具。 GitHub是一个使用Git作为版本控制的项目托管平台,它是一个网站。 详细请参考:http://www.cnblogs.原创 2016-08-10 02:17:13 · 23966 阅读 · 7 评论 -
Android网络编程TCP、UDP(一)
一、TCP与UDP简介TCP和UDP都属于TCP/IP参考模型中传输层的协议,且都是基于网际互联层IP协议。一位大神作了一个很形象的比喻:TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。(参考:http://blog原创 2016-09-01 02:21:40 · 15758 阅读 · 3 评论 -
制作右下角箭头的.9图片
.9图片介绍简单了解 .9图片在APP中用的非常多,主要是为了防止图片缩放后造成变形,确保图片不失真。 典型的就是微信的聊天界面,如对方信息长短不一,但背景使用的都是同一张图片。 如果不.9图片,前面的箭头肯定会随着信息长度变化而变化,那肯定是毁三观的。 认识.9图片 .9图片保证不失真,在最外层加了一圈区域设置功能,通过用纯黑色颜色来设置(必须是纯黑,#000000)。共四个边,每个边的原创 2016-04-27 18:13:32 · 5886 阅读 · 0 评论