Android
zander_2016
这个作者很懒,什么都没留下…
展开
-
Android中图片压缩方案
图片占用内存大小计算:宽*高*单位像素占字节数(RGB_8888占4,RGB_565占2);质量压缩,只会改变图片文件体积大小,并不会改变图片内存大小。 quality(0-100)bitmap.compress(Bitmap.Compress.JPEG, quality, outStream);尺寸压缩(像素压缩),缩放图片像素来改变内存占用大小方法一:ratio控制缩放比Rect rect =...原创 2018-02-27 14:35:39 · 264 阅读 · 0 评论 -
关于Activity切换动画(overridePendingTransition)的黑色背景问题
前阵子遇到一个 Bug。一个 activity 的启动动画需要自定义为从屏幕底部升起。当时是这样写的:12startActivity(newIntent(this, SettingActivity_.class));overridePendingTransition(R.anim.slide_in_from_bottom, 0);转载 2018-02-02 15:25:42 · 2087 阅读 · 0 评论 -
当RecyclerView遇到Inconsistency detected崩溃时
近来项目里,RecyclerView更新数据偶尔出现crash,错误日志如下:java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{2064e5c6 position=2 id=-1, oldPos=2, pLpos:-1 scrap转载 2018-01-09 14:28:02 · 222 阅读 · 0 评论 -
Glide图片被拉伸解决方法
在使用Glide过程中会出现图片被拉伸的情况,经查开始使用了place holde的缘故,有3种简单方法:如果使用了PlaceHolder,因为animation的加载缘故,第一次显示时,显示的图片就会根据placeHolder图片的尺寸去显示,再次刷新就按照图片尺寸正常显示了。1、取消使用place holde:Glide.with(context).load(resId).转载 2018-02-01 14:11:36 · 915 阅读 · 0 评论 -
全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现
目录状体栏颜色设置原理与导航栏颜色设置原理fitSystemWindow全屏及WindowInsets消费原理fitSystemWindow与padding不同层级的消费Theme中window属性配置影响SystemUi及状体栏添加原理前言状态栏与导航栏属于SystemUi的管理范畴,虽然界面的UI会受到SystemUi的影响,但是,APP并没有直接绘制SystemUI的权限与转载 2018-01-25 12:16:30 · 2361 阅读 · 0 评论 -
管理System windows(status bar和navigation bar)
概述通常来说,System bars(包含status bar和navigation bar,如下图所示, 1代表status bar,2代表navigation bar)会和你的应用同时显示在屏幕上。应用为了可以沉浸式的显示内容,例如播放电影和图片的效果,可以通过暂时淡化System bars图标来实现减少分散用户注意力的体验,或者通过暂时隐藏System bars来实现完全沉浸式的的体验。转载 2018-01-25 12:15:52 · 370 阅读 · 0 评论 -
自定义 GirdItemDecoration,最后一列Item大小错误
ItemDecoration 我相信只要使用过RecyclerView的同学肯定都比较熟悉了,我们在使用 RecyclerView 的时候一般都是用这个来画分隔线的,不得不说十分的好用。但是在最近发现在使用自定义的ItemDecoration上遇到了一些细节上的问题,我这里自定义了一个GridDividerItemDecoration ,用于网格布局的分隔,大概效果如下图所示:转载 2018-02-01 09:52:48 · 1060 阅读 · 0 评论 -
Android ValueAnimator时长错乱或者不起作用的解决方法以及问题分析
今天在低端机上面测试,发现里面的属性动画竟然无法正常播放, 一下子就从起点跳到终点。一番调试无果后,就感觉是手机本身问题, 于是就想看看其他应用的属性动画在这台手机上是否也这样:记得之开布局边界时,看到 网易云音乐客户端 的音乐播放界面中的光盘旋转效果是属性动画,于是打开应用后,随便播放一首歌,发现光盘果然是不转了,这时忽然想到 设置-开发者选项中有几个动画时长缩放的选项,打开一看,原来是转载 2018-01-24 17:07:56 · 1814 阅读 · 1 评论 -
Android tips(一)-->Android统一显示¥符号
新版本一个需求在用户界面上需要显示中文金额符号“¥”,结果这个字符在有的Android手机上显示一个横杠,在有的手机上显示两个横杠,这是因为不同的android手机自带的系统字体是不一致的,因此这个金额符号显示的可能也不一致,这种需求有几种方式:(1)不管他(就是直接根据系统自带的字体来显示是一个横杠的就显示一个横杠,是两个横杠的就显示两个横杠,问题不是很大,前提是你的产品经理比较好说话。转载 2018-01-31 16:33:50 · 791 阅读 · 0 评论 -
android高仿微信表情输入与键盘输入(详细实现分析)
转载请注明出处(请尊重原创!谢谢~): http://blog.csdn.net/javazejian/article/details/52126391出自【zejian的博客】 表情与键盘的切换输入大部分IM都会需要到,之前自己实现了一个,还是存在些缺陷,比如说键盘与表情切换时出现跳闪问题,这个困扰了我些时间,不过所幸在Github(其代码整体结构很不错)并且在论坛上找些解决思转载 2018-01-31 15:41:01 · 838 阅读 · 0 评论 -
libxxx.so- text relocations问题的终极解决方案
问题表现形式错误或警告日志当targetSdkVersion>=23且使用debug签名时,在6.0+的Android设备上运行App会输出以下错误Log:E/linker: /data/app/packagename/lib/arm/libxxx.so: has text relocations W/System.err: java.lang.Unsatisf转载 2018-01-31 15:40:01 · 607 阅读 · 0 评论 -
Android 屏幕各尺寸的获取
在开发中我们会遇到各种需要获得屏幕参数的场景,当中也有不少坑,所以现在就记录一下这些参数的获取方式。以免再入坑。物理屏幕宽高一、底部没有虚拟按键这里获取到的宽高,就是你眼睛能看到的,屏幕亮着的地方的宽高。 /** * 获取屏幕的宽 * * @param context * @return */ public static i转载 2018-01-31 15:33:14 · 259 阅读 · 0 评论 -
完美解决EditText和ScrollView的滚动冲突(上)
在网上搜了一下EditText和ScrollView的滚动冲突,发现几乎所有的解决方案都是触摸EditText的时候就将事件交由EditText处理,否则才将事件交由ScrollView处理。这样确实初步解决了两者之间的滚动冲突,但并不是最好的解决方案。比如,EditText本来可以显示6行文本,但是目前只显示了5行文本,此时我们在EditText区域进行滑动并期望整个页面能够滚动,但由于我们将事转载 2018-01-26 15:22:31 · 799 阅读 · 0 评论 -
Android中使用OrmLite(二):复杂条件查询
在数据库中经常会使用到复杂的条件查询,来完成业务,下面学习下如何使用OrmLite进行复杂条件查询。在默认情况下,Android只打印info级别的日志信息。在ormlite中提供了AndroidLog类来设置adb log的级别。为了更方便的查看OrmLite日志,查看增删改查的sql语句,我们可以在项目启动的过程中在adb控制台输入:adb shell setprop log.tag.ORML转载 2018-01-19 11:06:10 · 597 阅读 · 0 评论 -
关于ShareSdk的一些问题
新浪微博分享,报如下错误,是因为授权缓存的问题,可以清理一下新浪客户端的缓存,然后再次分享。{ "status": 403, "error": "{\"error\":\"invalid_access_token\",\"error_code\":21332,\"request\":\"\/2\/statuses\/upload_url_text.json\"}"}可以参考官方文档:ht原创 2018-02-07 11:17:02 · 369 阅读 · 0 评论 -
Android 属性动画和Animation的详解
两篇文章,介绍的很清楚。http://blog.csdn.net/freezingxu/article/details/70919263https://www.jianshu.com/p/2412d00a0ce4原创 2018-02-26 16:16:47 · 153 阅读 · 0 评论 -
Android PackageManager 用法
PackageManger的主要职责是管理应用程序包,通过它可以获取应用程序信息。AnroidManifest.xml文件节点说明:一 、相关类介绍1. PackageItemInfo类AndroidManifest.xml文件中所有节点的基类,并不直接使用,而是由子类继承然后调用相应方法。常用字段:[java] view plain copyint icon 资源图片在R...转载 2018-02-26 16:14:33 · 568 阅读 · 0 评论 -
Android 带你彻底理解 Window 和 WindowManager
有时候我们需要在桌面上显示一个类似悬浮窗的东西,这种效果就需要用 Window 来实现,Window 是一个抽象类,表示一个窗口,它的具体实现类是 PhoneWindow,实现位于 WindowManagerService 中。相信看到 WindowManagerService 你会有点眼熟,刚接触 Android 时几乎所有人都看到过这样一张图:WindowManagerServiceWindo...转载 2018-02-26 16:13:21 · 160 阅读 · 0 评论 -
源码分析之ServiceManager类分析
首先看到ServiceManager可能会想到C++世界的ServiceManager,但是我要说明的这是Java世界的ServiceManager.java类。首先我们看它的源码//framworks/base/core/java/android/os/ServiceManager.javapublic final class ServiceManager { private stat...转载 2018-02-26 16:12:20 · 263 阅读 · 0 评论 -
Android绘制一个三角形并且可动态改变颜色
方法一:这种方法的三角形角度没法控制,因为其实是矩形旋转。 <rotate android:fromDegrees="45" android:pivotX="135%" android:pivotY="15%"> <siz原创 2018-02-06 12:02:19 · 7408 阅读 · 1 评论 -
JNIEnv的使用在C和C++中的区别
对于JNIEnv *env来说,在C中调用:(*env)->NewStringUTF(env, "Hello from JNI!");而在C++中如果按照上述调用则会发生'base operand of '->' has non-pointer type '_JNIEnv''错误,需要如下调用:env->NewStringUTF("Hello from JNI!");原创 2018-02-04 14:10:16 · 299 阅读 · 0 评论 -
android 录制视频及调取本地视频
这是今天要实现的功能我是使用的ActionSheetDialog,可自行百度在按钮里面添加showVideoDialog();方法,弹出视频选择对话框private void showVideoDialog() { final String[] stringItems = {"录制视频", "本地视频",}; final ActionSheetDialog sheetDialog转载 2018-01-19 11:10:18 · 1436 阅读 · 0 评论 -
Android给布局、控件加阴影效果
增加阴影效果,让控件或者布局看起来有立体的效果,总的来说有两种解决方案。1,直接使用属性: android:elevation="4dp"这样一句代码,就实现了效果,elevation表示海拔,就是布局的z轴的高度,调整高度,可以选择阴影的轻重。<TextView android:layout_width="0dp" android转载 2018-01-19 11:09:40 · 2673 阅读 · 0 评论 -
在Android中实现阴影效果
在Android L推出后,Google提出了全新的设计语言:材质设计。其中很重要的一点就是阴影效果的使用,你可以为每一个View设置一个elevation值,相当于除了x、y之外的z值,z值决定了阴影的大小,z值越大表示阴影越大。z值包含两个成分:elevation和translation。elevation是一个静态的成分,translation使用了动画:Z = elevation + tr转载 2018-01-19 11:09:14 · 656 阅读 · 0 评论 -
Android中使用OrmLite(一):表创建及增删改查
OrmLite是一个轻量级的ORM框架,面向JAVA语言。也是时下流行的Android的ORM框架之一。在Android中使用Sqlite数据,如果又不想写SQL,OrmLite或许是个不错的选择。使用OrmLite,首先要在gradle配置依赖 compile 'com.j256.ormlite:ormlite-android:4.48'也可以去ormlite官网下载查看文档 http://or转载 2018-01-19 11:07:04 · 1283 阅读 · 0 评论 -
怎样获取到Android控件的高度
问题怎样获取一个控件的长和高。相信非常多朋友第一眼看见这个问题都会认为非常easy,直接在onCreate里面调用getWidth、getMeasuredWidth不就能够获得了吗,可是。事实上是并没有简单的,不信的话,你能够去试一下,在onCreate里面,你是无法获得长宽值的,始终为0。原因这是为什么呢,事实上熟悉view绘制流程的朋友应该一眼就看出来了。在onCreate中。我们转载 2018-01-31 15:32:39 · 182 阅读 · 0 评论 -
Android上的内存泄漏问题
一、什么是内存泄漏?无用的对象没有被及时释放引用,导致GC无法回收,就有可能出现内存泄漏。二、内存泄漏带来的危害是什么?内存泄漏会增加内存占用和OOM几率。三、哪些代码的写法会导致内存泄漏?常见五种导致 APP 内存泄漏的地方静态 Activity 泄漏 activity 最简单的方法就是在 activity 类中转载 2018-01-24 10:04:39 · 169 阅读 · 0 评论 -
Android Design库的CoordinatorLayout
coordinator [kəʊ'ɔ:dɪneɪtə] n. 协调者;[自] 协调器;同等的人或物根据单词的意思,它就是一个协调器,协调它的直接子View的相互作用,用什么协调呢,就是Behavior。CoordinatorLayoutAppBarLayoutCollapsingToolbarLayoutTabLayoutNestedS原创 2017-02-10 18:26:06 · 521 阅读 · 0 评论 -
Android框架 MVC,MVP和MVVM
MVP 就是用P来隔离M、V层,但是P层稍显复杂,需要根据具体项目封装。这篇文章讲的挺详细 http://blog.csdn.net/song_qingwei/article/details/52230946原创 2017-02-10 18:02:25 · 498 阅读 · 0 评论 -
Android性能优化典范
2015年伊始,Google发布了关于Android性能优化典范的专题,一共16个短视频,每个3-5分钟,帮助开发者创建更快更优秀的Android App。课程专题不仅仅介绍了Android系统中有关性能问题的底层工作原理,同时也介绍了如何通过工具来找出性能问题以及提升性能的建议。主要从三个方面展开,Android的渲染机制,内存与GC,电量优化。下面是对这些问题和建议的总结梳理。转载 2017-02-28 17:59:18 · 417 阅读 · 0 评论 -
Android应用开发性能优化完全分析
转自http://blog.csdn.net/yanbober/article/details/483942011 背景其实有点不想写这篇文章的,但是又想写,有些矛盾。不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结、我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只给出啥啥啥不能用,啥啥啥该咋用等,却很少有较为系统的进行真正性能案例分析的转载 2017-02-28 17:57:43 · 592 阅读 · 0 评论 -
android app性能优化大汇总(内存性能优化)
转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前:本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总、挑选、简化后整理而成。所以我将本文定义为一个工具类的文章,如果你在Android开发中遇到关于内存问题,或者马上要参加面试,或转载 2017-02-28 16:52:14 · 1037 阅读 · 0 评论 -
AndFix热修复 —— 实战与源码解析
当你的应用发布后第二天却发现一个重要的bug要修复,头疼的同时你可能想着赶紧修复重新打个包发布出去,让用户收到自动更新重新下载。但是万事皆有可能,万一隔一天又发现一个急需修复的bug呢?难道再次发布打扰用户一次?这个时候就是热修复技术该登场的时候了,它可以让你在无需发布新版本的前提下修复小范围的问题。最近研究了下几个热修复的开源框架,其中Nuwa等框架的原理是修改了gradle的编译task流转载 2017-01-18 17:44:07 · 768 阅读 · 0 评论 -
FFmpeg常用基本命令
1.分离视频音频流ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流ffmpeg -i input_file -acodec copy -vn output_file_audio //分离音频流2.视频解复用ffmpeg –i test.mp4 –vcodec copy –an –f m4v转载 2017-01-18 15:45:24 · 848 阅读 · 0 评论 -
Android luancher消息提醒-ShortcutBadger
参考开源项目ShortcutBadger1. Add mavenCentral to your build script. repositories { mavenCentral() }2. Add dependencies for ShortcutBadger, it's available from maven now. depen原创 2017-01-09 10:40:26 · 2648 阅读 · 0 评论 -
Proguard拆分-方便管理
Proguard最近开始做新项目,需要做代码混淆。就直接从之前的项目中将proguard-rules.pro文件拷贝过来,然后在gradle中配置:buildTypes { release { minifyEnabled true zipAlignEnabled true proguardFiles getDefaultProguar转载 2017-01-09 10:29:34 · 556 阅读 · 0 评论 -
使用Ant批量打包Android应用完全指南
本文章由Socks完成,博客地址:http://blog.csdn.net/zhaokaiqiang1992 转载请说明!折腾了一下午,百度了一下午,终于实现了使用Ant对Android应用的批量打包,也算是了却了我的一桩心事。虽然网上的这部分教程也有,但是感觉写的不是详细。更为重要的是,各种方法之间的差异比较大,对于新手来说,各种方法之间的选择是极为痛苦的,一个方法一个方转载 2016-12-30 12:04:40 · 256 阅读 · 0 评论 -
Glide源码分析
看了一些Glide源码分析的文章,发觉里面的部分代码实现已经发生变化,而对一些要点也没有深入分析,于是姑且自己总结一下。※基于Glide 3.7.0。Glide的简单使用例子:// For a simple view:@Override public void onCreate(Bundle savedInstanceState) { ... ImageView imageV转载 2016-12-30 11:18:47 · 853 阅读 · 0 评论 -
Android:学习AIDL,这一篇文章就够了
http://www.open-open.com/lib/view/open1469493649028.html转载 2017-02-27 01:46:29 · 708 阅读 · 0 评论 -
Dagger2 最清晰的使用教程
为什么网上这么多dagger2教程,我还写了这篇文章。找了很多Dagger2相关的博客,我看的脑浆炸裂……Dagger2给我们带来了什么,大多数博文也没有说明手动写写,加深印象,骗骗粉丝 (手动滑稽)部分Dagger2的运作机制是我个人的臆测,比如Dagger2编译入口,不过应该八九不离十吧,测试了挺多次的,没有@Component的话是不会编译的=。=一、Dagger2使用Q&A转载 2017-03-07 13:27:32 · 593 阅读 · 0 评论