android
文章平均质量分 57
myf0908
qq:543161330/邮箱mayifan0908@outlook.com
展开
-
项目重构之旅
最近让写月度总结,楼主没什么文采想半天不晓得扯点什么好;简单说下上月重构的事儿吧(代码规范好的不用看了,本章算是个人笔记)。搞过的都知道,一般公司为了尽快上线都是快速开发,比如分好模块几个人同时写,功能性的直接搜一下导进来等等,表面上看不出来有什么问题,但是如果你们其中的某个人离职或者有事请假了而刚好有个bug需要你改 肿么办??屡一遍他代码呗,ok也没问题,但是如果他的业务逻辑很复杂呢,屡一...原创 2018-08-06 19:48:57 · 748 阅读 · 0 评论 -
ImageView的scaleType属性
ImageView的scaleType,当设置为fitXY时,虽然ImageView显示那么点尺寸,但是,但是Glide加载图片时,却是以全分辨率加载的,于是加载几张,就OOM了。改成fitCenter或者centerCrop(试了一下fitStart、fitEnd也行,总之看需求了),就好了,会自动缓存小图,滚动起来也非常流畅。下面是粘自http://blog.csdn.net/原创 2017-11-13 10:13:06 · 212 阅读 · 0 评论 -
Android 滑动,拦截事件处理
view 能够正常的吃掉点击事件, 但是如果是滑动事件时, 则是父View 来处理来滑动另一个View基本原理就是 在View group中得onInterceptTouchEvent 方法中判断是否是滑动,如果是滑动,那么就返回true 自身去消费滑动事件,还需要注意的是, 在处理滑动事件的时候需要注意 两个手指滑动的情况即 另一个手指按下也能够继续滑动,原创 2017-09-30 14:40:49 · 2919 阅读 · 0 评论 -
SwipeRefreshLayout 设置下拉刷新的距离高度
SwipeRefreshLayout 的下拉刷新距离比较短,有的时候,想要手动设置它的下拉刷新高度,如何解决呢?在网上找了好一会,居然没搜到比较满意的答复,好些都是复制粘贴。于是乎,求人不如求己,拿出API文档,大概看了下,发现了三个相关API:一、setProgressViewEndTarget方法setProgressViewEndTarget (boolean scale, in转载 2017-08-29 16:42:17 · 6140 阅读 · 0 评论 -
SwipeRefreshLayout和ViewPager滑动冲突的原因和正确的解决方式
出处http://blog.csdn.net/u010386612问题: 1. SwipeRefreshLayout会吃掉ViewPager的滑动事件。 2. SwipeRefreshLayout需要套在ScrollView和ListView上的时候才表现的比较友好,在其他ViewGroup上有点问题,不知道为什么,到时候去看下源码。(这问题已经被google修复)今天我只转载 2017-08-29 16:40:39 · 573 阅读 · 0 评论 -
apk安装失败笔记
昨天公司刚发了测试机,我拿到一台魅蓝max.刚拆开手机。 今天插上数据线,run.结果居然安装失败。提示信息为:INSTALL_FAILED_USER_RESTRICTED。 顿时懵逼了,刚买的新机,就出现这个问题。无语啊。 刚开始还以为是Android studio的问题。结果模拟器跑了下,安装成功。 拿手机在其他人那跑了下,安装失败。好吧,手机的问题。 那到底是哪出了问题呢原创 2017-09-13 19:05:44 · 940 阅读 · 0 评论 -
Bitmap转成byte[]再用base64转成string
用户上传头像,上传的头像图片需要上传至服务器的MySQL数据库保存,当用户上传成功之后每次登陆后从数据库获取头像信息显示。由于之前一直使用JSON作为客户端和服务器端数据传输形式,JSON虽然使用方便但是不支持自定义类型,所以遇到的问题就是将二进制图片文件转成String,再传到服务器并保存到数据库。在查阅了一些资料后想出了一个方法:1,将图片转换成Byte[]2,利用Base64原创 2017-08-15 15:53:54 · 664 阅读 · 0 评论 -
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 · 3361 阅读 · 0 评论 -
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 · 935 阅读 · 0 评论 -
玩转Android之数据库框架greenDAO3.0使用指南
用过ActiveAndroid、玩过ORMLite,穿过千山万水,最终还是发现greenDAO好用,ActiveAndroid我之前有一篇文章介绍过 玩转Android之数据库框架ActiveAndroid的使用,如果小伙伴们有兴趣可以去查看,ActiveAndroid目前存在的问题是没有更新了,GitHub上ActiveAndroid的更新都是两年前的事了。所以我们还是来看看这个目前非常活跃的数转载 2017-07-20 09:36:08 · 256 阅读 · 0 评论 -
Android自定义样式的Checkbox
常见的自定义样式是改变checkbox的button图片,但是他的需求是去掉checkbox的选项框,使checkbox的样式类似button。我最初给的建议是使用TextView,点击一次改变背景颜色,然后保存当前状态(选中或未选中),但还是很麻烦,查找资料,找到了第二种checkbox的自定义样式方式,总结一下,备忘。 一、修改checkbox选项框样式首先我们要找到两张check原创 2017-08-01 10:08:53 · 3278 阅读 · 0 评论 -
图片加载之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 · 332 阅读 · 0 评论 -
用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 · 1488 阅读 · 0 评论 -
TabLayout设置下划线(Indicator)宽度
原文http://blog.csdn.net/u013134391/article/details/70833903#再战TabLayout之下划线宽度这周的需求搞定之后,想到之前有一个小瑕疵,反正没什么事,索性较量较量如图官方原版就是小瑕疵,反射版本就是最终解决方案-Demo源码先讲解决方案。直接贴代码(要在tabLayout添加完所有的t转载 2017-11-24 10:11:13 · 6373 阅读 · 0 评论 -
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 · 929 阅读 · 0 评论 -
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 · 815 阅读 · 0 评论 -
使用ExpandableListView遇到的问题
ExpandableListAdapter外层item的布局中添加CheckBox控件不能伸缩了没有加点击事件也没有铺满。。无语后来换了个button,记录下暂时木有时间去看原因原创 2018-06-08 19:04:52 · 180 阅读 · 0 评论 -
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 · 4111 阅读 · 0 评论 -
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 · 6162 阅读 · 0 评论 -
Litepal对象存储失败
我的操作:一个final修饰的对象用litepal存储后修改然后删除(不是用的对象的delete方法)再次存储就存不进去了解决不是对象的delete()方法,而是通过静态或其他方法删除的,这种情况对象自身是无法知道自己已经被删掉了,所以存储不进去。而你作为操作者你是清楚自己做了什么的,所以这个时候应该调用一下clearSavedState()方法,把对象的存储状态清理掉,然后再save就可以了。...原创 2018-06-11 13:04:53 · 1538 阅读 · 0 评论 -
Android内存优化(使用SparseArray和ArrayMap代替HashMap)
在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android这种移动平台,也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有些情况下能带来更好的性能提升。介绍...原创 2018-06-11 12:48:33 · 202 阅读 · 0 评论 -
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 · 329 阅读 · 0 评论 -
集成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 · 2737 阅读 · 0 评论 -
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 · 512 阅读 · 0 评论 -
简析 addToBackStack使用和Fragment执行流程
以前写切换fragment是写一个双层for循环外层记录上次操作的fragment里面用show显示当前选中的隐藏上一个刚知道有这个方法(还有这种操作???)这是俺转的http://blog.csdn.net/wenxuzl99/article/details/16112725在使用Fragment的时候我们一般会这样写: FragmentTransaction tr转载 2017-07-19 17:16:10 · 338 阅读 · 0 评论 -
Android开发之线程池使用总结
线程池算是Android开发中非常常用的一个东西了,只要涉及到线程的地方,大多数情况下都会涉及到线程池。android开发中线程池的使用和Java中线程池的使用基本一致。那么今天我想来总结一下Android开发中线程池的使用。OK,假如说我想做一个新闻应用,ListView上有一个item,每个item上都有一张图片需要从网络上加载,如果不使用线程池,你可能通过下面的方式来开启一个新线原创 2017-07-09 14:34:29 · 222 阅读 · 0 评论 -
Android图片质量压缩以及缩略图生成
1、图片的质量压缩图片的质量压缩是指,仅仅压缩图片文件的大小,但当图片加载到内存中时,占用的内存大小并没有太大变化。可以通过质量压缩,加快图片上传的速度。代码如下:/***将文件压缩后覆盖源文件*/public static void compressImage(File file) {Bitmap bitmap=BitmapFactory.decodeFile(fil原创 2017-05-27 09:55:04 · 452 阅读 · 0 评论 -
Android APP性能优化
1. 为什么需要性能优化?上面说到,在时间窗口期内开发出产品是极端重要的,但是虽然基本功能我们实现了,但是开发出来的产品代码运行的效率怎么样呢?我们的App用户给用户的体验如何呢?我们的App在低端机上经常ANR、闪退、卡顿等我们的App在其他分辨率上显示惨不忍睹?我们的App在不同网络的情况下如何处理的? 我们的App体验如此之差,导致大量的用户流失。这些迫使我们认识到性原创 2017-05-24 09:25:34 · 245 阅读 · 0 评论 -
自定义Dialog实现popwindow的效果
package com.yf.fengmai.mothercareschool.ChildrenDisplay;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.support.annotation.NonNull;import a原创 2017-04-21 12:13:49 · 657 阅读 · 0 评论 -
调用系统软键盘
//调用软键盘 Timer timer=new Timer(); timer.schedule(new TimerTask() { @Override public void run() { InputMethodManager inputMethodManager=(Inpu原创 2017-04-21 12:10:33 · 1145 阅读 · 0 评论 -
Android系统从
Android操作系统是一个由Google和开放手持设备联盟共同开发发展的移动设备操作系统,其最早的一个版本Android 1.0 beta发布于2007年11月5日,至今已经发布了多个更新。这些更新版本都在前一个版本的基础上修复了Bug并且添加了前一个版本所没有的新功能2008年--至今的版本Android 1.5(Cupcake纸杯蛋糕):智能虚拟键盘;使用widgets实原创 2017-05-11 19:49:19 · 442 阅读 · 0 评论 -
Android获取String的MD5值
/** * 将字符串转成MD5值 * * */ public static String stringToMD5(String string) { byte[] hash; try { hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));原创 2017-05-02 10:09:27 · 1349 阅读 · 0 评论 -
断点续传的原理
断点续传的原理其实断点续传的原理很简单,就是在 Http 的请求上和一般的下载有所不同而已。 打个比方,浏览器请求服务器上的一个文时,所发出的请求如下: 假设服务器域名为 wwww.sjtu.edu.cn,文件名为 down.zip。GET /down.zip HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/j原创 2017-03-31 11:50:03 · 291 阅读 · 0 评论 -
androidnvalidate()与postInvalidate()和postInvalidateOnAnimation()
invalidate()是用来刷新View的,不能直接在线程中调用,因为他是违背了单线程模型:Android UI操作并不是线程安全的,必须是在UI线程中进行工作。比如在修改某个view的显示时,调用invalidate()才能看到重新绘制的界面。invalidate()的调用是把之前的旧的view从主UI线程队列中pop掉。invalidate()得在UI线程中被调动,在工作者线程中可以原创 2017-03-30 20:24:16 · 866 阅读 · 0 评论 -
自定义DialogFragment实现Dialog
首先我们采用单利的模式声明一个dialog对象 public static final Dialogfragment getinstance(){ Dialogfragment dlg=new Dialogfragment(); return dlg; }重写onCreateView用getDialog()方法设置相关属性//可选原创 2017-03-29 19:13:19 · 558 阅读 · 0 评论 -
在使用Gson的toJson()方法转为json字符串的时候无法显示中文和符号的问题(已解决)
最近写了一个简单的服务器,写了几个实体类然后用Gson的toJson()方法转为json字符串后用Log日志打印了一下发现一些符号和汉字无法正常显示;解决方法:Gson gson = new GsonBuilder() .setPrettyPrinting() .disableHtmlEscaping() .create();//be原创 2017-04-26 14:07:00 · 12968 阅读 · 0 评论 -
关于使用Volley下载的json字符串无法显示中文的问题(已解决)
前面自己写了个服务器,然后用volley访问自己的服务器时发现返给我的json字符串出现中文乱码,然后就自定义了StringRequest方法在重写的Response方法中设置编码格式为utf-8;class MyStringRequest extends StringRequest { public MyStringRequest(String url, Response.Lis原创 2017-04-26 14:21:00 · 438 阅读 · 0 评论 -
Git 使用备忘
1.参与一个开源项目,一定要从自己的帐号下克隆版本库,这样你才能推送修改!2.Repository 版本库,又名仓库: 可以简单地理解为一个目录,且目录下的所有文本文件可被 Git 管理(建议用 UTF8 编码)。3.用 git config 命令的 --global 参数,表示你机器上所有的 Git 版本库都会使用这个配置: $ git config原创 2017-03-31 18:48:04 · 310 阅读 · 0 评论 -
Retrofit各个注解的含义及作用
写在前面本篇文章基于retrofit-2.1进行分析.1. 各个注解的含义及使用1.1 Body注解:作用于方法的参数使用该注解定义的参数不可为null当你发送一个post或put请求,但是又不想作为请求参数或表单的方式发送请求时,使用该注解定义的参数可以直接传入一个实体类,retrofit会通过convert把该实体序列化并将序列化后的结果直接作为请求体发送出去.示例:原创 2017-07-20 14:29:16 · 463 阅读 · 0 评论 -
Google推荐的图片加载库Glide介绍
原文链接:Google推荐的图片加载库Glide介绍作者 : nuuneoi译者 : jianghejie校对者 : chaossss状态 : 完成在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。毫无疑问,这个库引起了转载 2017-07-04 11:39:08 · 196 阅读 · 0 评论