- 博客(75)
- 资源 (18)
- 收藏
- 关注
原创 Android相机实时自动对焦的完美实现
Android相机实时自动对焦的完美实现由于android碎片化严重,而且各大厂商极有可能去修改相关API的实现,其中遇到了不少坑,包括实时相机高斯模糊,自动对焦的兼容问题,以及一系列性能问题。换过很多搜索引擎,访问过很多网站,访问过很多网站,拜读过很多代码,没有发现对于相机实时自动对焦特别完美的实现方式。现对相机的自动对焦问题单独做一个记录。
2016-05-12 11:29:56 45051 30
原创 Android中SwipeBack右滑返回(手势返回)的实现
Android中SwipeBack右滑返回(手势返回)的实现现在有很多App支持右滑返回,比如知乎,效果比较赞。于是自己对Activity和Fragment进行了继承,派生出SwipeBackActivity和SwipeBackFragment,用于对这种效果的实现,也就是只要继承这两个类就可以了。效果如下Activity Fragment Frgament的效果实现比Activity稍微简单,因
2015-12-09 12:00:21 5373 4
原创 谷歌io开发者大会2018:强大的AI帝国
中国时间5月9日凌晨,谷歌一年一度的I/O开发者大会在旧金山山景城开幕。在两个小时的KeyNote演讲中,Google着重介绍了Google Photo、Google Assistant、Google Map、WAYMO等产品,包括发布的Android P,几乎所有产品都围绕着AI进行。## Google产品的变革 ### 强大的AI Google将AI作为公司的重点方向,几乎所有产...
2018-05-27 12:43:16 3921
原创 Gallery2的OpenGL ES图形库的移植
在阅读google的Gallery2源码之后,简直和哥伦布发现新大陆时的心情一样激动。这是一个全新的世界,大部分摈弃了android原生的view体系,所有界面的渲染都是基于OpenGL ES,而且不同页面的切换也使用自己的page类,自己去管理它们的生命周期。本文主要对OpenGL ES库的移植过程进行一些记录和计划,以及对该库进行介绍。 原生Gallery2的GLView体系介绍...
2018-03-09 18:15:07 957
原创 还不来试试kotlin,开源在线音乐播放器MVP + RxJava + Retrofit。
SweetMusicPlayer是一款基于百度音乐API的在线音乐播放器。拥有播放本地、在线音乐以及mv等功能,采用 MVP + RxJava + Retrofit 架构的项目, 使用Java和Kotlin混合开发。 项目地址:https://github.com/WellerV/SweetMusicPlayer,希望给到有帮助的同学,喜欢记得star哦。...
2018-02-27 23:15:22 1080
原创 android网络耗电优化
一,减小网络功耗应用程序的网络请求是造成电池耗尽的主要原因,因为他们打开耗电的移动数据或Wi-Fi无线电。除了发送和接收数据包所需的功率之外,这些无线电只要打开并保持清醒,就会消耗额外的功率。 每15秒一个简单的网络请求就可以使移动无线电持续不断地快速耗尽电池电量。 本课程将向您展示如何标记应用程序的源代码,根据它们的启动方式对网络请求进行分类,可视化和着色。 从那里,每个类别都可以确定您的应
2017-11-21 11:45:13 2352
原创 android电量优化措施
在开始电量优化以前,我们先总结下设备耗电的一些因素,然后各个击破。 如下图: 大概包含以下一些因素: - 屏幕亮度 - 网络相关 - 唤醒,格式模式的切换以及wakelock - 定位 - 其他传感器一,功耗分析工具功耗分析的工具多种多样,比如google官方提供的battery-history,腾讯的GT (Great Tit)。二,针对具体场景进行优化1,保持屏幕在一段时间后,
2017-11-21 11:42:52 1543 1
原创 battery-historian工具的使用
本篇文章主要介绍battery-historian工具的安装。很多教程使用go语言编译安装,但是docker更为简单方便,由于被墙的原因,我们需要用到阿里云的docker hub加速器。
2017-11-21 11:39:07 2294
翻译 SQLite查询计划器和优化(译)
以下内容为SQLite本身查询的计划器的一些优化,可以帮助开发者更好地理解SQLite,原文地址:http://www.sqlite.org/optoverview.htmlSQLite查询计划器和优化1.0 WHERE条件分析查询中的WHERE子句被分解为“条件”,其中每个条件由AND运算符与其他运算符分隔。如果条件由or连接,索引将不可用。 为了使用索引,条件必须是以下形式之一: - col
2017-10-23 19:25:12 2281 1
原创 热更新Tinker研究(十一):so文件的patch
热更新Tinker研究-so文件的patch 本文主要通过对so_meta.txt的解析,结合源码来对tinker框架对于so文件的patch过程进行讲解。
2017-04-20 14:34:47 3590
原创 热更新Tinker研究(十):Res文件的patch
热更新Tinker研究-Res文件的patch 本文主要通过对res_meta.txt文件的分析,讲解tinker框架对于res文件的patch过程。
2017-04-20 14:31:17 2448
原创 热更新Tinker研究(九):Dex文件的patch
热更新Tinker研究-Dex文件的patch 本文主要讲解dex文件的patch过程,从tinker的DexPatchFile格式分析,对doFullPatch()作为重点讲解。
2017-04-20 14:29:04 3552
原创 热更新Tinker研究(八):res和so的patch文件生成
热更新Tinker研究-res和so的patch文件生成ResDiffDecoder和BsDiffDecoder分别是负责resource和so文件的patch生成相关的,它们很多地方比较相似,这里放在一起来说明。一、ResDiffDecoderResDiffDecoder是控制resources的patch文件生成的,主要是控制增加、修改和删除的信息,这里对于大文件和小文件也有不同的区分,小文件只
2017-04-20 14:25:21 2707
原创 热更新Tinker研究(七):Dex的patch文件生成
热更新Tinker研究-Dex的patch文件生成[toc] ApkDecoder中的dexPatchDecoder负责dex的patch生成工作,dexPatchDecoder实际上是UniqueDexDiffDecoder类型。这一系列相关的类的关系如下图所示。 BaseDecoder中有三个抽象方法,onAllPatchesStart(), patch(File oldFile, Fi
2017-04-20 14:05:48 4285
原创 热更新Tinker研究(六):TinkerPatchPlugin
热更新Tinker研究-TinkerPatchPlugin 在我们运行tinkerPatchDebug或者tinkerPatchRelease任务的时候,会执行TinkerPatchPlugin的apply(),实际上编写一个gradle的task只需要继承Plugin即可。本文主要讲解插件主要构建的task的功能以及在打包流程中的作用。
2017-04-20 13:58:43 4588 6
原创 热更新Tinker研究(五):Application的隔离
热更新Tinker研究-Application的隔离由于程序默认会加载Application类,所以框架的补丁将不能对它修改了。但是实际过程中却可能需要修改Application中的某些功能。隔离Applicationtinker采用的方案是,将原来的Application类隔离起来,即其他任何类都不能再引用我们自己的Application。需要使用到Application类功能的地方采用Appli
2017-04-20 13:44:40 3178 1
原创 热更新Tinker研究(四):TinkerLoader
热更新Tinker研究-TinkerLoader 本文主要讲解tinker框架如何加载已经被打上补丁应用的过程。合成补丁后如何在启动后对应用进行更改呢,处理这个事情的主要类是TinkerLoader,对应dex、res、so文件分别是TinkerDexLoader,TinkerResourceLoader以及TinkerSoLoader。
2017-04-20 11:46:56 3717
原创 热更新Tinker研究(三):加载补丁
热更新Tinker研究-加载补丁本文主要讲解Tinker加载patch.apk的过程,主要是研究当把patch_signed_7zip.apk推送到sdcard之后,点击LOAD PATCH按钮之后的流程分析。
2017-03-22 17:41:30 9642
原创 热更新Tinker研究(二):结合源码学习Dex格式
结合tinker源码,使用010 Editor工具对dex文件结构进行分析,包含header,stringIds,typeIds等,对dex文件中使用的数据结构进行讲解。
2017-03-15 15:56:20 2595
原创 热更新Tinker研究(一):运行tinker-sample-android
热更新Tinker研究(一):运行tinker-sample-android热更新Tinker研究本文通过对于tinker框架例子工程的分析,讲解了如何使用tinker以及如果操作tinker的patch。并且通过对脚本的分析,来讲解一些配置属性的作用。
2017-03-15 09:34:38 5031 1
原创 Gallery2源码阅读图片编辑
Gallery2源码阅读图片编辑以下是从Gallery2的入口类FilterShowActivity (图片编辑功能)顺序的阅读,对看到的内容进行了一个简单的整理和记录。其中包括FilterShowActivity在创建时主要做的事情,界面的变换,历史记录的管理以及ProcessingService的功能。目前看到Gallery2的图片编辑基于renderscript实现,随后再做详细整理。
2016-09-19 22:21:30 2484 2
原创 Deepin 2015 体验版(Deepin Desktop Environment) 桌面环境 ubuntu下 安装
在/etc/apt/sources添加软件源deb http://packages.deepin.com/experimental experimental main后执行sudo apt-get dist-upgradesudo apt-get install dde-next可体验开发版dde桌面
2016-05-23 22:57:58 3091
原创 Cannot load 32-bit SWT libraries on 64-bit JVM,SDK Manager不能启动。
遇到SDK Manager不能启动,在网上找到了两种解决方法。1,将jdk替换成32位的。2,将swt替换成64位的。哎,无奈装了64位的,死活不想换成32位的。折腾了半天也没结果,比如下载了swt,然后替换sdk\tools\lib\x86_64的swt.jar,结果还是不行,依然报错。难道就这样放弃了吗?不,我们打开sdk\tools\tools下的android.ba
2015-11-02 18:34:27 4184
原创 百度音乐API抓取-Fiddler
前段时间做了一个本地音乐的播放器 github地址,想实现在线播放的功能,于是到处寻找API,很遗憾,不是歌曲不全就是质量不高。在网上发现这么一个APIMRASONG博客,有“获取榜单,搜索歌词,下载地址,专辑”信息等等接口。后来发现有些接口使用起来不是很方便,比如获取专辑信息,只能得到歌曲列表的id信息,所以自己决定用fiddler来对百度音乐安卓客户端抓包。下面是一
2015-10-08 23:16:37 3701 11
原创 Android 实时滤镜 高斯模糊
Android相机实时预览以及高斯模糊的处理,涉及到一些相机开发以及图片转码处理等内容。能够在定义控件上实时预览摄像头内容,并且做高斯模糊滤镜处理。
2015-09-11 16:18:54 7142 5
原创 高仿墨迹天气“我”页面
看到墨迹天气的“我”页面比较炫酷,处于好奇,就写了一个demo模仿一下。1,实现效果实现的效果分三个部分来说明,首先是下拉到最大高度,个人信息界面会产生一个回弹的效果,然后是滚动到顶部,个人信息界面收缩,并且产生登录按钮会重新出现,黄色的消息按钮会平移到最右边。最后是在这两种状态之间,控件会根据滚动的距离来判断变换成前面两种状态中的一种状态。 2,实现思路首先根据三种状态切割UserInfoVie
2015-09-10 20:17:57 2079
原创 Titanic (带波纹效果的TextView)源码分析
前一段时间用LinearGradient(线性渐变) 写了一个颜色变化闪动的文字控件和文字进度条http://blog.csdn.net/huweigoodboy/article/details/43088953,最近在github上看到一个开源控件Titanic,特拿来分析一下,效果如下图:一,实现原理这里需要用到BitmapShader,用一张图片为图像渲染。
2015-04-29 17:34:53 1525
原创 一个简单的滚轮选取控件
网上有很多滑动选取的控件,比如Android-wheel,github地址,本文只是记录下以前写过的类似控件的思路,不适合实际项目使用。 先来讲讲思路,我这样重复造轮子不太好,而且实现的功能也比较简陋,不过还是打算写下来,记录一下自己成长的过程。控件中准备将控件中的控件项通过onDraw()中的drawText()绘制出来,准备用一个数字values[]来保存item项的值。那么问题来了,我
2015-03-31 10:34:58 1297
原创 RangeSeekBarView 选定范围值的控件
自定义实现了一个选定范围值的控件,刻度尺为等分的100等分。模仿二手车app中筛选选定区间的控件。首先将这个控件分成四部分,位置标记,刻度,尺子,游标。
2015-03-17 12:50:42 2852
原创 含有RelativeLayout的View.measure()空指针异常
今天写了一个测量某个控件的方法,在调用measure()方法时抛出了空指针异常。具体表现是在android4.4(API19)上没问题,在android4.2.2(API17)就有这个问题了。看了下RelativeLayout的onMeasure()方法的源码,发现有这么一段注释。 // TODO: we need to find another way
2015-03-11 11:51:46 1745
原创 IReader打开书本,关闭书本动画的自定义控件
一,实现思路实现的效果:此控件主要是模仿IReader打开书本翻转以及放大特效,在看文章之前可以找本书来翻转加深理解,呵呵,开个玩笑,进入正题。打开书本:上层为cover,下层为content。cover播放放大翻转动画,content播放放大动画。几个注意点:1,动画的播放只能局限在父ViewGroup内部,放大到全屏该怎么进行?A:使用克隆体添加到WindowManager中,然后去播放动画。2,不能直接对WindowManager中的子控件播放动画,该怎么解
2015-02-09 16:09:17 2175
原创 仿QQ空间滚动ActionBar透明度变化Demo
QQ空间5.0的ActionBar会随着滚动的距离让ActionBar的透明度发生变化,效果还是非常cool,自己实现了一个小demo,基本实现了上面的所说的效果,但是其他控件的事件监听以及一系列较为复杂的控件的冲突还没考虑,暂时来总结下。1,实现思路:在最外层包裹一个自定义的FadingScrollView,监听滑动事件,然后去滚动控件,不过滚动范围只是最上面的fadingVie
2015-02-02 09:17:37 4111 6
原创 闪动的文字和文字进度条控件
以前看到过有进度条是填充文字的,好奇心作祟,便想自己写一个试试,但是还是比较粗糙,进度条末端没有水流等涌动的效果。两个控件都是继承TextView,便于设置字体大小等相关属性。1,GradientTextView 渐变颜色的文字控件主要用到LinearGradient类,用于渐变颜色,new LinearGradient(0, 0, width, height
2015-01-24 21:23:29 1999 1
原创 仿天天动态上拉播放界面控件
看到天天动听的播放界面,可以从底部划出来,被其效果惊艳到,于是想自己动手模仿。最开始想到的是用SlidingDraw,因为有几分相似,SlidingDraw有一个handle,拖着handle让content跟着移动。区别在于在我们要设计的控件handle是不动的,监听到handle的touch事件,只能让content去移动。要自定义一个控件,首先一定要清楚一下几个方法,onMe
2014-12-26 09:38:36 1753
原创 Android studio导入模块 提示已经存在的问题
在团队开发时,新加入一个Module,想导入提示已经存在,但是实际上又不会编译进去,解决方案,在setting.gradle中加入include ':模块名称'
2014-12-16 16:09:59 3329
原创 ViewGroup selector属性问题...
想实现一个底部栏,发现selector属性不起作用,特别是自定义的LinearLayout .setSelelct(true)失效了,以为是select还要特定的属性,后来看到自己的代码,才觉得这种错误犯的真是有点幼稚,特此记录下来。 void setSelelctTab(int pos){// for(int i=0;i<adapter.getCount();i
2014-12-12 15:12:30 1173
原创 LinearLayout onClick方法失效问题。。。
在自定义一个控件,用到了LinearLayout布局,发现onClick监听失效,解决办法如下。去掉xml中android:clickable属性,在代码中设置。
2014-12-11 20:12:20 2794
转载 Android Studio快捷键整理
转载地址:http://forum.android-studio.org/forum.php?mod=viewthread&tid=39&extra=page%3D1Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如
2014-12-09 12:25:52 832
原创 Jsoup入门-java
1,解析一个本地网页。File input = new File("/tmp/input.html");Document doc = Jsoup.parse(input, "UTF-8", "http://example.com/");Elements links = doc.select("a[href]"); // a with hrefElements pngs = doc.se
2014-12-02 12:59:50 857
Intellij Idea插件开发helloworld
2016-05-23
仿网易云音乐 Android 客户端底部的播放栏
2015-12-10
Android中SwipeBack右滑返回(手势返回)的实现
2015-12-08
SWT64位( Cannot load 32-bit SWT libraries on 64-bit JVM)
2015-11-02
Android 实时滤镜 高斯模糊
2015-09-11
IReader打开书本,关闭书本动画的自定义控件(支持到2.2)
2015-02-11
IReader打开书本,关闭书本动画的自定义控件
2015-02-09
仿天天动态上拉出现播放界面(修改Content界面不能touch的错误)
2015-01-18
仿天天动态上拉播放界面控件
2015-01-17
仿天天动听上拉控件【自定义控件】
2015-01-17
java局域网聊天室(RSA算法加密)
2014-07-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人