android
文章平均质量分 74
coley-wu
孟浪
展开
-
单例模式的五种实现方式
单例模式可以说是23中设计模式中应用最广的一种模式了。 定义:确保某一个类只有一个实例,自行实例化并且想整个系统提供这个实例。 使用场景:避免某个类产生多个对象而消耗过多的资源,确保某个类在程序中只有一个实例。比如我们使用的图片加载器ImageLoader。往往单例创建的对象,耗费的资源都比较多,所以在初始化单例对象的时候就显得尤为重要了,接下来,我们就来聊一聊原创 2015-12-05 09:53:06 · 14669 阅读 · 10 评论 -
浅谈Android Handler 消息机制
Handler是Android中提供的一种异步回调机制。 由于Android中的UI线程是基于单线程设计的,所以我们没办法在子线程中更新UI,并且不能在UI线程中执行耗时操作,使用Handler我们就能轻松解决这些问题。 Handler需要依赖于Looper、MessageQueue。接下来我们就来缕一缕这三者之间的关系,以及Handler的实现原理。 我们通常使用Handl原创 2016-01-25 17:20:38 · 2234 阅读 · 0 评论 -
四道Java基础题 你能对几道?
一、==符的使用首先看一段比较有意思的代码Integer a = 1000,b=1000;Integer c = 100,d=100; public void mRun(final String name){ new Runnable() { public void run() { S原创 2015-12-21 09:04:44 · 10073 阅读 · 8 评论 -
面向对象的六大设计原则(四):终结篇
四、接口隔离原则:Interface Segregation Principle(ISP) 定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。这个原则比较简单很好理解,但熟练使用却不简单。如何适度的使用接口,需要我们进行反复的思考与设计,才能很好的实践这一原则。这就好像我们的笔记本电脑,一般只会有USB、HDMI、VGA和网线接口。简简单单的几个接原创 2015-12-23 20:58:09 · 1409 阅读 · 2 评论 -
浅析Android View(一)
Android中的View是Android开发中一个非常重要的知识点,系统提供的基础控件TextView,Button,ListView,ViewGroup等都是基于View。但是很多时候的UI效果,利用系统的提供的基本组件无法满足我们的需求,这时候就需要我们自己自定义组件,然而想要随心所遇的写出满足我们需求的组件,却不是那么容易,但也没大家想象的那么难,只要我们掌握的View的基本原理和相关知识,原创 2016-01-07 16:37:51 · 6984 阅读 · 2 评论 -
浅析Android View(二)
深入理解Android View(一) View的位置参数信息 二、View的绘制过程 View的绘制过程一共分为三个部分: - measure(测量View的大小) - layout(确定View的位置) - draw(画出View) 通常我们的View都是以这样的树结构呈现的,如下图 当然我们这里ViewGroup其实上面其实是放在DecorView中的原创 2016-01-12 09:53:30 · 3032 阅读 · 0 评论 -
面向对象的六大设计原则(三):依赖倒置原则
三、依赖倒置原则:Dependence Inversion Principle(DIP) 定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。什么意思呢?高层模块就是调用端,底层模块就是具体的操作类。抽象是指抽象类或者接口,两者都不能直接被实例化;而细节就是具体的实现类,可以直接被实例化,也就是可以直接new出来的对象。依赖倒置原则的和核心思原创 2015-12-23 12:43:01 · 1405 阅读 · 0 评论 -
面向对象的六大设计原则 (一):单一职责
学习自《Android源码设计模式解析与实战》一、单一职责:Single Responsibility Principle,简称SRP 定义:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。个人简单理解为:一个类只做它自己能做的事情,尽量低耦合,高类聚。通俗点讲就是各扫门前雪,你自己该干啥就干啥,不要去多管闲事,干好你自己的事情就行。原创 2015-12-04 10:03:50 · 1580 阅读 · 1 评论 -
Android获取View宽高的几种方式
有时我们会有基于这样的需求,当Activity创建时,需要获取某个View的宽高,然后进行相应的操作,但是我们在onCreate,onStart中获取View的大小,获取到的值都是0,只是由于View的绘制工程还未完成,和在onCreate中弹出Dialog或者PopupWindow会报一个Activity not running原理类似。接下来就为大家介绍几种获取View宽高的方法 一、重写Ac原创 2016-01-07 10:38:39 · 4817 阅读 · 3 评论 -
Android中的MVP模式使用
在讲MVP 之前,我们先来简单说下什么是MVC, 即Model(模型)、View(视图)、Control(控制器),相信大家对于MVC模式早已耳熟能详。原理性的东西这里不再多说。MVC在AndroidApp里面就有很好的体现。因为对于Android本身来说,界面部分的开发一般会用XML文件进行界面的描述开发。也就是MVC中的View层。而对于Model部分则大多是对应本地数据文件的读取或从网络获取原创 2015-12-07 16:50:05 · 5937 阅读 · 3 评论 -
Android内存泄漏杂谈
内存泄漏:是指内存得不到GC的及时回收,从而造成内存占用过多,从而导致程序Crash,也就是常说的OOM。 一、static 先来看下面一段代码public class DBHelper { private static DBHelper db= null; private DBHelper() { } public static DBHelper getI原创 2016-01-27 17:12:56 · 2568 阅读 · 0 评论 -
Android全局异常捕获CrashHandler
在Android开发中在所难免的会出现程序crash,俗称崩溃。用户的随意性访问出现测试时未知的Bug导致我们的程序crash,此时我们是无法直接获取的错误log的,也就无法修复Bug。这就会极大的影响用户体验,此时我们需要注册一个功能来捕获全局的异常信息,当程序出现crash信息,我们把错误log记录下来,上传到服务器,以便于我们能及时修复bug。实现这个功能我们需要依赖于UncaughtExce原创 2016-01-28 17:06:50 · 2921 阅读 · 1 评论 -
Android ViewPager指示器 IndicatorBar
先看下效果 随着ViewPager的滚动,顶部的IndicatorBar中的指示器和文字颜色进行相应的改变,实现起来也非常简单。 第一步:自定义属性 ① 一屏展示Itembar的个数,如上图,一屏显示的Item为4个, ② Item的字体颜色 ③ Item被选中后的字体颜色 ④ Indicator的高度 ⑤ Indicator的颜色原创 2016-03-27 11:07:09 · 3861 阅读 · 1 评论 -
Android 无限滑盘控件 WheelView实现
先看下效果 先说下实现思路,这里,我打算使用ListView来实现。 第一步:无限滑动,这个比较简单,类似于Banner图的无限滑动原理,在Adapter中处理一下count即可,代码如下// 为Count设置一个较大的值@Overridepublic int getCount() { return Integer.MAX_VALUE;}// 在getView中,在根据pos原创 2016-03-23 22:29:55 · 7920 阅读 · 9 评论 -
Android UI效果之绘图篇(四)
Android UI效果之绘图篇(一) :XML绘图 Android UI效果之绘图篇(二):Canvas Android UI效果之绘图篇(三) 上一篇博文说到了Shader的五个子类 - BitmapShader - LinearGradient - RadialGradient - SweepGradient - ComposeShader 其中BitmapSh原创 2016-02-23 11:33:24 · 2843 阅读 · 0 评论 -
Android UI效果之绘图篇(三)
Android UI效果之绘图篇(一) :XML绘图 Android UI效果之绘图篇(二):Canvas 一、 PorterDuffXfermodePorterDuffXfermode类似于数据集合里面的交集并集概念,只是数据里面取的是两个集合,而我们这里取的是两个图形之间的交集并集,我们先来看一张Android API Demo里面一张金典的图 图中的Src和Dst相当于是数学中的两个集原创 2016-02-22 22:48:22 · 2540 阅读 · 0 评论 -
Android UI效果之绘图篇(二):Canvas
Android UI效果之绘图篇(一) 一、Canvas Canvas中的方法很多,这里我们只挑常用的进行讲解说明 Canvas可以绘制的对象有:弧线(arcs) canvas.填充颜色(argb和color)Bitmap圆(circle和oval)点(point)线(line)矩形(Rect)图片(Picture)圆角矩形 (RoundRect)文本(text)顶点(V原创 2016-02-22 15:24:34 · 2668 阅读 · 0 评论 -
Android UI效果之绘图篇(一)
准备出一个UI效果的系列,算是对这段时间的一个总结,主要讲Android开发中的UI效果设计模块。初步分为一下几个篇幅:Android XML绘图(Shape、Layer、Selector)Android Canvas绘图(canvas、point、porterDuffXfermode、shader)Android 动画详解Android 自定义控件 今天就当开胃菜,先讲讲最简单的xml绘原创 2016-02-21 21:13:13 · 3346 阅读 · 1 评论 -
Android系统信息获取
项目需求需要统计当前用户设备信息,刚好做一个总结,方便以后查询 在Android中可以通过android.os.Build这个类和System.getProperty(“xxx”);来获取设备信息,下面列举的常见设备信息摘自Android群英传Build.BOARD // 主板Build.BRAND // 系统定制商Build.SUPPORTED_ABIS //CPU指令集Build.DE原创 2016-02-16 17:14:15 · 5310 阅读 · 0 评论 -
滑动隐藏标题栏布局ListView
由于手机屏幕有限,有时候列表展示时,为了尽可能多的为用户展示列表数据,当用户向上滑动手指,查看更多数据时,可以把标题栏隐藏,从而为用户展示更多的数据。 向上滑动时,隐藏标题栏 实现起来也比较简单,步骤如下:为ListView添加监听手势当用户向上滑动时隐藏标题栏当用户向下滑动时显示标题栏 总体思路比较简单,为ListView添加一个onTouchListener,判断用户当前触发原创 2016-02-16 14:23:59 · 5972 阅读 · 4 评论 -
Android开发技巧、常见的坑和解决方案(二)
一、ViewPager+Fragment动态增删缓存问题 产生原因: 我们在开发中会常常用到ViewPager+Fragment,有时候可能会有这样的需求,需要对ViewPager中的内容进行动态的增删管理,但是我们都知道ViewPager为了保证滑动的流畅性,viewpager在加载当前页的时候已经将pager页左右页的内容加载进内存里了,所以此时我们不进行任何处理的话,是我发达原创 2016-01-23 13:19:11 · 2641 阅读 · 0 评论 -
Android 沉浸式状态栏 一体化状态栏实现
第一步: // 需要setContentView之前调用 private void setTranslucentStatus() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { // 透明状态栏 getW原创 2015-12-02 14:53:14 · 3798 阅读 · 5 评论 -
ListView嵌套GridView解决方案
有是业务需求需要我们使用ListView嵌套GridView或者ListView嵌套ListView就像下面这样 但是由于由于两个控件会产生滑动冲突,进而导致显示不完整的情况,就行下面这样,会造成数据显示不完整,只显示单排数据的情况,就想下面这样 这是由于在测量绘制的时候造成的,知道原因解决起来就很简单了,第一种解决方案,自定义GridView或者ListView ,重写onMeasure(原创 2016-01-06 13:35:05 · 6243 阅读 · 3 评论 -
[干货]Android编程开发规范
在简书里面看到的干货,分享给大家 原文地址 http://www.jianshu.com/p/9b8aeca9b281约定Activity.onCreate(),Fragment.onActivityCreated(),作为程序入口,不用写入太多代码,尽量保持只调用initXXX()方法,简单明了展示调用过程。如:initData(),initView()。单个方法体不要过长代码任转载 2015-12-17 13:06:42 · 1523 阅读 · 0 评论 -
Android 短信验证码自动填写
这个也不是什么新东西,目前很多app都有这个功能,最近有几个小伙伴问我是怎么实现的,索性写一篇博客来为大家解答。 实现思路很简单:1、在需要输入验证码的Activity代码注册监听短信的广播 2、拦截短信,获取其中的验证码 3、回写到EditText private SmsReciver smsReciver = new SmsReciver();原创 2015-12-17 09:09:42 · 5008 阅读 · 3 评论 -
Android自定义圆角ImageView 支持网络图片
先看下效果图 我们再来看一张CSDN的圆角图片 从布局可以看出csdn app 的头像也是圆角的Image,但可以看到,有明显的毛刺感,不知道是csdn 程序员的疏忽还是 我手机的问题,本人手机(小米note)。不知道其他的小伙伴显示效果也是这样。 好回原创 2015-12-16 09:22:29 · 6384 阅读 · 6 评论 -
Android 常用开发工具类
在开发中使用一些工具类,能让代码更加简洁,开发效率也更高,下面是我收集的Android中常用的一些开发工具类,如果大家有更好的工具,欢迎私信我。数据管理的工具类,清理缓存数据import java.io.File;import java.math.BigDecimal;import android.content.Context;import android.os.Envi原创 2015-12-14 17:10:55 · 3559 阅读 · 3 评论 -
Volley框架的二次封装
z 我们平时开发Android app 不可避免的会使用到网络技术,大多数情况下我们都会以http或者https来请求网络数据,而传统的HttpURLConnection、HttpClient,使用起来稍显繁琐。一些网络开发框架也应运而生,今天所要讲的Volley就是其中的一种。个人比较倾向于这个网络框架,究其原因在于他的灵活性。你可以根据你app的架构,对volley进行相应的二次原创 2015-12-14 09:32:50 · 7076 阅读 · 3 评论 -
Android退出应用最优雅的方式
我们先来看看几种常见的退出方法(不优雅的方式)一、容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity import java.util.ArrayList;import java.util.List;import android.app.Activity;import android.原创 2015-12-29 13:00:14 · 9205 阅读 · 16 评论 -
Andorid 流式布局 热门标签解决方案
// 流式布局 话不多说,比较简单,注释都写的很清楚import java.util.ArrayList;import java.util.List;import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.view.ViewGr原创 2015-12-11 16:14:53 · 994 阅读 · 0 评论 -
Android事件分发机制
在讲Android时间分发机制之前,我们需要知道三个非常重要的方法:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent,通过查看Android源码可以看到,在View类中声明了dispatchTouchEvent和onTouchEvent方法并没有onInterceptTouchEvent,原因后面会讲到。那onInterceptTouchE原创 2015-12-09 22:20:40 · 1452 阅读 · 0 评论 -
Activity与Fragment之间的通信详解
当我们使用Fragment的时候会常常与其他的Fragment或者宿主Activity进行交互,今天我们就来讲讲Fragment和Activity之间如何进行通信。 一、 接口回调机制 在讲Fragment和Android通信之前,我们先看一个应用场景,现在有一个需求,在Activity中有一个Button,有个一TextView。现在业务要求是这样,点击Button,改原创 2015-12-17 10:52:48 · 2066 阅读 · 0 评论 -
Java工程师成神之路
hollischuang上看到的一篇博客一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具jps, js转载 2015-12-18 09:31:27 · 4158 阅读 · 1 评论 -
2015Android设备、系统、分辨率最新统计数据
小米还是很6滴大屏时代以上的统计数据来自友盟,在国内应该还是比较权威的最后在给大家上一张Android的学习脑图,在整理资料的时候看到的,应该是出自某的大神之手,只是忘了原文的地址,抱歉原创 2015-12-18 12:45:41 · 3431 阅读 · 1 评论 -
Java高级特性之反射
老规矩我们还是先提出几个问题,一门技术必然要能解决一定的问题,才有去学习掌握它的价值一、 什么是反射?二、反射能做什么? 一、 什么是反射? 用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或原创 2016-01-06 09:59:09 · 5710 阅读 · 3 评论 -
Android 万能适配器 节省你的开发时间
项目中ListView GridView几乎是必用的组件,Android也提供一套机制,为这些控件绑定数据,那就是Adapter。用起来虽然还不错,但每次都需要去继承一个BaseAdapter,然后实现里面的一大堆方法,而我们每次最关心的无非就是getView方法,其余的方法几乎都是相同代码。这里是不是就可以优化起来呢?在其次,我们在使用Adapter的时候,为了优化性能,常常会创建一个Holde原创 2015-12-03 09:28:59 · 3506 阅读 · 6 评论 -
2015 移动技术白皮书
原文地址2015年,是移动领域新技术取得极大丰收的一年。(一)Android篇这里我不谈Google IO大会的各种新概念新思想,不谈Android 5.0和高逼格的Material Design,那些都是浮云,热闹过后,能沉淀下来用于App应用的干货并不多。我只谈这一年来,我认为Android技术界最激动人心的三件事。最后再聊一聊八卦。首先是插件化技术的百家争鸣。在此之前转载 2016-01-05 09:14:46 · 2086 阅读 · 1 评论 -
拥抱Android Studio:从Eclipse到Android Studio的完美迁徙
原文地址 http://www.csdn.net/article/2015-12-17/2826507拥抱变化,拥抱新事物多年前央视有一套电视系列片: 大国崛起,主要讲述那些曾经在站在世界舞台中央的国家的兴衰历程。纵观历史,正是创新使得一个国家得以崛起。Android 开发因为涉及到代码编辑、UI 布局、打包等工序,最好使用一款 IDE。Google 最早提供了基于 Eclip转载 2015-12-18 23:09:27 · 3708 阅读 · 0 评论 -
Andorid5.0原生下拉刷新简单使用
这个出来也有些日子了,相对于上一个19.1.0版本中的横条效果好看了很多。使用起来也很简单。 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container原创 2016-01-13 13:44:43 · 2196 阅读 · 0 评论 -
【干货】Dialog的高冷用法
新的一年开始了,打开朋友圈、QQ空间、微博,一大波虐狗了,晒图的,炫富的又开始了,今天就带大家做这样一个图文小案例。先看下效果。 列表预览页 图片详情页 业务需求很简单,做一个小图预览,然后点击某个小图,进入大图查看,并且能够左右滑动查看图片。 实现思路也很简单,小图预览页面可以用GridView+ImageView,再为GridView添加onItemClickListener即可原创 2016-01-02 15:13:43 · 6363 阅读 · 6 评论