android
文章平均质量分 73
IT界的寿险规划师
本人从事Android开发十来年,后来在职业规划上经过深思熟虑以后转战到大都会担任寿险规划师,在帮助别人的同时成就自己!大家不论技术还是保险配置方面的问题,都欢迎沟通!
展开
-
Android 开发中的一些建议
尽量阅读官方文档,这才是原汁原味、不失真的开发指导;即使你认为设计程序是浪费时间,你只是喜欢写程序,至少你也得用思维导图理清思路,思维导图对于帮助你理解设计文档、理清思路有很大的帮助;不要用Intent传递大量的数据,这有可能导致ANR或者报异常;在退出页面后,系统不一定会及时执行onDestory方法,如果你在onDestory方法里做关闭文件、释放内存的操作原创 2017-05-10 16:15:45 · 291 阅读 · 0 评论 -
Java面向对象设计模式(二十三)——解释器模式(Interpreter)
相关文档总结:Java面向对象设计模式解释器模式(Interpreter)解释器模式是我们暂时的最后一讲,一般主要应用在OOP开发中的编译器的开发中,所以适用面比较窄。Context类是一个上下文环境类,Plus和Minus分别是用来计算的实现,代码如下:[java] view plain copy原创 2017-05-09 17:13:12 · 652 阅读 · 0 评论 -
Java面向对象设计模式(二十二)——中介者模式(Mediator)
相关文档总结:Java面向对象设计模式中介者模式(Mediator) 中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。先看原创 2017-05-09 17:09:06 · 649 阅读 · 0 评论 -
Java面向对象设计模式(二十一)——访问者模式(Visitor)
相关文档总结:Java面向对象设计模式访问者模式(Visitor) 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增原创 2017-05-09 17:05:35 · 677 阅读 · 0 评论 -
Java面向对象设计模式(二十)——状态模式(State)
相关文章总结:Java面向对象设计模式状态模式(State)核心思想就是:当对象的状态改变时,同时改变其行为,很好理解!就拿QQ来说,有几种状态,在线、隐身、忙碌等,每个状态对应不同的操作,而且你的好友也能看到你的状态,所以,状态模式就两点:1、可以通过改变状态来获得不同的行为。2、你的好友能同时看到你的变化。看图:State类是个状态类,Context原创 2017-05-09 17:01:07 · 567 阅读 · 0 评论 -
Java面向对象设计模式(十九)——备忘录模式(Memento)
相关文档总结: Java面向对象设计模式备忘录模式(Memento) 主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象,个人觉得叫备份模式更形象些,通俗的讲下:假设有原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,类C呢,就是一个用来存储备忘录的,且只能存储,不能修改等操作。做个图来分析一下:原创 2017-05-09 16:36:49 · 662 阅读 · 0 评论 -
Java面向对象设计模式(十八)——命令模式(Command)
相关文档总结: Java面向对象设计模式命令模式(Command) 命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行。这个过程好在,三者相互解耦,任何一方都不用去依赖其他人,只需要做好自己的事儿就行,司令员要的是结果,不会去关注到底士兵是怎么实现的。我们看看关系图:原创 2017-05-09 14:02:27 · 730 阅读 · 0 评论 -
Java面向对象设计模式(十七)——责任链模式(Chain of Responsibility)
相关文档:Java面向对象设计模式责任链模式(Chain of Responsibility) 接下来我们将要谈谈责任链模式,有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求。但是发出者并不清楚到底最终那个对象会处理该请求,所以,责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整。先原创 2017-05-09 10:41:22 · 634 阅读 · 0 评论 -
Java面向对象设计模式(十六)——迭代子模式(Iterator)
相关文章总结:Java面向对象设计模式迭代子模式(Iterator) 顾名思义,迭代器模式就是顺序访问聚集中的对象。一般来说,集合中非常常见,如果对集合类比较熟悉的话,理解本模式会十分轻松。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。我们看下关系图: 这个思路和我们常用的一模一样原创 2017-05-09 09:47:20 · 703 阅读 · 0 评论 -
Android Studio中Button等控件的Text中字符串默认大写的解决方法
初学Android的时候,在Android Studio中xml里面添加一个Button、EditText等控件后,它的Text总是会显示大写,即使你输入的字符串是小写也不行,控制字符串大小写的属性是android:textAllCaps,最后查看了一下Themes.xml文件,找到了一些端倪,发现在设置样式的时候,默认是把所有的字符串显示大写true。如图,是从android的Style原创 2017-04-26 16:13:38 · 463 阅读 · 0 评论 -
Java面向对象设计模式(十五)——观察者模式(Observer)
相关文档:Java面向对象设计模式观察者模式(Observer) 包括这个模式在内的接下来的四个模式,都是类和类之间的关系,不涉及到继承,学的时候应该 记得归纳,记得本文最开始的那个图。观察者模式很好理解,类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句原创 2017-05-08 14:54:09 · 2026 阅读 · 0 评论 -
Java面向对象设计模式(十四)——模板方法模式(Template Method)
相关文档:Java面向对象设计模式模板方法模式(Template Method)解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1...n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,先看个关系图:就是在AbstractCalculator类中定义一个主方法calculat原创 2017-05-08 11:32:42 · 710 阅读 · 0 评论 -
Java 获取strings字符串中所有str字符所在的下标
/** * 获取strings字符串中所有str字符所在的下标 * @param strings 母字符串 * @param str 子字符串 * @return 字符串在母字符串中下标集合,如果母字符串中不包含子字符串,集合长度为零 */public static List getIndex(String strings, String str){ List list=new原创 2017-06-23 10:07:14 · 18656 阅读 · 0 评论 -
关于Android中图片大小、内存占用与drawable文件夹关系的研究与分析
经常会有朋友问我这个问题:“能不能一个App只提供一套切图适应所有的分辨率呢?”我觉得有必要写一篇文章来研究一下这个问题,所以就有了这篇文章。本篇内容主要探讨以下场景:同一张图片,放置在不同的drawable文件夹,在同一设备上运行,对图片大小及内存占用有什么影响。测试环境采用锤子T1手机(1080*1960,xxhdpi)进行测试对于内存的查看,使用AS自带的内存原创 2017-07-06 10:01:37 · 696 阅读 · 0 评论 -
微信IM聊天信息下拉加载数据
通常,app中的数据都是以ListView的形式展示的。默认地,把“新”数据添加到数据列表的尾部。但是,如果是IM类型的app,比如查看历史消息这个模块。新数据并不是插到数据列表的尾部,而是插到数据列表的头部。要实现比较好的用户体验,需要保持当前的ListView的位置。换句话说,如果我们能够随心所欲地指定ListView滚动的位置,那么这个问题就迎刃而解。在ListVie原创 2017-07-18 09:48:13 · 3917 阅读 · 0 评论 -
android listview使用glide异步加载图片错位,闪烁问题
技术交流、保险配置问题,欢迎电话微信交流!原创 2019-08-14 17:04:37 · 1910 阅读 · 1 评论 -
解决Glide批量加载图片时出现OOM内存溢出的问题
在接手的项目中原来是这样使用的。如下public static void setImage(ImageView imageview, String url, Context context, int defultPic) { if (TextUtils.isEmpty(url + "")) { imageview.setImageResource(de...原创 2019-04-25 18:07:04 · 5776 阅读 · 1 评论 -
自定义View卡顿优化
前段时间在项目中用到折线图,于是自己自定义了View,结果在屏幕滑动时,每当自定义View出现时,手机就表现出不顺畅 卡顿的现象。如图所示:于是通过跟踪判定是该折线图的问题。onDraw中的代码是:在drawValue(canvas)中画了有500左右的点和线,耗时比较长。于是进行了以下的优化@Override protected void onDraw(Canvas canvas) {...原创 2018-06-12 14:52:54 · 3861 阅读 · 1 评论 -
关于No view found for id 0x7f080135 (com.xxx.xxx:id/viewpager) for fragment PopupWindow
最近在开发项目中,遇到了一个问题。PopupWindow中无法嵌套viewpager+Fragment,现在进行总结一下。问题描述:在Fragment中弹出一个PopupWindow,PopupWindow中用viewpager加载多个Fragment时出现上面问题。网上搜的都是那些什么没有设置id之类的东西,或者getSupportFragmentManager()替换成getChildFrag...原创 2018-05-04 18:24:32 · 6323 阅读 · 6 评论 -
Android 中关于Environment类的总结
Environment类是一个提供访问环境变量的类。1、getExternalStorageState() 方法,返回String 获取外部存储设备的当前状态。返回值如下表返回值说明Environment.MEDIA_BAD_REMOVAL 表明SDCard 被卸载前己被移除 Environment.MEDIA_CHECKING 表明对象正在磁盘检查。 Environment.MEDIA_MOUN...原创 2018-05-04 16:32:23 · 8664 阅读 · 0 评论 -
关于FileProvider的总结
一、背景Android 从 N 开始不允许以 file:// 的方式通过 Intent 在两个 App 之间分享文件,取而代之的是通过 FileProvider 生成 content://Uri 。如果在 Android N 以上的版本继续使用 file:// 的方式分享文件,则系统会直接抛出异常,导致 App 出现 Crash ,同时会报以下错误:android.os.FileUriExpose...原创 2018-05-04 15:55:06 · 1714 阅读 · 0 评论 -
android 7.0 调用相机功能异常FileUriExposedException
之前的项目有用户反馈在Android 7.0既以上版本在更换头像时出现崩溃现象,通过测试跟踪,发现报FileUriExposedException错误。今天做一下总结,并分享一下。Android 6.0之后,需要动态申请权限。调用摄像头拍照获取图片这个功能,需要动态申请照相机权限、SD卡读写权限。从Android 7.0开始,一个应用提供自身文件给其他应用使用时,如果给出一个file://...原创 2018-05-04 11:52:08 · 346 阅读 · 0 评论 -
Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
Android Butterknife Zelezny这个插件,事实上这是个Android Studio的plugin,他可以让你在添加Butterkinfe注解时偷偷懒,直接点击几下鼠标既可以完成注解的增加,同时还是图形化的操作,可以说,大大的减轻了开发负担。尤其是当你的layout中有很多很多的view需要通过findviewbyid来获得引用时。实际上如果不用这个插件而通过手打加Buttef原创 2017-11-23 17:52:25 · 422 阅读 · 0 评论 -
EventBus源码分析
前面一篇文章讲解了EventBus的使用,但是作为开发人员,不能只停留在仅仅会用的层面上,我们还需要弄清楚它的内部实现原理。所以本篇博文将分析EventBus的源码,看看究竟它是如何实现“发布/订阅”功能的。事件注册根据前一讲EventBus使用详解我们已经知道EventBus使用首先是需要注册的,注册事件的代码如下: EventBus.getDefault().regis原创 2017-11-22 15:06:43 · 222 阅读 · 0 评论 -
EventBus使用说明
目前EventBus最新版本是3.1.1,所以本文是基于EventBus3.1.1的。概述EventBus是针一款对Android的发布/订阅事件总线。它可以让我们很轻松的实现在Android各个组件之间传递消息,并且代码的可读性更好,耦合度更低。如何使用(1)首先需要定义一个消息类,该类可以不继承任何基类也不需要实现任何接口。如:原创 2017-11-22 11:13:55 · 237 阅读 · 0 评论 -
Java面向对象设计模式
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式原创 2017-05-02 14:17:36 · 12704 阅读 · 0 评论 -
JAVA 判断身份证的正确性
/*********************************** 身份证验证开始 ****************************************//*** 身份证号码验证 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,* 八位数字出生日期码,三位数字顺序码和一位数字校验码。 2、地址码(前原创 2017-07-28 16:22:15 · 3191 阅读 · 1 评论 -
Java面向对象设计模式(十三)——策略模式(strategy)
相关文档:Java面向对象设计模式策略模式(strategy)策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。 一种方法是 需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数,关系图如下:图中ICalcul原创 2017-05-08 10:16:32 · 931 阅读 · 0 评论 -
Java面向对象设计模式(十二)——享元模式(Flyweight)
相关文章:Java面向对象设计模式享元模式(Flyweight)享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。FlyWeightFactory负责创建和管理享元单元,当一个客户端请求时,工厂需要检查当前对象池中是否有符合条件的对象,如果有,就返回已经存在的对象,如果没有,则创建一个新原创 2017-05-04 17:45:43 · 711 阅读 · 0 评论 -
Android 全局异常捕获之CrashHandler,用于开发者收集获取异常信息
一个App上线或者投入到生产环境的时候崩溃了,还不知道是什么原因,这肯定是开发者的痛…所以肯定要加入全局异常捕获,如果项目较大的话,可以考虑加入第三方诸如友盟的崩溃统计插件,以达到异常捕获的效果!Crash,可以理解为崩溃、垮台,通常来讲就是App运行期间发生了不可预料的错误,虽然在经历发布之前,测试人员进行了大量的测试,但是并不能保证App的正常运行,总会或多或少有一些BUG的。原创 2017-04-06 10:50:28 · 858 阅读 · 0 评论 -
Android中关于Drawable
Drawable有很多种,它们都表示一种图像的概念,但是它们又不全是图片,通过颜色也可以构造出各式各样的图像的效果。在实际开发中,Drawable常被用来作为View的背景使用。Drawable一般都是通过XML来定义的,当然我们也可以通过代码来创建具体的Drawable对象,只是用代码创建会稍显复杂。在Android的设计中,Drawable是一个抽象类,它是所有Drawable对象的基类,每个原创 2017-04-12 14:41:51 · 222 阅读 · 0 评论 -
动画之补间动画详细总结(三)代码生成
一、概述前两篇,我为大家讲述了利用XML来定义动画及插值器,但在代码中,我们常常是动态生成动画的,所以,这篇将为大家讲述如何用代码生成动态生成动画及插值器。先简单写出各个标签对应的类,方便大家理解:scale —— ScaleAnimationalpha —— AlphaAnimationrotate —— RotateAnimationtranslate ——原创 2017-04-11 11:42:36 · 339 阅读 · 0 评论 -
动画之补间动画详细总结(二)Interpolator插值器
一、概述Interpolator属性是Animation类的一个XML属性,所以alpha、scale、rotate、translate、set都会继承得到这个属性。Interpolator的系统值有下面几个:意义如下:AccelerateDecelerateInterpolator 在动画开始与介绍的地方速率改变比较慢,在中间原创 2017-04-11 11:35:03 · 368 阅读 · 0 评论 -
动画之补间动画详细总结(一)
一、概述Android的animation由四种类型组成:alpha、scale、translate、rotate,对应android官方文档地址:《Animation Resources》1、XML配置文件中alpha渐变透明度动画效果scale渐变尺寸伸缩动画效果translate画面转换位置移动动原创 2017-04-11 11:08:50 · 678 阅读 · 0 评论 -
Android性能优化(三)绘制优化
绘制优化是指View的 onDraw方法要避免执行大量的操作。 首先,onDraw中不要创建新的布局对象,这是因为 onDraw方法可能会被频繁调用,这样就会在一瞬间产生大量的临时对象,这不仅占用了过多的内存而且还会导致系统更加频繁的 gc(垃圾回收),降低了程序的执行效率。 其次,onDraw方法不要做耗时的任务,也不能执行成千上万次的循环操作,尽管每次循环都很轻量级,但原创 2017-04-07 11:34:16 · 505 阅读 · 0 评论 -
Android性能优化(二)布局优化
布局优化思想:尽量减少布局文件的层级。布局中层级少了,就意味着Android绘制时的工作量少了,那么程序的性能自然就提高了。如何进行布局优化呢? 首先删除布局中无用的控件和层级,其次有选择地使用性能较低的ViewGroup,比如 RelativeLayout。如果布局中既可以使用LinearLayout 也可以使用RelativeLayout ,那么就采用LinearLayout原创 2017-04-07 11:28:10 · 297 阅读 · 0 评论 -
Android性能优化(一)内存泄露优化(静态变量、单例模式、属性动画)
内存泄露优化分为两个方面,一方面是在开发过程中避免写出有内存泄露的代码,另一方面是通过一些分析工具比如 MAT来找出潜在的内存泄露继而解决。一、静态变量导致内存泄露。一般情况下静态变量引用了或者内部持有Activity导致Activity无法销毁会导致内存泄露。代码如下:二、单例模式导致内存泄露Android的单例模式在我们项目开发中经常会用到,不过使用的不恰当的话也会原创 2017-04-07 10:30:04 · 5597 阅读 · 0 评论 -
自定义SharedPreferences的封装
SpUtil类是对android.content.SharedPreferences的封装,简化了对其的使用。代码如下:public class SpUtil { private static final String NAME="EY"; //保存文件的名称 private static SpUtil instance; public static SpUtil g原创 2017-04-06 11:05:29 · 613 阅读 · 0 评论 -
9款Android常用的快速开发框架
1、Afinal框架项目地址:https://github.com/yangfuhai/afinal主要有四大模块: (1) 数据库模块:android中的orm框架,使用了线程池对sqlite进行操作。 (2) 注解模块:android中的ioc框架,完全注解方式就可以进行UI绑定和事件绑定。无需findViewById和setClickListener等。 (3)转载 2017-03-27 15:18:29 · 436 阅读 · 0 评论 -
Android项目框架搭建小结
1、android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新ListView、ViewPager、WevView、ExpandableListView、GridView、(Horizontal)ScrollView、Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多。并且他实现的下拉刷新ListView在原创 2017-03-27 15:07:33 · 288 阅读 · 0 评论