自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

十个雨点的博客

Android踩坑中!

  • 博客(52)
  • 收藏
  • 关注

原创 第一款个人应用——《不做手机控》——终于上线啦!

从事Android已经大半年了,居然没有一款自己的产品,真是惭愧啊,不过经过这一个半月的艰苦奋斗,我人生中第一个个人Android应用终于诞生了!叫——不做手机控。感谢老婆大人起的好名字。这是下载连接:点击打开链接,请朋友们多提意见和建议!回想这半个月,还真不容易,每天下班继续码代码是最基本的,还要一个人兼任开发、产品、设计、测试等多项工作。其实产品、测试的工作还好说,毕竟平时接触的多,赶鸭子上架...

2015-12-24 21:23:31 9394 10

原创 戒手机瘾神器?看这篇就够了

愉快的寒假又到了,你是不是再一次下定决心要读书学习,做一个低调的学霸呢?但现实是,又一次情不自禁的掏出手机。下面介绍的这个应用,可以帮你摆脱手机依赖症,帮你戒手机。这个应用的名字就叫——「不做手机控」(以下简称「手机控」)「手机控」如何帮你戒手机呢?屏保「手机控」的原理很简单粗暴,就是在不允许使用手机的时候,弹出屏保,阻挡你继续使用手机,市面上也有其他类似的产品,比如「我要做学霸」、「远离手机」、「

2018-01-25 22:24:58 1744 8

原创 使用Glide替换Picasso经验小结

0、 背景最近的工作是做一个IM的Android端的SDK和插件。在社交软件中浏览图片是一项基本功能,我们的IM也不例外,支持图片收发,预览等基本操作。但是随着斗图时代的到来,对IM的图片处理提出了更高的要求,IM的PC端也已经开始支持发送gif图片消息,所以Android上也准备支持gif图的收发和展示。先说说IM对图片库的一些需求: 1. 因为IM中聊天的图片需要从Http的Header中校验

2017-12-20 14:37:04 625

原创 拯救熊猫眼!戒除手机瘾!不做手机控,全靠它了!

“想保护眼睛,却放不下手机? 番茄工作法,却坚持不了三分钟? 只想看看消息,却刷朋友圈刷到下课? 明明要早起,却躺在床上练成王者熊猫眼? 要看的书堆成山,却阻挡不住刷不完的头条诱惑? 下决心戒手机、戒网瘾、戒农药,却苦于没有自控力? 欲罢不能的手机控?玩手机根本停不下来?想要摆脱手机依赖症?” 上面这段话有没有引起你的共鸣?如果没有,那你可以点右上角的小叉了,因为接下来本文将介绍一款暴

2017-08-19 21:36:44 4046 3

原创 使用Kotlin如何startActivity

转载注明出处:简书-十个雨点没错,就是这么简单的一个功能,不过由于初学kotlin,所以找了很久才找到如何写,所以还是贴出来给需要的人吧,上代码:startActivity(Intent(MainActivity@this, SecondActivity::class.java))或者startActivity(Intent(this, SecondActivity::class.java))

2017-06-16 10:39:27 16434 4

原创 Activity的LaunchMode导致调用系统相册选取图片立即返回RESULT_CANCELED,data为null

转载注明出处:简书-十个雨点如题,最近在做调用系统相册选取图片的功能时,发现在一些手机上就会出现这种问题,具体的现象是使用如下代码选取图片:String IMAGE_UNSPECIFIED = "image/*";int SELECTPHOTO=10086;Intent intent=new Intent(Intent.ACTION_PICK, android.provider.MediaSto

2017-04-15 11:51:22 3094 2

原创 RecyclerView中图片显示不出来的两种种可能解决方法

转载注明出处:简书-十个雨点简单描述一下背景:有一个页面,使用recyclerView展示一个列表,列表的每个元素是由一张图片、两个textview组成,很简单的布局。加载图片使用的的volley的imageloader。此时在页面展示的时候,有可能出现有些图片无法显示的问题,而且用notifyDataSetChanged()刷新也没用,而调试会发现,其实图片bitmap是已经正确加载了,但是设到i

2017-04-15 11:48:21 6803

原创 第一次编译AOSP简单流程

本文只记录如何跑通、编译AOSP,以及我自己遇到的坑,不讨论复杂问题,因为我也不会。首先只要准备以下三样东西:中科大的AOSP镜像AOSP官方教程——准备不急不躁慢慢来的自己!!!按部就班的配置环境根据AOSP官方教程检查你的环境,如果linux版本不对的话,最省事的方法就是重装成对应的版本,不过如果不想重装也没关系,顶多就是碰到一些坑,谷歌和百度总能找到办法的….跟着AOSP官方教程——搭

2017-03-15 21:05:40 9479 1

原创 【造轮子系列】仿谷歌语音搜索动画——VoiceAnimation

转载注明出处:简书-十个雨点谷歌App的语音搜索功能估计很多人都没用过,没用过的也没必要去用它了,因为实际上就类似手机百度,360手机搜索,是一款类浏览器产品,没有太多实用价值。不过不得不说的是,它的动画做得相当精致,如果要用一个词来形容,就是——灵动。先给大家看看效果:动图无法完全展现这个动画的细微精妙之处,想仔细研究的同学可以自行下载,不过接着往下看,我们会来模拟实现这个效果的。背景首先介绍一下

2017-03-09 17:24:59 1821

原创 Android如何判断NavigationBar是否显示(获取屏幕真实的高度)

有些时候,我们需要知道当前手机上是否显示了NavigationBar,也就是屏幕底部的虚拟按键。比如截屏的时候,要获取屏幕的高度,必须包括NavigationBar的高度。试过网上的多种方法,但是对那种可以通过手势来显示/隐藏的NavigationBar没办法,最后终于找到了一个好办法,看代码:public boolean isNavigationBarShow(){ if (Build.V

2017-01-06 11:45:24 1404

原创 如何在Bitmap截取任意形状

现在许多截屏应用中都实现了任意形状截图,我一开始有些疑惑:到底是如何判断一个像素点是在曲线内部还是外部的呢,因为多边形是否包含点的判断还是比较复杂的,计算起来复杂度可不低,后来看了一些资料,发现完全不是我想的那么复杂,很简单就能实现。多简单呢,往下看。先看最终效果:以全屏截屏并裁剪出任意形状的图形为例,除了在Android上如何实现矩形区域截屏中截屏的操作以外,还需要额外实现两个部分: 1. 根据

2017-01-06 11:45:03 2452

原创 Android上如何实现矩形区域截屏

对屏幕进行截屏并裁剪有两种方式:早截图和晚截图。早截图,就是先截取全屏,再让用户对截取到的图片进行修改;与之相对的,晚截图,就是先让用户在屏幕上划好区域,再进行截图和裁剪。其实两者并没有什么太大的区别,这篇就说说怎么实现晚截图。晚截图可以分成三步: 1. 在屏幕上标出截图的矩形区域 2. 调用系统接口截屏 3. 对截图进行裁剪效果图如下:第一步、在屏幕上标识出截图区域首先确定标识截图区域所需要

2017-01-06 11:44:26 5986 1

原创 android7.0 通过代码 分享图片到朋友圈

在Android7.0中,系统对scheme为file://的uri进行了限制,所以通过这种uri来进行分享的一些接口就不能用了,比如使用代码来调用分享朋友圈的接口。 此时就得使用其他的URI scheme来代替 file://,比如MediaStore的 content://。直接上代码: private static boolean checkInstallation(Context c

2016-12-05 20:06:46 6006 1

原创 Android的supportV7中默认按钮的颜色设置

我们知道,在styles.xml文件里面可以设置主题,在主题中设置的一些颜色,将会应用到默认的AppCompat控件上,从而很简单的就可以保持整个APP在UI上的一致性。下面是一个例子:<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/c

2016-10-19 18:13:02 9315 1

原创 ValueAnimator是如何动起来的

今天看属性动画的源码,涉及到的类比较多,调用关系也比较复杂,用了一个多小时才算大致理清其中的逻辑,简单的整理出来以备日后回顾,源码是 API level 24的。初始化过程以ObjectAnimator的ofInt()为例,关键调用链为:ValueAnimator的public static ValueAnimator ofInt(int… values); PropertyValuesHolde

2016-10-08 20:41:04 532

原创 Android通过程序接听或者挂断电话

这篇文章教你如何帮助用户自动接听或者挂断来电。当然并不是我原创的代码,我只不过是把stackoverflow上的一些代码整合了一下,做个代码的二传手。

2016-09-14 21:41:49 3862 2

原创 Android沉浸式与SearchView的坑

Android开发虽然不算多难,但其中确实包含了这样那样的坑,我今天要说的这个坑可能很少人会遇到,不过万一呢。。。一开始是我想在项目的toolbar上添加谷歌原生支持的搜索功能,但是怎么弄都不对,键盘弹出以后搜索框会自动消失,如下图所示,可能比较乱,将就看看吧:经过两天的不断修改尝试,终于找到了症结所在:在styles.xml文件中设置windowTranslucentStatus=true会导致S

2016-09-04 20:42:21 1366

原创 Android中如何正确的获得所有App列表

我们经常会遇到这样的需求:列出手机中所有能打开的App。此时我们不需要列出那些无法打开的app,也就是没有Activity的。网上有一些方法,都是过滤系统app的方法,将短信、电话这些App都过滤掉了,其实只要使用下面代码就行了:private void queryFilterAppInfo() { PackageManager pm = this.getPackageManager();

2016-08-31 11:45:43 4772

原创 Android中“强制停止”和广播保活的一个小坑

一直以来,使用广播进行Android进程的保活就是一种常规的保活方法,本着用事实说话的原则,我做了一个实验: 1. 写了一个demo,用于监听来电的广播,然后选择接听和挂断电话,源码见;github,AcceptOrRejectCallDemo; 2. 运行程序,用另一个手机给测试手机打电话,发现能收到广播,完成功能; 3. 在应用程序管理器中,强制停止这个demo,然后再用另一个手机给测试手

2016-08-28 12:45:32 3195 2

原创 AndroidStudio通过ndk使用第三方动态链接库

使用AndroidStudio的experimental plugin或是传统的Android.mk,通过jni封装调用第三方动态链接库的方法有共通之处,也有不同之处。原理首先要了解gcc的参数,这里不详细讲太多了,只说几个常见的: * -D用于在编译时定义宏,-DHH等于#define HH 1,-DHH=3等于#define HH 3 * -I用于指定头文件的查找路径 * -L用于指定链接

2016-08-26 10:31:15 5353

原创 【造轮子系列】转轮选择工具——WheelView的改进

在【造轮子系列】转轮选择工具——WheelView中,我详细记录了这个自定义控件的设计思路和相关数据的计算。由于本人能力有限,当时还留下了一些不足的地方,主要包括:滑动的性能和流畅性有待提高,特别是快速滑动时的效果没有实现循环滚动的效果经过这一段时间的不断改进,现在基本上已经比较完美了,接近ios闹钟的滚轮时间选择器的效果了。下面结合代码,对比之前的版本,记录一下我做的这些改进。效果图源码Wh

2016-08-23 13:50:22 2454

原创 【造轮子系列】转轮选择工具——WheelView

实现转轮的选择功能,效果见下图:本项目是由这个项目修改而成,不过基本上除了原来的大体框架以外,内部的实现逻辑全都做了大量修改,各位看官可以对比参考,在此必须感谢原作者给我的启发。先上源码:WheelView实现一个自定义View最基本步骤有: * 设计attribute属性 * 实现构造函数,在构造函数中读取attribute属性并使用 * 重写onMeasure方法 * 重写onDraw方

2016-07-03 14:27:25 6341

原创 【造轮子系列】一个选择星期的工具——SweepSelect View

【造轮子系列】一个选择星期的工具——SweepSelect View简介首先介绍一下这个自定义View的作用,先看图: 单选模式: 多选模式: 简单来说,就是一个通过滑动的方式来进行选择的工具,这种选择方式多用于星期的选择上,当然也是可以用于其他选项的。实现明确了这个View的功能后,我们再来想想应该怎么实现呢。先看这个View需要具有一些什么样的属性:首先是待选项目;然后是字体大小和颜色

2016-06-14 21:15:50 738

翻译 如何使用array资源文件中定义的资源数组

这个题目比较绕,下面先来解释一下:array.xml文件如下: @drawable/pic1 @drawable/pic2 @drawable/pic3 @drawable/pic4一般我们在程序中这么使用:int[] picArray = getResources().getIntArray(R.array.myArray);我们期待拿到的是

2016-05-09 12:55:36 1363

原创 使用AdBlockPlus在App中过滤网页广告

说起网页广告,那真是让人又恨又爱,它们不但占用了网页的可视控件,分散用户的注意力,还有些浮动广告干扰甚至误导用户操作。但是广告又是开发者重要的收入来源之一,同样作为一名开发者,还是挺能理解的。本文主要是告诉安卓开发者们,如何在你的app中有效的过滤网页广告,大大提高用户的使用体验。产品效果可以参考猎豹手机浏览器和360手机浏览器,有的情况下甚至比这两者的广告过滤效果还要好。过滤广告

2016-04-16 13:59:05 5387 5

原创 Android热补丁的一点总结

由于项目需要,我研究热补丁的实现是从12月上旬开始的,那时候我还是个对编译、ant、hudson只闻其名,对javassist、groovy闻所未闻的孩子;而现在,我已经是一个对ant、hudson一知半解,对javassist、groovy半熟不熟的孩子了,热补丁功能也终于上线了。首先感谢以下文章给我的帮助,是QQ空间团队的分享:http://mp.weixin.qq.com/s

2016-01-25 10:28:37 2158 2

原创 2.3以后的Sharedpreference是进程不安全的!

rt,在2.3以后,普通方法创建的Sharedpreference(一下简称sp)是进程不安全的,举个栗子:一个app有两个process:一个main,一个second,两者同时运行,并对sp进行修改操作:main中写入a,second写入b。你将看到这样的结果:如果最后一个执行写入操作的是main,则sp中只有a;反之,如果最后执行的是second,则sp中只有b。

2015-12-04 13:11:05 975

原创 java.lang.UnsatisfiedLinkError,findLibrary returned null的一种可能的解决方式

今天弄NDK+JNI,编译没问题,但死活运行失败,报的错误是: E/AndroidRuntime(10679): java.lang.UnsatisfiedLinkError: Couldn't load libfilterengine from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.

2015-10-30 21:02:37 1260

原创 Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)

今天从Eclipse向Android Studio导入工程的时候出现了Android Studio com.android.dex.DexException: Multiple dex files define(重复引用包)这个错误,弄了将近3个小时,马克一下。原因是Android Studio在导入Eclipse工程的时候,会自动把整个工程的jar包归类,并自动在每个module中引用用

2015-09-09 15:40:16 479

原创 ListView和GridView的item自动改变边距!

经过我测试,发现ListView和GridView中的item,不论是正常的item还是Header或者Footer在被添加到ListView中的时候都会自动改变item的边距:所有item都会横向展宽,左右各3.5dp。导致的结果就是如下图所示:其中蓝色的表示xml中设计的item宽度,和listview的显示宽度红色的表示实际绘制到listview中的宽度,也就是会被展宽到

2015-08-18 18:45:18 827

原创 ListView 添加footView导致崩溃的问题

这个问题可能是由于先setAdapter再addFootView导致的!而一旦addFootView之后,及时removeFootView后再addFootView也不会有任何问题了。在addFootView以后,如果不remove而只设置visibility为gone,则可能导致显示一个背景颜色的item,比如:

2015-08-13 20:49:27 425

原创 IOStream的用法总结

被复杂的IOStream弄晕了,因为经常会出现层层包裹的情况,学习了一天,发现其实挺有规律的,总结一下:以输入流为例,输入流分为字节流和字符流,分别对应InputStream和Reader,而InputStreamReader是将InputStream封装成Reader的桥梁,一般会用于包装最外层的是BufferedReader,中间可能

2015-07-14 20:05:35 9495

原创 几种模拟按键的方法

模拟按下物理按键的方法:1.Runtime runtime=Runtime.getRuntime(); try {  runtime.exec("input keyevent " + KeyEvent.KEYCODE_BACK);} catch (IOException e) { e.printStackTrace(); }2.new Threa

2015-06-26 16:22:56 4810 1

原创 用gson处理json时bean和json串的对应关系

一开始以为bean和json串中的内容必须一一对应,后来实践可以不用一一对应:bean中如果少一些内容,则直接不解析这部分数据,只把bean中有的数据解析出来;json中如果少一些内容,则bean中多余的部分将被填入空值;但是需要注意的是:bean和json中的格式应该保持一致,比如json中的“1”可以解析为string也可以解析为int,但是“1a”则只能解析为stri

2015-06-26 10:03:57 2788 1

原创 getDimension和getDimensionPixelSize的区别

我在手动绘制View的时候,需要绘制一个0.68dp粗的线,由于并不是整数个dp,所以我一开始用getResources().getDimension()来获取,得到的粗细就是1.36px然后设置Paint.setStrokeWidth(1.36),这样画出来的线实际上是2px粗的(1280*720屏幕)。但是自动绘制的时候,0.68dp的线实际是占1px宽度的。后来经过研究,使用ge

2015-06-25 18:49:46 4990

原创 在onDestroy方法中做处理要小心

如题!原因是onDestroy的调用时机是不一定的,一般会在系统需要清理的时候调用。所以如果刚刚推出activity再重新进入,则可能导致onDestroy方法还来不及调用就又重新进入了,导致清理工作没有进行,从而对本次进如产生影响。因此可以在其他地方进行清理工作。

2015-06-18 15:41:44 2031

原创 OnFling和onSingleTapUp不执行的问题的一种解决方法

学习用GestureDetector来检测屏幕滑动事件的时候,一开始对onTouchEvent复写的时候写成了下面代码中(1)的样子 @Override public boolean onTouchEvent(MotionEvent event) { return new GestureDetector(new MyOnTouchListener()).onTouch

2015-03-30 10:01:32 3325

原创 Android 监听按键信息的时候会出现两次响应的解决办法

最近的项目里面要监听软键盘的Enter的按键信息,如下图,需要在上一行按Enter的时候自动切换到下一行,以此类推。但是有时候会出现点击一次,响应两次的现象,也就是按一次Enter换两行,经过半天的实践,总结如下:1.网上说有调用 OnEditorActionListener,而不是OnKeyListener 的方法,经过测试并不能解决问题,http://www.2cto.com/

2015-03-26 10:22:38 3774

转载 Android资源图片读取机制

转自:http://blog.csdn.net/yellowcath/article/details/39641445在新建一个Android项目时,在res目录下会自动生成几个drawable文件夹,drawable-ldpi,drawable-mdpi,drawable-hdpi,一直以来都对此不太清楚,图片应该放到哪个文件夹下面,有什么不同的影响?以前一直都是干脆再新建一个不带后缀的

2015-03-21 18:07:08 544

转载 Android中Context详解 ---- 你所不知道的Context

http://blog.csdn.net/qinjuning/article/details/7310620                                                                                       本文原创 ,转载必须注明出处 :http://blog.csdn.net/qinjunin

2014-12-21 10:00:11 504

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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