- 博客(43)
- 收藏
- 关注
原创 Android 源码编译AIDL 使用实例讲解及Android Studio AIDL的调用详解
Android日常开发中工作中经常到遇到这种情况,一些不能与源码编译的第三方APP想调用一些framework 层或者platfom 签名应用才有权限调用的一些方法,比如更改系统时间,更改系统字体,写入系统级属性,开启关闭系统设备等,这些方法如果没有底层去开接口,第三方应用真是一愁莫展。本文将以一个实例讲解如何以AIDL的方式给上层应用开调用底层方法的接口。AIDL可以跨进程访问其他应用程序,和其他应用程序通讯,说到进程间通讯,很多技术都可以访问,比如广播应用B向A发送指定Action的广播,A就能收到信
2017-03-01 13:55:52
5401
原创 Android 仿IOS ListItem 左滑出删除置顶按钮
由于工作中遇到一个特别欣赏IOS界面的Android 平台UE,需要实现IOS ListItem 左滑出删除置顶按钮这样的设计,自己实现了一下,效果图如下,稍后 上代码。
2016-10-20 15:26:22
1132
2
原创 Android Image 圆角图片与圆形图片 ImageView
项目开发中遇到联系头像需要设置成圆角或者圆形图片技术实现,自定义继承自ImageView 的子类,Override Ondraw
2016-07-20 17:06:28
750
原创 Android 测试环境噪音分贝
最近做工具类项目,手机上小工具各种,有一个测量环境噪音分贝值的,个人对机车码表式显示忠爱(有点机车情节),网上和Android APP market 转了一圈尽没发现让人心动了。所以只能自己动手,做图,做定义控件去实现。
2016-07-07 11:42:29
9297
4
原创 Android 自定义动态注册Broadcast框架
在Android日常开发过程,经常会遇到需要写动态注册广播接收器的时候,其实这部分代码可以以设计的思想抽离出一个框架方便自己日后使用。其核心思路是持有一个InnerReceiver 并提供动态注册与注销的方法,监听getFilterAction()待子类去实现,至此基本框架就算完成了。下面看具体使用。
2016-07-05 17:23:02
497
原创 Android 监听Home key
Android 应用对于Home键的监听不是那么容易,因为Home键可以将程序退出放在后台,所以这个事件是直接分发给系统,系统接收到之后做相应处理,Home键的事件不是直接传递到应用里面.所以不可以像在应用监听Back键那样(override Activity的 onkeydown)的方法监听Home.
2016-07-04 14:06:06
1561
原创 Android ScrollView 长截屏
有时候我们会f需要看到微博,朋友圈,微信等带滑动页面的长截屏图片,即要分享一个界面的所有内容,可是内容太多,超过了屏幕的大小,简单的截屏已经满足不了案子的需要。下面代码实现对滑动页面包括超出屏幕显示区域的截屏。
2016-06-28 16:12:30
1493
原创 Android 更新UI的两种方式--Handler & runOnUiThread
在Android开发过程中,经常遇到需要更新UI。而更新UI是要在主线程来更新的,即UI线程更新。如果在主线线程之外的工作线程中直接更新页面显示常将会报错。抛出异常:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.只有原始创建这个视图层次(view hierachy)的线程才能修改它的视图(view
2016-06-28 15:19:09
1259
原创 Android 自定义组合控件
前言:在Android日常开发过程中难免会遇到Android标准控件库中没有满足要求的,这时候就需要自定义控件。一个好的自定义控件应当和Android本身提供的控件一样,封装了一系列的功能以供开发者使用,不仅具有完备的功能,也优化对内存和CPU的使用。指标:个人自定义控件应该满足下面一些指标:1. 应当遵守Android标准的规范(命名,可配置,事件处理等)。2. 在XML布局中可配置控件的属性。3. 对交互应当有合适的反馈,比如touch,click等。4. 具有兼容性, Android版本
2016-06-27 15:43:00
1601
翻译 IntentService通过HandlerThread单独开启一个线程来处理所有Intent请求对象
IntentService是Service类的子类,用来处理异步请求。客户端可以通过startService(Intent)方法传递请求给IntentService。IntentService在onCreate()函数中通过HandlerThread单独开启一个线程来处理所有Intent请求对象(通过startService的方式发送过来的)所对应的任务,这样以免事务处理阻塞主线程。执行完所一个Intent请求对象所对应的工作之后,如果没有新的Intent请求达到,则自动停止Service;否则执行下一个I
2016-06-27 11:40:54
1140
原创 Java设计模式之--访问者模式(Visitor)
概念:访问者模式(Visitor)行为设计模式。访问者模式被用在针对一组相同类型对象的操作。优点是,可以把针对此对象的操作逻辑转移到另外一个类上。用于数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化。访问者模式适用于数据结构相对稳定算法又易变化的系统。因为访问者模式使得算法操作增加变得容易。若系统数据结构对象易于变化,经常有新的数据对象增加进来,则不适合使用访问者模式。访问者模式的优点是增加操作很容易,因为增加操作意味着增加新的访问者。访问者模式将有关行为集中到一个访问者对象中,其改变不影
2016-06-24 12:12:46
1581
原创 Java设计模式之--状态模式(State)
概念:状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。状态模式有两个要点:1、可以通过改变状态来获得不同的行为。2、外面对状态的知晓。
2016-06-24 09:39:15
360
原创 Java设计模式之--备忘录模式(Memento)
概念:备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,属于行为模式。它是在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样适当的时候就可将该对象恢复到原先保存的状态。思路:原始类A,A中有各种属性,A可以决定需要备份的属性,备忘录类B是用来存储A的一些内部状态,存储类C,就是一个用来存储备忘录的,且只能存储,不能修改等操作。
2016-06-23 17:01:35
410
原创 Java设计模式之--命令模式(Command)
概念:命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开,实现二者之间的解耦合。适用环境:系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。系统需要在不同的时间指定请求,将请求排队和执行请求。系统需要支持命令的撤销和恢复操作。系统需要将一组操作组合在一起,即支持宏命令。
2016-06-23 15:03:39
576
原创 Java设计模式之--责任链模式(Chain of Responsibility)
概念:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任,对系统进行动态的调整。
2016-06-23 12:59:26
397
原创 Java设计模式之--迭代器模式(Iterator)
概念:迭代器模式就是顺序访问聚集中的对象,一般来说,集合中非常常见。这句话包含两层意思:一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问。贴段查询数据库的代码:询数据库均会把查询的结果包装在一个Cursor的子类对象中返回。Cursor就像是位于结果聚集之上的一个游标,可以对结果集进行向前、向后或随 机的访问。这就是一种迭代模式
2016-06-23 10:56:09
415
原创 Java设计模式之--观察者模式(strategy)
概念:观察者模式是关于多个对象想知道一个对象中数据变化情况的一种成熟模式。观察者模式中有一个称作“主题”的对象和若干个称作“观察者”的对象,“主题”和“观察者”之间是一种一对多的依赖关系。当“主题”的状态发生变化时,所有“观察者”都得到通知。场景:类似于邮件订阅和RSS订阅,当我们浏览一些博客或wiki时,经常会看到RSS图标,就这的意思是,当你订阅了该文章,如果后续有更新,会及时通知你。其实,简单来讲就一句话:当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的
2016-06-22 16:01:01
361
原创 Java设计模式之--模板方法模式(Template Method)
模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本方法汇总起来的方法叫做模板方法(template method),这个设计模式的名字就是从此而来。模板方法模式,技术具体是:一个抽象类中,对外主方法另外有n个方法,这些方法,可以是抽象的,也可以是实际的方法,定义子类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用,
2016-06-21 16:17:06
392
原创 Java设计模式之--策略模式(strategy)
策略模式(strategy)概念:定义一系列的算法,把每一个算法单独实现并封装, 并且使它们可相互替换。使得算法可独立于使用它的客户而变化。客户可以决定采用哪种策略(算法)
2016-06-21 15:43:02
279
原创 Java设计模式之--享元模式(Flyweight Pattern)
享元模式(Flyweight Pattern)是一种软件设计模式。它使用共享物件,用来尽可能减少内存使用量以及分享资讯给尽可能多的相似物件;它适合用于只是因重复而导致使用无法令人接受的大量内存的大量物件。通常物件中的部分状态是可以分享。常见做法是把它们放在外部数据结构,当需要使用时再将它们传递给享元。
2016-06-21 10:37:39
371
原创 Java设计模式之--组合模式(Composite Pattern)
组合模式(Composite Pattern)有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念 ,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。组合模式让你可以优化处理递 归或分级数据结构。有许多关于分级数据结构的例子,使得组合模式非常有用武之地。
2016-06-21 09:13:28
356
原创 Java设计模式之--桥接模式(bridge pattern)
模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时候,在各个数据库之间进行切换,不需要动太多的代码,甚至丝毫不用动,原因就是JDBC提供统一接口,每个数据库提供各自的实现,用一个叫做数据库驱动的程序来桥接就行了
2016-06-20 16:17:51
456
原创 Java设计模式之--外观模式(facade pattern)
外观模式是为了解决子系统中类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度。如果我们没有EncryptFacade类,那么,FileRead、FileWrite、Encryptor他们之间将会相互持有实例,产生关系,这样会造成严重的依赖,修改一个类,可能会带来其他类的修改,这不是我们想要看到的,有了EncryptFacade类,他们之间的关系被放在了Computer类里,这样就起到了解耦的作用,这也
2016-06-20 14:33:41
394
原创 Android 开发之Google Tag Manager 网络设定
Tag Manager 产品(http://www.google.com/tagmanager/),适用于站点多,运行多套:流量,广告系统的用户。部署一份脚本,然后根据规则,加载对应的脚本,方便修改和管理,还支持版本和调试等功能。国外的话,之前也有很多类似的商业产品。平台:目前有三个平台可应用GTM, 网站,IOS和Android,本文将描述的是Android 对GTM的应用
2016-06-20 12:01:13
1647
转载 Android线控耳机长按事件
在这个周的工作中,这个问题让我纠结了好久,问度娘不知道,上android开发者官网似乎进入了词海,翻了下上了个GOOGLE,还是没有很好的答案。2,后来得到一个相关的APK,研究过后发现原来跟线控耳机长按时,出来百度语音搜索应该一个原理(有装百度手机客户端的话)。3,主要就两个ACTION就可以实现长按操作,而且类似于后台服务的效果(如果界面显示的话,直接LongPress就可以处理了)
2016-06-17 11:58:32
2447
原创 Android Studio NDK 编程
Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”。JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C、C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。目标:本文将细述在 Android Studio环境下进行NDK开发的的安全,个人感觉Android Studio目前对NDK支持
2016-06-17 11:05:31
387
原创 Android Dex 热补丁更新
该方案基于的是android dex分包方案的简单的概括一下,就是把多个dex文件塞入到app的classloader之中,但是android dex拆包方案中的类是没有重复的,如果classes.dex和classes1.dex中有重复的类,当用到这个重复的类的时候,系统会选择.....
2016-06-16 15:57:24
1524
原创 HybridApp 概念与自定义JsBridge 框架
HybridApp在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java、Object-C、C#等语言,还是选择继续使用网页开发,容忍HTML5功能的局限性。通过JsBridge 实现业务层与界面层的数据通讯,逻辑调用。
2016-06-15 16:20:59
2255
原创 实用Android Studio 插件
常言道公欲善其事,必先利其器。对于程序猿来说,在日常的开发过程中,除了要熟悉开发工具自带一起便捷功能,还需要一些好用的功能扩展插件来帮忙,这让我们的编程工作更高效,达到事半功倍的效果。下面就推荐一些Android Studio 的实用插件。Butterknife Zelezny GsonFormat Android Studio Prettify Android Code Generator Android Parcelable code generator Android Toolbox Plugin
2016-06-15 10:47:21
4315
原创 Android Studio Git 版本控制 on Windows10--从系统配置到具体使用
之前笔者比较习惯在linux 环境上使用eclipse 开发,另外在terminal中使用git 命令对代码进行版本控制。后来工作环境渐渐往Windows Android Studio环境迁移,现在描述一下在Windows Android Studio环境下如何使用git for windows进行版控。毕竟Android也自集合了git 、github 、subversion、cvs 、GoogleClound 等窗体操作,给了大家除了SmartGit 之外的选择。
2016-06-14 17:07:27
1564
原创 Android内存泄漏分析实例
Android应用程序本身系统分配的内存很少,一旦发生泄漏,程序很快就会变得非常卡顿,直至OOM崩溃。本文将通过两个案例,来介绍内存泄漏分析工具MAT,以及内存分析的技巧。Handler使用过程中可能引发的内存泄漏。
2016-06-14 16:24:58
691
原创 Java编程开发设计模式之--装饰者模式(Decorator)与代理模式(Proxy)
装饰者模式(Decorator)与代理模式(Proxy) 装饰者模式(Decorator)是给一个已知对象动态增加一些必要的功能方法,并需保证被装饰对象与装饰者实现的是相同接口,设计思想是装饰者持有一个被装饰对象的实例。举一个现实中的应用场景例子,您买了一套毛坯房,现在想要装修,可对装饰房屋的具体工作无法自己一个人做好,那么你可以将这套房子,托付给房屋装修公司,让其帮您,按照其提供的一整套流程(设
2016-06-14 13:52:00
574
原创 Java编程开发设计模式之--适配器模式(Adapter)
这篇博文刚开始讲述设计模式中另一大分类:结构型模式,共7种适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。这其中对象的适配器模式是其他各种结构型模式的起源,他们的衍生关系图,如下图: 适配器模式,有时也称作包装模式,是指将某一个类的接口适配转化成用户所期望的另一接口的情况,其目的是解决由于接口不匹配所造成的类的兼容性问题。适配器模式又可分为三种:类的适配器模式,对象的
2016-06-13 14:44:30
558
原创 Java编程开发设计模式之--原型模式(Prototype)
原型模式Prototype是指将一个对象作为原型模板,根据它进行复制,克隆,产生一个和原型对象相似的新的对象。本文将通过对对象的浅复制与深复制的概念与具体实现,进行讲述,并通过测试类类代码展示二者区别。在JAVA语言中,复制对你通过实现Cloneable 接口来实现的。
2016-06-13 11:23:40
524
原创 Java编程开发设计模式之--单例模式(Singleton)
单例对象(Singleton)是一种使用频率较高的设计模式。在JAVA APP中单例能确保JVM中只有一个存在的实例
2016-06-12 14:32:48
439
原创 Java编程开发设计模式之--抽象工厂模式(Abstract Factory)
在工厂方法模式中,创建产品类完全依赖于工厂类本身,一旦有扩展需求,就必须对工厂类进行修改,这其实是违背设计原则中的闭包原则的,因此,在设计思路存在瑕疵。解决这一问题,就得用到本文中将详述的抽象工厂模式。即抽取工厂类接口,创建多个工厂类,这样如有新需要增加的功能,可以直接增加新的工厂类,不需要修改现存代码。先看下面类图:详细代码如下:首先建立一个共同接口publi
2016-06-12 13:35:18
510
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人