Android
文章平均质量分 57
Shawon
什么都懂一点,但是不精
展开
-
解决Unable to execute dex: Multiple dex files define
使用ADT的时候有几种原因会造成这种错误,非常恶心先clean refresh,删除bin,gen之后再进行以下尝试1.单个项目引用了重复的jar包这种情况的话,只需要把重读的jar包删除就行了,不过一般不会有人犯这么明显的错误2.依赖项引用了不同版本的support包一般来说用某个项目的support包覆盖其他项目的jar包就可以了3.新版本的ADT打开旧原创 2014-03-30 15:54:12 · 1027 阅读 · 0 评论 -
滑动返回库SwipeBackLayout解析
这个库本身并没有很难, 但是它在交互方面的思想是超前的, 虽然现在我们对滑动返回已经习惯了, 但是在当时还是很新鲜的交互方式.如果要我实现滑动返回, 我第一个看的一定是DrawerLayout的实现, 它用了ViewDragHelper.接下来我们结合源码解析SwipeBackLayout是如何做到让我们能使用滑动返回的手势的.SwipeBackActivity用过的都知道, 想让一个activit原创 2015-03-22 12:16:04 · 5461 阅读 · 1 评论 -
viewpager不显示内容
最近做一款音乐播放器, 需要在fragment中用viewpager展示内容, 恰好遇到了这个问题, viewpager不显示内容, 因为是配合slidingtablayout使用的, 所以能很明显的看到, 确实可以滑动viewpager, 但是就好像上面有胶水一样.后来发现是xml中用了相同的id, 也就是说, 有两个xml中用到了viewpager, 但是这俩viewpager的id相同.虽然理原创 2015-06-19 16:44:01 · 4160 阅读 · 1 评论 -
解决魅族机器adb找不到设备
魅族近期的几款机型都有这个问题, 比如MX4, 魅蓝. 开启了usb调试模式, 但是执行adb devices找不到设备. 解决办法: 在C:\Users\<用户名>\.android\adb_usb.ini中添加一行0x2a45然后在cmd中执行adb kill-serveradb devices就可以看到设备了.原创 2015-05-22 14:43:51 · 6257 阅读 · 1 评论 -
TransitionDrawable使用不当导致内存泄露
最近要做类似网易云音乐背景高斯模糊的效果, 同时也想让背景变化时不要那么生硬, 就是下面这个效果Google一番后决定用TransitionDrawable, 由于是配合UniversalImageLoader使用, 所以只需要实现一个BitmapDisplayer作为UIL的配置项就行了.最初的代码是这样写的private static class DrawableFadeDisplayer im原创 2015-07-12 00:42:24 · 3421 阅读 · 4 评论 -
Android沉浸式状态栏攻略
前言这里不讨论[沉浸式]这个词用得好不好, 大家听得懂就行. 这篇文章主要是我在实际项目中的一些经验, 整理出来和大家分享, 欢迎探讨. 由于实习一直是996, 没时间做总结, 今天突然觉得这样的工作让我都忘了生活了, 是时候做个了断了. 写这篇文章的时候已经是23:44, 来不及贴一些demo, 但是这里的代码都是曾经的项目中摘出来的, 是可以运行的, 但我现在没有真的执行一遍. 注意所有的代码都原创 2015-08-13 01:22:27 · 3113 阅读 · 2 评论 -
为什么不推荐用UniversalImageLoader加载res/drawable
前言UniversalImageLoader是一个应用广泛的库, 使用简单方便, 编译也方便, 很多大公司都是用的这个库, 最近遇到了一个奇怪的bug, 踩中了UIL的一个坑, 虽然作者有在wiki上提醒我们, 但因为语焉不详, 所以直到我找到bug的出现原因才想明白那句话是什么意思.一个奇怪的bug项目里面有一个自绘控件, 是一个下载按钮, 点击之后可以显示当前下载进度, 最近我们发现在一台2.3原创 2015-08-03 00:35:38 · 3382 阅读 · 4 评论 -
QQ音乐/酷狗音乐锁屏控制实现原理
我实现的效果混乱的锁屏控制Android自4.0版本, 也就是API level 14开始, 加入了锁屏控制的功能, 相关的类是RemoteControlClient, 这个类在API level 21中被标记为deprecated, 被新的类MediaSession所替代. 我们的音乐App中最开始使用的是原生锁屏控制API, 说实话这个API不好用, 遇到了一些小坑, 最要命的是不同品牌的手机,原创 2015-08-31 00:27:46 · 5162 阅读 · 6 评论 -
BroadcastReceiver生命周期探讨
前言之前做线控耳机连点两下切下一首歌的需求时, 曾经尝试在BroadcastReceiver中用一个成员变量保存最后一次按下的时间, 但后来发现这个值一直是初始值, 对它赋值后, 再次收到Intent时发现它的值又变成初始值了. 后来看到一些问题, 问BroadcastReceiver的生命周期, 按理说它就一个onReceive能有什么生命周期, 其实这里问的生命周期和我们平时说的Activit原创 2015-09-10 14:10:56 · 6628 阅读 · 0 评论 -
monkeyrunner截图限时免费阅读#2:多线程保存
这是monkeyrunner截图限时免费阅读#1的后作. 之前的脚本中将所有的东西都放在主线程里面执行, 实际上, 保存MonkeyImage到磁盘的过程是IO相当大的, 将这类操作放入单独的线程进行处理能大大提高脚本运行的效率. 我们创建一个线程, 指定一个方法和要传入的参数, 就可以让这个方法在线程中执行, 线程需要是非守护线程, 不过这个是默认的.from com.android.monk原创 2015-09-08 00:46:41 · 1031 阅读 · 0 评论 -
monkeyrunner截图限时免费阅读#1
最近有个读书的app搞限时免费阅读, 有几本书我想看, 但是又没有时间, 以前想过更改系统时间来延长阅读时间, 大概是同样有人这么干, 所以现在的限时阅读都是要联网验证一次才能看, 其实这种东西让懂前端的人写几个js就能把人家一整本书的文字全部抠下来永久免费看.如果说是Android端, 比较好的思路是反编译代码再移除一些判断逻辑, 不过既然我能想到, 别人估计也防御了. 一个笨方法就是一页一页的截原创 2015-07-13 00:38:32 · 913 阅读 · 0 评论 -
Android无需权限显示悬浮窗, 兼谈逆向分析app
本文先在简书上发布, 获得许多反馈, 所以在CSDN也发一下, 与大家分享前言最近UC浏览器中文版出了一个快速搜索的功能, 在使用其他app的时候, 如果复制了一些内容, 屏幕顶部会弹一个窗口, 提示一些操作, 点击后跳转到UC, 显示这个悬浮窗不需要申请android.permission.SYSTEM_ALERT_WINDOW权限.如下图, 截图是在使用Chrome时截的, 但是屏幕顶部却有U原创 2015-10-17 12:35:24 · 1710 阅读 · 0 评论 -
最近开发中的一些坑#1
牢骚最近回学校, 听说阿里好多实习生都被拒了, 不过大概都被捡漏了, UC这方面还没动静, 不知道是打算把我当临时工使还是怎么, 有点烦躁, 还是得加强自己的能力才行. 最近半年一直在做音乐播放器项目, 开发期间遇到了许多奇怪的问题, 有些我单独写了文章, 有些没那个必要, 这里总结一下.坑下载进度item无法长按上面是一个比较常见的下载item, 开发中我们发现经常出现不能对其进行长按操作的情况原创 2015-09-08 17:45:28 · 1080 阅读 · 0 评论 -
android简单流畅的下拉刷新pulltorefresh实现过程
前言我很早之前就使用过pulltorefresh的开源项目, 唯一的感觉就是卡. 最近在做graph api的demo, 想顺便实现一个pulltorefresh, 所以从网上找了一些实现来看, 不满意的是他们都非常的卡, 即便是在小米4上面也有明显的掉帧, 但是我又发现另外一些应用的下拉刷新做的非常流畅, 没有丝毫卡顿, 研究了一下这些应用, 他们的pulltorefresh控件远没有网上的其他实原创 2015-03-21 22:43:21 · 2107 阅读 · 0 评论 -
解决eclipse Blocked : the user operation is waiting
出现这种情况的时候整个adb都跪了, eclipse一run就会跪, 而且还容易停止响应. 一般来讲是其他应用占用了5037端口, 这个端口是adb默认的端口, 如果adb的端口被占用, eclipse就会在run的时候被block, 因为这个功能是需要adb的. 在中国, 一般遇到这种情况, 肯定是装了类似金山毒霸这种东西, 这些软件往往会带有手机助手, 这些手机助手其实就是自带了类似adb的原创 2015-03-06 23:04:52 · 11214 阅读 · 0 评论 -
本地Service的onBind方法使用
onBind方法在Android中写Service时总有一个onBind方法, 默认情况下返回null, 在最新的Android Studio中是抛出一个异常. 之所以有这个方法, 是因为在Activity中启动Service之后, 他俩就没有联系了, 这个方法可以让我们给Service发消息, 让其执行相关的操作.写作原因最近看书看到了Service部分, 里面恰好讲到了onBind. 我突然想原创 2015-02-16 20:45:36 · 20545 阅读 · 4 评论 -
ADT升级后工程无法编译,无法找到依赖包的解决方案
由于Android 4.3的工程目录结构发生变化,ADT大概在升级到v22的版本时会出现大量工程无法编译的情况,错误基本上都莫名其妙。可以按如下方法解决。【右键】工程,【Java Build Path】,确保【Android Private Libraries】被勾选,删除工程目录里的【bin】文件夹,然后会自动重新生成,这个时候如果工程里有找不到包的情况,可能需要重新设置Java Bui原创 2014-02-03 18:44:47 · 1615 阅读 · 0 评论 -
解决Could not execute method of the activity
Android编程里面很多问题其实都不算大问题,很多错误也是小错误,比如这次要说的LogCat信息:java.lang.IllegalStateException: Could not execute method of the activityCaused by: java.lang.reflect.InvocationTargetExceptionCaused by:原创 2014-02-06 22:18:30 · 30566 阅读 · 8 评论 -
解决<dl-ssl.google.com> != <www.google.com>
使用ADT开发的同学,一般情况下SDK Manager能正常工作,遇到挡中痒开大会的时候就无法工作,所以用SDK Manager下东西还是开着代理比较好今天开着代理结果报错Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-8.xml, reason: SSL hostname in cer原创 2014-03-24 15:18:37 · 3202 阅读 · 0 评论 -
解决ADT不显示javadoc An exception occurred while getting the javadoc
这几天发现ADT在网速特别差的情况下,鼠标悬停不会显示javadoc,而自己写的注释则没有问题.在网络畅通的时候又会显示javadoc.所以我猜测ADT会在本地查找文档失败时候尝试联网查找.一般来说,如果你之前鼠标悬停会显示javadoc,最近突然不显示了,很可能是你没有下载android的文档.我们下载ADT会自带最新的android开发平台,但是注意有可能没有附带android原创 2014-03-24 15:35:33 · 3564 阅读 · 0 评论 -
关于No Launcher activity found!
一般来在console里面看到这个错误,是manifest.xml当中缺少默认的启动页面,也就是相面原创 2014-08-04 11:30:16 · 1767 阅读 · 0 评论 -
Android NoClassDefFoundError解决办法
能通过编译,运行时报NoClassDefFoundError可能是因为为了attach source,把jarjiadao原创 2014-07-31 15:14:35 · 1803 阅读 · 0 评论 -
Android根据包名启动其他app
1原创 2014-09-28 16:18:25 · 2546 阅读 · 0 评论 -
android 2.x上Dialog特定情况导致无法dismiss的bug
最近发现某种情况下,在android 2.x上的Dialog对话框无法被dismiss,只要弹出来界面就卡死,强行使用eclipse重新run的话会导致android设备黑屏无响应,如果是模拟器,则直接崩溃,看到启动画面.而且这个还不是ANR错误.原创 2014-10-28 10:26:49 · 2122 阅读 · 0 评论 -
将odex转为jar
最近实习要了解一下部分手机自带浏览器的搜索引擎是怎么配置在手机里的,原创 2014-11-07 14:58:11 · 3466 阅读 · 0 评论 -
adb无法识别设备的解决办法
保证Android设备开启了USB调试再往下看.首先要确保电脑安装了驱动,也就是通过USB连接电脑后,电脑自动安装的驱动,必须要保证驱动安装了,否则之后的步骤没有意义.Android设备为了防止未经允许的电脑使用USB调试设备,使用未知主机进行USB调试前需要用户在设备上确认.问题在于确认对话框的触发时机,我不知道什么条件下会触发,如果电脑能识别手机,但是adb找不到,肯定是因为没有授原创 2014-12-15 22:11:45 · 10724 阅读 · 0 评论 -
Android自定义视图与自定义属性
这是Android UI Fundamentals里的内容创建自定义视图创建自定义UI组件首先要继承一个视图类. 首先创建一个简单的自定义视图, 展示一条十字线. 需要做的第一件事是创建一个继承自View的CrossView类. public CrossView(Context context, AttributeSet attrs) { super(context,原创 2015-02-11 00:01:54 · 2202 阅读 · 2 评论 -
调用graph api上传图片到facebook
前言最近实习的任务是做个类似facebook第三方客户端, 要求用graph api. 调用graph api就是普通的http请求, 但是facebook在这方面挖了不少坑, 特别恶心. 写篇文章记录一下, 顺便介绍一下思路和方法, 有好几个方法, 有的成功了, 有的失败了, 会具体分析, 最后有一个最佳的方法.图片上传sdk文档的错误查询facebook的graph api文档可以知道如果使用s原创 2015-03-09 23:35:42 · 3631 阅读 · 0 评论 -
Android回弹效果新思考与更加易用的实现
前言最近app需要在首页上做一个类似iOS的回弹效果, 我们的首页是一个ExpandableListView, 如果要做到类似iOS的回弹效果, 最先想到的思路就是使用额外添加的Header和Footer配合改写事件分发机制实现. 众所周知, 这种做法非常的不通用, 下次一个页面用ListView, 至少需要把代码复制一遍, 如果是ScrollView, 则要重写一部分逻辑. 如果是LinearLa原创 2015-10-03 15:38:00 · 2180 阅读 · 0 评论