自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 项目重构之旅

最近让写月度总结,楼主没什么文采想半天不晓得扯点什么好;简单说下上月重构的事儿吧(代码规范好的不用看了,本章算是个人笔记)。搞过的都知道,一般公司为了尽快上线都是快速开发,比如分好模块几个人同时写,功能性的直接搜一下导进来等等,表面上看不出来有什么问题,但是如果你们其中的某个人离职或者有事请假了而刚好有个bug需要你改 肿么办??屡一遍他代码呗,ok也没问题,但是如果他的业务逻辑很复杂呢,屡一...

2018-08-06 19:48:57 760

原创 rxjava2 compose转换异常

java.lang.IllegalArgumentException:Unableto create converter for com.xxx.xxx.basebean.BaseRespose<com.xxx.xxx.Bean.MenuDetailsBean>rxjava2+retrofit2+greendao首先我的MenuDetailsBean是数据库的一张表也是后台...

2018-07-31 21:33:03 936

原创 GreenDao遇到的问题

AS版本3.0.1greendao版本3.2.2如果你的实体类实现了序列化接口可能会报:does not declare a static final serialVersionUID field of type long (536871008 at line 28).声明serialVersionUID变量或者光标放在类名上alt+enter生成也可以去设置里面把这个√上(我的AS设...

2018-07-19 17:13:59 824

原创 Litepal对象存储失败

我的操作:一个final修饰的对象用litepal存储后修改然后删除(不是用的对象的delete方法)再次存储就存不进去了解决不是对象的delete()方法,而是通过静态或其他方法删除的,这种情况对象自身是无法知道自己已经被删掉了,所以存储不进去。而你作为操作者你是清楚自己做了什么的,所以这个时候应该调用一下clearSavedState()方法,把对象的存储状态清理掉,然后再save就可以了。...

2018-06-11 13:04:53 1548

原创 Android内存优化(使用SparseArray和ArrayMap代替HashMap)

在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。介绍...

2018-06-11 12:48:33 208

原创 使用ExpandableListView遇到的问题

ExpandableListAdapter外层item的布局中添加CheckBox控件不能伸缩了没有加点击事件也没有铺满。。无语后来换了个button,记录下暂时木有时间去看原因

2018-06-08 19:04:52 188

原创 ArrayList中set(index,object)与add(index,object)方法的区别

set:将原来index位置上的object的替换掉add:将原来index位置上的向后移动List list=new ArrayList();list.add(index,obj);把第index+1个以及第index+1个以后的元素都往后移一位,类似elementData[i+1]=elementData[i];然后再把obj放到index的位置。当然,这个过程需要考虑index的合理性以及是...

2018-06-08 15:50:40 4131

原创 Vector与ArrayList与CopyOnWriteArrayList区别

1. Vector & ArrayList 1)  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的...

2018-06-07 14:27:18 6177

原创 集成buggly热修复的时候报错

Error:A problem occurred configuring project ':app'.> Failed to notify project evaluation listener.   > Tinker does not support instant run mode, please trigger build by assembleCeshiDebug or di...

2018-05-19 11:26:58 2740

原创 AS升级到3.+遇见滴问题

Error:Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve com.android.support:appcompat-v7:26.1.0. Open FileShow Details==大致意思就是依赖不上,一般都是网络原因,在File->Settings->Build...

2018-05-15 10:57:39 335

原创 Android调用系统裁剪黑框

Android调用系统裁剪,这个已经使用的很熟悉了。但是近期项目里使用的时候遇到了一些小问题,所以在此整理一下,以作记录。首先看代码:Intent intent1 = new Intent("com.android.camera.action.CROP"); intent1.setDataAndType(Uri.fromFile(new File(image.path)),...

2018-04-10 16:09:30 519

转载 TabLayout设置下划线(Indicator)宽度

原文http://blog.csdn.net/u013134391/article/details/70833903#再战TabLayout之下划线宽度这周的需求搞定之后,想到之前有一个小瑕疵,反正没什么事,索性较量较量如图官方原版就是小瑕疵,反射版本就是最终解决方案-Demo源码先讲解决方案。直接贴代码(要在tabLayout添加完所有的t

2017-11-24 10:11:13 6387

翻译 用MediaPlayer+TextureView封装一个实现全屏、小窗口的视频播放器

转自http://www.jianshu.com/p/420f7b14d6f6项目已添加IjkPlayer支持,后续逐渐完善其他功能。地址:https://github.com/xiaoyanger0825/NiceVieoPlayer为什么使用TextureView在Android总播放视频可以直接使用VideoView,VideoView是通过继承自Surface

2017-11-15 13:40:17 1497

原创 ImageView的scaleType属性

ImageView的scaleType,当设置为fitXY时,虽然ImageView显示那么点尺寸,但是,但是Glide加载图片时,却是以全分辨率加载的,于是加载几张,就OOM了。改成fitCenter或者centerCrop(试了一下fitStart、fitEnd也行,总之看需求了),就好了,会自动缓存小图,滚动起来也非常流畅。下面是粘自http://blog.csdn.net/

2017-11-13 10:13:06 218

原创 图片加载之Glide备忘录

相关方法with():指定了声明周期load():加载资源,String/Uri/File/Integer/URL/byte[]/T,或者 loadFromMediaStore(Uri uri)placeholder(resourceId/drawable): 设置资源加载过程中的占位Drawable。error():load失败时显示的Drawable。crossFade()/cross

2017-10-26 16:43:22 342

原创 Android 滑动,拦截事件处理

view 能够正常的吃掉点击事件, 但是如果是滑动事件时, 则是父View 来处理来滑动另一个View基本原理就是 在View group中得onInterceptTouchEvent 方法中判断是否是滑动,如果是滑动,那么就返回true 自身去消费滑动事件,还需要注意的是, 在处理滑动事件的时候需要注意 两个手指滑动的情况即 另一个手指按下也能够继续滑动,

2017-09-30 14:40:49 2929

原创 apk安装失败笔记

昨天公司刚发了测试机,我拿到一台魅蓝max.刚拆开手机。 今天插上数据线,run.结果居然安装失败。提示信息为:INSTALL_FAILED_USER_RESTRICTED。 顿时懵逼了,刚买的新机,就出现这个问题。无语啊。 刚开始还以为是Android studio的问题。结果模拟器跑了下,安装成功。 拿手机在其他人那跑了下,安装失败。好吧,手机的问题。 那到底是哪出了问题呢

2017-09-13 19:05:44 975

转载 SwipeRefreshLayout 设置下拉刷新的距离高度

SwipeRefreshLayout 的下拉刷新距离比较短,有的时候,想要手动设置它的下拉刷新高度,如何解决呢?在网上找了好一会,居然没搜到比较满意的答复,好些都是复制粘贴。于是乎,求人不如求己,拿出API文档,大概看了下,发现了三个相关API:一、setProgressViewEndTarget方法setProgressViewEndTarget (boolean scale, in

2017-08-29 16:42:17 6171

转载 SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式

出处http://blog.csdn.net/u010386612问题: 1. SwipeRefreshLayout会吃掉ViewPager的滑动事件。 2. SwipeRefreshLayout需要套在ScrollView和ListView上的时候才表现的比较友好,在其他ViewGroup上有点问题,不知道为什么,到时候去看下源码。(这问题已经被google修复)今天我只

2017-08-29 16:40:39 583

原创 Bitmap转成byte[]再用base64转成string

用户上传头像,上传的头像图片需要上传至服务器的MySQL数据库保存,当用户上传成功之后每次登陆后从数据库获取头像信息显示。由于之前一直使用JSON作为客户端和服务器端数据传输形式,JSON虽然使用方便但是不支持自定义类型,所以遇到的问题就是将二进制图片文件转成String,再传到服务器并保存到数据库。在查阅了一些资料后想出了一个方法:1,将图片转换成Byte[]2,利用Base64

2017-08-15 15:53:54 674

转载 ViewPager中嵌套VieRecyclerView 滑动事件解决

转自:http://www.jianshu.com/p/f1785b655019Android系统中的每个View的子类都具有下面三个和TouchEvent处理密切相关的方法:1)public boolean dispatchTouchEvent(MotionEvent ev)  这个方法用来分发TouchEvent2)public boolean onInterceptT

2017-08-08 15:11:04 943

转载 Android SwipeRefreshLayout 与 CoordinatorLayout 嵌套刷新

转自:http://blog.csdn.net/jdsjlzx/article/details/51412940SwipeRefreshLayout 与 CoordinatorLayout 嵌套刷新 1. 动态设置SwipeRefreshLayout的是否可以刷新 setEnable(boolean isEnable); 2. 设置SwipRefreshLayout刷新图标的位

2017-08-03 13:30:26 3370

原创 Android自定义样式的Checkbox

常见的自定义样式是改变checkbox的button图片,但是他的需求是去掉checkbox的选项框,使checkbox的样式类似button。我最初给的建议是使用TextView,点击一次改变背景颜色,然后保存当前状态(选中或未选中),但还是很麻烦,查找资料,找到了第二种checkbox的自定义样式方式,总结一下,备忘。 一、修改checkbox选项框样式首先我们要找到两张check

2017-08-01 10:08:53 3288

原创 Retrofit各个注解的含义及作用

写在前面本篇文章基于retrofit-2.1进行分析.1. 各个注解的含义及使用1.1 Body注解:作用于方法的参数使用该注解定义的参数不可为null当你发送一个post或put请求,但是又不想作为请求参数或表单的方式发送请求时,使用该注解定义的参数可以直接传入一个实体类,retrofit会通过convert把该实体序列化并将序列化后的结果直接作为请求体发送出去.示例:

2017-07-20 14:29:16 471

转载 玩转Android之数据库框架greenDAO3.0使用指南

用过ActiveAndroid、玩过ORMLite,穿过千山万水,最终还是发现greenDAO好用,ActiveAndroid我之前有一篇文章介绍过 玩转Android之数据库框架ActiveAndroid的使用,如果小伙伴们有兴趣可以去查看,ActiveAndroid目前存在的问题是没有更新了,GitHub上ActiveAndroid的更新都是两年前的事了。所以我们还是来看看这个目前非常活跃的数

2017-07-20 09:36:08 261

转载 简析 addToBackStack使用和Fragment执行流程

以前写切换fragment是写一个双层for循环外层记录上次操作的fragment里面用show显示当前选中的隐藏上一个刚知道有这个方法(还有这种操作???)这是俺转的http://blog.csdn.net/wenxuzl99/article/details/16112725在使用Fragment的时候我们一般会这样写:        FragmentTransaction tr

2017-07-19 17:16:10 347

原创 Android混淆心得

混淆介绍首先先简单说一下什么是混淆和混淆的作用,其实这个搜索下可以找到一堆官方的说法等等,这里简单口语叙述一下,混淆就是把代码替换成a、b、c基本字母组成的代码,比如一个方法名为:function(),混淆后可能会被替换成a()。混淆的好处:代码混淆后阅读性降低,反编译后破译程序难度提高混淆后字节数减少,减少了应用了体积前者只能说有一点作用,后者则需要看代码的数量 当然不能

2017-07-11 10:53:11 409

原创 Android开发之线程池使用总结

线程池算是Android开发中非常常用的一个东西了,只要涉及到线程的地方,大多数情况下都会涉及到线程池。android开发中线程池的使用和Java中线程池的使用基本一致。那么今天我想来总结一下Android开发中线程池的使用。OK,假如说我想做一个新闻应用,ListView上有一个item,每个item上都有一张图片需要从网络上加载,如果不使用线程池,你可能通过下面的方式来开启一个新线

2017-07-09 14:34:29 231

转载 Google推荐的图片加载库Glide介绍

原文链接:Google推荐的图片加载库Glide介绍作者 : nuuneoi译者 : jianghejie校对者 : chaossss状态 : 完成在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。毫无疑问,这个库引起了

2017-07-04 11:39:08 200

原创 Glide 缓存策略 内存缓存和磁盘缓存

本文主要介绍了如何配置和管理Glide中的缓存,其中大部分内容都可以直接在官方Wiki中找到,这里只是进行了整理和汇总。言归正传,Glide支持图片的二级缓存(并不是三级缓存,因为从网络加载并不属于缓存),即内存缓存和磁盘缓存。磁盘缓存一般的图片缓存指的就是磁盘缓存,把网络上的图片缓存到本地,这样就不需要每次都从网络加载,既提高了加载速度,又为用户节省了流量。Glide在默认情

2017-06-30 13:37:20 2346

原创 Glide简单实用总结

Glide 是一个高效、开源、 Android设备上的媒体管理框架,它遵循BSD、MIT以及Apache 2.0协议发布。Glide具有获取、解码和展示视频剧照、图片、动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里。创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。Glide GitH

2017-06-19 21:26:32 459

原创 为RecyclerView添加item的点击事件

最终目的模拟ListView的setOnItemClickListener()方法,调用者只须调用类似于setOnItemClickListener的东西就能获得被点击item的相关数据。原理为RecyclerView的每个子item设置setOnClickListener,然后在onClick中再调用一次对外封装的接口,将这个事件传递给外面的调用者。而“为RecyclerView的每

2017-06-16 15:13:59 467

转载 自定义圆角Dialog

转载自:http://blog.csdn.net/q4878802/article/details/46960165系统默认的Dialog默认是背景不透明的,有时候项目需要Dialog为圆角透明,这个时候的解决方案就是---重写Dialog- 系统样式 - 自定义以后的样式 自定义一个Dialog,继承Dialog package ktalk.kong.qin

2017-06-07 11:54:19 565

原创 Android studio 依赖aar包

同jar包一样拷贝到我们的libs文件夹下然后在build.gradle中添加repositories { flatDir { dirs 'libs' }}这里面添加你的aar包,SMSSDKGUI-2.1.4是我的aar包名换成你的包名重新编译一下就OKdependencies{compile name:'SMSSDKGUI-2.1.

2017-06-01 14:10:13 332

原创 Could not get unknown property 'ANDROID_BUILD_SDK_VERSION' 解决方法

Error:(7, 0) Could not get unknown property ‘ANDROID_BUILD_SDK_VERSION’ for project ‘:InitActivity’build.gradle如下apply plugin: 'com.android.library'dependencies {}android { compileSdkVe

2017-05-27 13:34:29 12664

原创 Android图片质量压缩以及缩略图生成

1、图片的质量压缩图片的质量压缩是指,仅仅压缩图片文件的大小,但当图片加载到内存中时,占用的内存大小并没有太大变化。可以通过质量压缩,加快图片上传的速度。代码如下:/***将文件压缩后覆盖源文件*/public static void compressImage(File file) {Bitmap bitmap=BitmapFactory.decodeFile(fil

2017-05-27 09:55:04 457

原创 Android APP性能优化

1. 为什么需要性能优化?上面说到,在时间窗口期内开发出产品是极端重要的,但是虽然基本功能我们实现了,但是开发出来的产品代码运行的效率怎么样呢?我们的App用户给用户的体验如何呢?我们的App在低端机上经常ANR、闪退、卡顿等我们的App在其他分辨率上显示惨不忍睹?我们的App在不同网络的情况下如何处理的? 我们的App体验如此之差,导致大量的用户流失。这些迫使我们认识到性

2017-05-24 09:25:34 254

原创 Android 视频播放的三种方式

1、使用其自带的播放器。指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。2、使用VideoView来播放。在布局文件中使用VideoView结合MediaController来实现对其控制。3、使用MediaPlayer类和SurfaceView来实现,这种方式很灵活。1、调用其自带的播放器:Uri uri = Uri.

2017-05-21 19:38:35 365

原创 Android系统从

Android操作系统是一个由Google和开放手持设备联盟共同开发发展的移动设备操作系统,其最早的一个版本Android 1.0 beta发布于2007年11月5日,至今已经发布了多个更新。这些更新版本都在前一个版本的基础上修复了Bug并且添加了前一个版本所没有的新功能2008年--至今的版本Android 1.5(Cupcake纸杯蛋糕):智能虚拟键盘;使用widgets实

2017-05-11 19:49:19 447

原创 用MessageDigest提取String信息摘要也就是MD5值

import java.io.Serializable;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/** * Created by fengmai on 2017/5/4. */public class MD5Utils implements Serializab

2017-05-04 15:22:27 621

空空如也

空空如也

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

TA关注的人

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