安卓开发
我来找茬啊
何以解忧,唯有杜康
展开
-
WebView in CoordinatorLayout with CollapsingToolbarLayout
最近研究Material Design,觉得它的各种联动效果挺赞,比如CollapsingToolbarLayout的使用,使得屏幕上下滑动时标题栏收缩与展开的效果就很棒,就做了些demo练习使用。结果就遇到了不少奇怪问题。比如这个有关WebView的问题: WebView加载javaScript脚本,结果内容显示不出来,只有给WebView设置了很大的layout_margin并且向上原创 2016-08-09 19:12:54 · 1897 阅读 · 0 评论 -
Android开发报错:GoogleApiClient.isConnected()' was expected to be of type interface but instead was ...
开发安卓软件的时候,将google play service 从7.X版本升级到 8.X版本的时候项目可能会报错:The method 'boolean com.google.android.gms.common.api.GoogleApiClient.isConnected()' was expected to be of type interface but instead was fou原创 2016-04-28 09:09:14 · 1906 阅读 · 0 评论 -
Android开发 高斯模糊的实现
高斯模糊是什么?高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果,通常用它来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。什么?看不明白?没关系,我也看不明白,维转载 2017-02-20 23:58:50 · 1403 阅读 · 0 评论 -
Android开发 ActionBar中setDisplayHomeAsUpEnabled和setHomeButtonEnabled的理解
setHomeButtonEnabled这个小于4.0版本的默认值为true的。但是在4.0及其以上是false,该方法的作用:决定左上角的图标是否可以点击。没有向左的小图标。 true 图标可以点击 false 不可以点击。actionBar.setDisplayHomeAsUpEnabled(true) // 给左上角图标的左边加上一个返回的图标 。对应ActionBar.DI转载 2017-02-24 11:10:58 · 683 阅读 · 0 评论 -
Android开发 Touch 事件的分发和消费机制
概述在做Android开发的过程中,如果想自定义一些手势操作,做一些酷炫的效果,那么必须理解Android中的touch事件是如何传递的。接下来将通过代码与图例对事件传递做一个详细的分析。看图说话android simple touch flow上面这幅图例分析了事件传递的简单情况,被分析的对象包括Activity,ViewGroup,View,以及dispat转载 2017-02-24 22:57:21 · 306 阅读 · 0 评论 -
Android开发 Handler MessageQueue Looper消息循环原理分析
Handler概述Handler在Android开发中非常重要,最常见的使用场景就是在子线程需要更新UI,用Handler来投递消息到主线程执行UI更新操作。因为Android系统的View是非线程安全的,所以需要在主线程更新UI。总的来说Handler就是用来做线程间通信,在不同线程之间传递消息。注:这篇文章所讲到的Handler是在主线程创建的,主线程在开始的时候已经创建了默认的消息循环。转载 2017-02-24 22:40:48 · 423 阅读 · 0 评论 -
Android 代码混淆注意事项
注意事项1,jni方法不可混淆,因为这个方法需要和native方法保持一致;-keepclasseswithmembernames class * { # 保持native方法不被混淆 native ;}2,反射用到的类不混淆(否则反射可能出现问题);3,AndroidMainfest中的类不混淆,所以四大组件和Application的子类和Framework层下原创 2017-04-07 19:01:04 · 904 阅读 · 0 评论 -
Android 6.0 运行时权限详解
转载自: http://www.cnblogs.com/mengdd/p/4892856.html从Android 6.0开始, 用户需要在运行时请求权限, 本文对运行时权限的申请和处理进行介绍, 并讨论了使用运行时权限时新老版本的一些处理.Android应用权限简要介绍一个Android应用默认情况下是不拥有任何权限的, 这即是说, 在默认情况下, 一个应用是没有权利去进转载 2016-06-25 10:52:14 · 811 阅读 · 0 评论 -
Android 开发报错 Comparison method violates its general contract!
在做图片排序的时候,想按照图片名称来进行排序,自定义了一个比较器,之前没有问题,最近突然闪退,查看log就发现了Comparison method violates its general contract!这样一个提示,google了一圈发现是自定义compator的compare()方法实现的问题,说是jdk 7的sort函数的实现变了,造成了这个问题,但是我根本没改过jdk啊。。。具体改变大原创 2017-04-08 19:00:04 · 1731 阅读 · 0 评论 -
Android app应用多语言切换功能实现
最近在做一个多语言切换的功能,类似于微信的语言切换,搜了下资料基本上都是以下这种: 1. 实现的效果和微信类似,在设置界面打开切换语言的界面,选择语言后重启 HomeActivity,语言切换完成,下次重新打开 App ,也是用户设置的语言。2. 实现步骤1. 添加多语言文件在不同的 value 文件夹下(例如 value 、value-en、v转载 2017-03-16 20:43:34 · 15933 阅读 · 2 评论 -
Android相机开发 延时摄影的一些实现思路
最近在做一款相机相关app,因为里面功能蛮多,所以除了基本的相机操作,其他的像慢动作、延时摄影、滤镜、直播这些都很费工夫,那么今天就来和大家探讨一下延时摄影的一些实现思路。 延时摄影,简单来讲就是将一段时间很长的视频,录制到很短的时间里,相对于慢动作来说,可以称之为快动作。看过人与自然之类节目的,想想里面的那些植物从发芽到枝繁叶茂,或者某个地方一年四季地貌变换的快速镜头就知道了。具体到手原创 2017-11-12 22:47:44 · 3151 阅读 · 5 评论 -
安卓开发 蓝牙或者tcp用byte数组传输数据时的处理
用蓝牙或者WiFi(TCP)连接各种传感器开发时经常需要处理操作各种数据,byte的数值空间为-128到+127; 所以如果传感器、开发板那边定义的是无符号int型之类数据,Java端收到的数据用bytes传输的话,要将byte转换为正确的int等数值类型,就得判断byte值的正负,value=X>0?X:256+X,或者用下面这个方法; public static int b原创 2018-01-01 00:21:13 · 2104 阅读 · 0 评论 -
Android开发 标题栏、状态栏常用操作记录
去除:this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏(软件内)this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉状态栏(系统)原创 2016-09-29 14:38:18 · 391 阅读 · 0 评论 -
Android中asset文件夹和raw文件夹区别
摘自:http://www.cnblogs.com/leizhenzi/archive/2011/10/18/2216428.htmlAndroid中asset文件夹和raw文件夹区别*res/raw和assets的相同点:1.两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。*res/raw和assets的不同点:1.res/raw中的文件会被转载 2016-08-28 10:25:03 · 445 阅读 · 0 评论 -
Android传感器开发
Android的传感器开发1.1 开发传感器应用开发传感器的步骤如下:调用Context的getSystemService(Context.SENSOR_SERVICE)方法获取SensorManager对象。调用SensorManager的getDefaultSensor(int type)方法来获取指定类型的传感器。一般在Activity的onResume()方法中调用Se转载 2016-08-28 10:42:58 · 995 阅读 · 0 评论 -
Android中so库的引用问题
作者:Caspar链接:https://zhuanlan.zhihu.com/p/21359984来源:知乎Android 应用开发中不可避免的会引入第三方的代码。如果是开源项目风险相对可控,如果引入商用的 SDK 那就要谨慎了,难免会有这样或那样的问题。比如我们今天要说的这一个。对集成过第三方 SDK 的同学,上图中的目录结构应该不陌生。正常情况下我们只需要将不同版本的 .s转载 2016-08-28 19:15:43 · 1709 阅读 · 0 评论 -
Ubuntu 16 下载、编译Nexus 6 Android6.0源码记录
前一阵将Ubuntu从14升级到了16,首先做的就是把导航栏从左侧移到了下面,呵呵,Windows用习惯了。 这里就讲一下下载、编译nexus 6的Android6.0源码过程遇到的问题。 其实官网已经讲的很详细了,英文好的首先是去 安卓源码官网 开始按左侧栏目从上往下,依次预览、建立编译环境、下载源码blabla,按步骤一步步操作即可。英文不好的建议去搜索引擎搜别人分享的原创 2016-06-02 09:26:38 · 2710 阅读 · 1 评论 -
Android Looper详解
在Android下面也有多线程的概念,在C/C++中,子线程可以是一个函数, 一般都是一个带有循环的函数,来处理某些数据,优先线程只是一个复杂的运算过程,所以可能不需要while循环,运算完成,函数结束,线程就销毁。对于那 些需要控制的线程,一般我们都是和互斥锁相互关联,从而来控制线程的进度,一般我们创建子线程,一种线程是很常见的,那就是带有消息循环的线程。消息循环是一个很有用的线程方式,转载 2016-08-23 11:23:50 · 365 阅读 · 0 评论 -
Android SQLite数据库优化
1.利用android提供的的insert,query,update,deleteAPI与execSql,rawQuery函数执行原生的插入,查询,更新,删除语句操作花费时间的对比结果 在相同的环境(adnroid4.0)和相同的机器下执行相同的动作,记录条数也一样的情况下的对比,多次验证的如下: (1)如果批量执行的记录数在1000条,则Android SqliteDatabase提原创 2016-08-24 16:56:24 · 744 阅读 · 1 评论 -
关于dp、px、sp的理解
1名词解释:PPI:Pixels Per Inch也叫像素密度,所表示的是屏幕每英寸所拥有的像素数量。PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数分辨率: 例如 480 * 800 就是说 我的屏幕横向有 480个像素点 ,纵向有 800个像素点;屏幕大小: 例如我的是4.0 英寸, 就是指 从屏幕的左上角 到 屏幕的右下角连线长度为4.0英寸(即对角原创 2016-06-25 15:52:41 · 1933 阅读 · 0 评论 -
Android开发 音频的录制(MediaRecorder)与播放(MediaPlayer)踩坑记录
在开发类似微信语音的产品功能时,语音的录制与播放分别用的是MediaRecorder和MediaPlayer,也都遇到了不少坑,特将其中的一些坑点记录一下: 1:在与ios端对接的时候,发现ios发的语音消息安卓可以播放,但是安卓发给ios的语音播放不了,经过调试发现是音频编码的问题; 修改位置如下: 将// 设置MediaRecorder的音频源为麦克风原创 2016-10-29 13:19:20 · 7501 阅读 · 1 评论 -
Android开发 设置dashGap仍然没有间隙解决方案
在对应的view属性中加上android:layerType="software"属性即可。或者在代码当中设置 view.setLayerType(View.LAYER_TYPE_SOFTWARE, null)。另外如下设置亦可,但是关闭硬件加速可能会造成卡顿:在 AndroidManifest.xml中,application标签下面加上 android:hardware原创 2016-09-03 18:55:00 · 2736 阅读 · 0 评论 -
Android开发 获取屏幕宽高及尺寸的方法
// 通过WindowManager获取 DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); System.out.println("width-display :" + dm.widthPixels);原创 2016-11-07 19:47:49 · 26727 阅读 · 1 评论 -
Android开发 创建桌面图标和widget的示例
在程序中点击某个按钮来创建、删除桌面图标,只需两步操作:首先,在程序的AndroidManifest中添加相应权限: 然后,在点击事件的实现里,写入相应创建、删除代码: Intent shortcutIntent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");原创 2016-12-06 23:47:31 · 1362 阅读 · 0 评论 -
Android开发 安卓中常用设计模式总结
安卓开发当中用到了各种各样的java设计模式,在此对其做以总结,一方面这是面试常考问题;另一方面,通过不断总结,也可以增强这方面的意识,知其然并知其所以然,方便日后灵活运用。 1,适配器模式 ListView、GridView、RecycleView等。 不同的数据提供者使用同一个适配器来向同一个客户提供服务。 2,建造者模式 AlertDial原创 2016-12-14 00:53:51 · 790 阅读 · 0 评论 -
Android开发 保证软件不被杀死的1001种方法
呵呵,标题只是吸引大家点进来而已,切勿当真。大家知道作为一个合格的国产流氓手机软件,不能后台自启、不能唤醒全家桶、不能顽强到杀不死、不能保持连接,是会被大家鄙视的。现在越来越多的大企业加入了全家桶行列,像什么百度啊、腾讯啊、阿里啊、网易啊,现在路子都挺野的,如果不装个冰箱、绿色啥的,随手打开一款软件,状态栏随时会蹭蹭蹭冒出一大堆通知消息,不仅如此,当你尝试按正常步骤退出软件、甚至清掉后台U原创 2016-12-07 15:35:37 · 5984 阅读 · 0 评论 -
Fragment中使用地图切换时会闪一下的处理方案
解决方法1:在使用到地图的Activity中的onCreate中添加以下代码:getWindow().setFormat(PixelFormat.TRANSLUCENT); 解决方法2:在Activity的 rootview 里面加入一个长宽都是0px的不可见 SurfaceView元素转载 2016-06-20 11:11:27 · 1333 阅读 · 0 评论