移动开发
文章平均质量分 93
且听真言
努力工作,玩命生活。
展开
-
Android实现文本折叠效果
小需求:默认展示4行,超过4行出现“查看全部”,点击则加载浮层显示完整内容;实现是参考下面网址代码,但是有一些改动(主要涉及纯引英文的文本下面网址的代码可能有些问题)https://www.jianshu.com/p/f4f99eb932d4最终显示代码如下:import android.content.Contextimport android.graphics.Col...原创 2020-03-07 17:52:32 · 2163 阅读 · 0 评论 -
Android资源的加载与匹配
其实在应用程序资源的编译和打包之后就生成了一个资源索引表文件resources.arsc,这个应用程序资源会被打包到APK文件中。Android应用程序在运行过程中,通过一个称为Resource来获取资源,但实际上Resource内部又是通过AssetManager的资源管理器来读取打包在APK文件中的资源文件。那么AssetManager如何与应用关联在一起...原创 2019-01-19 18:37:53 · 1206 阅读 · 0 评论 -
mtk短信发送流程
短信发送UML图W:\Android8.1_intergration_2\vendor\mediatek\proprietary\packages\apps\Mms\src\com\android\mms\data\WorkingMessage.java/** * Send this message over the network. Will call back with on...原创 2019-01-06 16:08:36 · 746 阅读 · 0 评论 -
Android设计模式之桥接模式
桥接模式介绍桥接模式也称为桥梁模式,是结构型设计模式之一。桥接模式的定义将抽象部分与实现部分分离,使它们都可以独立进行变化。桥接模式的使用场景从模式定义中我们了解到,这里“桥梁的”作用其实就是连接“抽象部分”与“实现部分”,但事实上,任何多维度变化类或者说多个树状类之间的耦合都可以使用桥接模式来实现解耦。如果一个系统需要在构建的抽象化角色和具体角色之间增加更多灵活性,避免在...原创 2019-01-06 11:51:36 · 542 阅读 · 0 评论 -
android设计模式之装饰模式
装饰模式(Decorator Pattern)也称为包装模式(Wrapper Pattern),结构型设计模式之一,其使用一种对客户端透明的方式来动态扩展对象的功能,同时它也是继承关系的一种替代方案之一。(组合方案也是继承关系的一种替代方案)。 装饰模式的定义动态给一个对象添加一些额外的职责。就增加功能来说,装饰模式生成子类更加灵活。 装饰模式的使用场景需要透明且动态地扩展...原创 2019-01-01 09:35:35 · 821 阅读 · 0 评论 -
android设计模式之外观模式
外观模式的介绍外观模式在开发中使用较高,尤其在现阶段,第三方SDk的使用。SDK大多使用外观模式。通过一个外观类是的整个系统的接口只有一个统一的高层接口,这样就能降低用户成本,也对用户屏蔽了很多实现细节。外观模式也是我们封装API的常用手段,例如网络模块、ImageLoader模块等。外观模式的使用场景1.为一个复杂子系统提供一个简单的接口。子系统往往因为不断演化而变得...原创 2019-01-05 10:30:02 · 391 阅读 · 0 评论 -
Android设计模式之适配器模式
适配器模式的定义适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。适配器模式的使用场景1.系统需要使用现有的类,而此类的接口不符合系统的需要,即接口不兼容。2.想要建立一个可以重复使用的类,用于一些彼此之间没有太大关联的一些类,包括可能在将来引进的类一起工作。3.需要一个统一的输出接口,而输入端的类型不可预知。...原创 2018-12-31 13:10:28 · 276 阅读 · 0 评论 -
android设计模式之组合模式
组合模式(Composite Pattern)也称为部分整体模式(Part-Whole Pattern),结构型设计模式之一,组合模式比较简单,它将一组相似的对象看做一个对象处理,并根据一个树状结构来组合对象,然后提供一个统一的方法去访问相应的对象,以此忽略掉对象与对象集合之间的差别。组合模式的定义将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一...原创 2018-12-30 15:56:32 · 370 阅读 · 0 评论 -
android设计模式之享元模式
享元模式是对象池的一种实现,它的英文名是Flyweight,代表轻量级的意思。享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象。从而达到对象共享、避免创建过多对象的效果,这样一来就可以提升性能、内存溢出等问题。享元对象中的部分状态是可以共享的,可以共享的状态称为内部状态,内部状态不会随着环境的变化而变化;不可共享的状态称为外部状态,它们会随着环境的改变...原创 2019-01-03 19:26:13 · 387 阅读 · 0 评论 -
Android设计模式之代理模式
代理模式(Proxy Pattern)也称为委托模式。代理模式的定义为其它对象提供一种代理以控制对这个对象的访问。代理模式的使用场景当无法或者不想直接访问某个对象或者访问某个对象存在困难时,可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,委托对象与代理对象需要实现相同的接口。代理模式的UML类图 角色介绍:Subject:抽象主题类该类的主...原创 2018-12-29 15:14:30 · 765 阅读 · 0 评论 -
Android设计模式之迭代器模式
迭代器模式又称游标模式, 是行为型设计模式之一。迭代器模式源于对容器的访问,比如Java中的List、Map、数组等。对容器对象的访问必然会涉及到遍历算法,可以将遍历算法封装在容器中,或者不提供遍历算法。如果将遍历算法封装在容器中,那么容器类就承担了过多的功能,容器类不仅要维护自身内部的数据元素,而且还要对外提供遍历的接口方法,因为遍历状态的存储问题还不能对同一个容器同时进行多个遍历操作,如果...原创 2018-12-18 19:21:08 · 283 阅读 · 0 评论 -
android设计模式之中介者模式
中介者模式包装了一系列对象相互作用的方式,使得对象不必相互明显作用。使它们可以松散耦合。当某些对象之间的作用发生改变时,不会立即影响其他的一些对象之间的作用。保证这些作用可以彼此独立变化。中介者模式将多对多的相互作用转化为一对多的相互作用。中介者模式将对象的行为和协作抽象化,把对象在小尺度的行为上与其他对象的相互作用分开处理。 Mediator:抽闲中介者角色,定义了同事对象到中介者对...原创 2018-12-28 19:31:31 · 388 阅读 · 0 评论 -
Android设计模式之访问者模式
访问者模式是一种将数据库操作与数据结构分离的设计模式。访问者模式的基本思想 软件系统中拥有一个由许多对象构成的、比较稳定的对象结构,这些对象的类都拥有一个accept方法用来接受访问者对象的访问。访问者是一个接口,它拥有一个visit方法,这个方法对访问的对象结构中不同类型的元素 做出不同的处理 。在对象结构的一次访问方法中,我们遍历整个对象结构,对每一个元素...原创 2018-12-22 10:05:03 · 375 阅读 · 0 评论 -
android设计模式之备忘录模式
备忘录模式的使用场景1.需要保存一个对象在某一个时刻的状态或部分状态。2.如果用一个接口来让其他对象得到这些状态,将会暴露对象的实现细节并破坏对象的封装性,一个对象不希望外界直接访其内部状态,通过中间对象可以访问其内部状态。 1.Originator:负责创建一个备忘录,可以记录、恢复自身的内部状态。同时Originator还可以根据需要决定Memento存储自身哪些内部...原创 2018-12-16 09:29:26 · 926 阅读 · 1 评论 -
Android源码设计模式之模板方法模式
在面向对象开发中,通常会遇到这样一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是某些步骤的具体实现是未知的,或者说某些步骤的实现是会随着环境的变化而改变的,例如,执行程序的流程大致如下:1.检查代码的正确性;2.链接相关的类库;3.编译相关的代码;4.执行程序;对于不同的程序设计语言,上述4个步骤是不一样的,但是,它们的执行流程是固定的,这类问题的解决...原创 2018-12-20 19:39:26 · 213 阅读 · 0 评论 -
Android设计模式之观察者模式
观察者模式使用率较高,因为这个模式最重要的作用就是解耦,将观察者和被观察者解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。观察者模式的定义定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。观察者模式的使用场景关联行为场景,需要注意的是,关联行为是可拆分的,而不是“组合”关系。事件多级触发场景。跨系统的消息交换场景,如消息...原创 2018-12-15 10:12:01 · 252 阅读 · 0 评论 -
Android设计模式之命令模式
命令模式是行为型设计模式之一,命令模式大概是将一系列的方法调用封装,用户只需要调用一个方法执行,那么所有这些被封装的方法就会被挨个执行调用。命令模式的定义将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式的使用场景1.需要抽象出待执行的动作,然后以参数的形式提供出来——类似于过程设计中的回调机制,而命令模式正...原创 2018-12-09 10:45:01 · 389 阅读 · 0 评论 -
mtk短信接收流程
短信接收流程1:从接收到短信插入数据库中handleSmsReceived方法中的逻辑: Log分析(短信接收流程):study_message: SmsReceiver_onReceiveWithPrivilege:action:android.provider.Telephony.SMS_DELIVER,privileged:truestudy_message...原创 2019-01-07 18:42:35 · 777 阅读 · 0 评论 -
彩信发送流程
发送彩信基本流程:Log分析:study_message: sendMessagestudy_message: WorkingMessage_send:recipientsInUI=18862631722,subId=1study_message: WorkingMessage_sendMmsWorker,mmsUri:content://mms/drafts/11stu...原创 2019-01-13 11:34:21 · 2623 阅读 · 1 评论 -
android 深入属性动画
Android3.0之前,Android提供了几种动画类型:View Animation、Drawable Animation、Property Animation。View Animation:比较简单。不过只能支持简单的缩放、平移、旋转、透明度几个基本的动画,且具有一定的局限性。例如:希望View有一个颜色的切换动画,比如希望使用3D旋转动画,希望动画停止时,View的位置就是当前位置...原创 2019-02-14 10:10:10 · 363 阅读 · 0 评论 -
Activity启动过程中Activity的生命周期方法的调用
在Android系统启动时,第一个启动起来的进程就是zygote进程,然后由zygote启动SystemServer,然后就是启动ActivityManagerService、WindowManagerService等系统核心服务,这些服务承担着整个Android系统与客户端交互的重担。zygote除了启动系统服务与进程外,普通的用户进程也由zygote进程fork而来,当一个应用进程启动起来后,...原创 2019-02-13 16:11:20 · 2142 阅读 · 0 评论 -
android 深入理解Android消息机制
Messsage、MessageQueue、Looper、Handler的工作原理就像工厂的生产线,Looper就像发送机,MessageQueue相当于传送带,Handler相当于工人,Message相当于待处理的产品。如下图: 主线程looper创建过程: #ActivityThreadpublic static void main(String[] ...原创 2019-02-13 10:56:40 · 407 阅读 · 0 评论 -
android RecyclerView的设计与实现
RecyclerView的设计与实现public class RecyclerView extends ViewGroup implements ScrollingView, NestedScrollingChild { /**(设置新适配器以按需提供子视图。) * Set a new adapter to provide child views on demand. ...原创 2019-02-12 15:18:50 · 469 阅读 · 0 评论 -
android WindowManagerService
WindowManagerService是一个系统服务,Android framework层主要是由它和另外一个系统服务ActivityManagerService还有View所构成,这3个模块穿插交互在整个framework中,掌握了它们之间的关系以及每一个步骤的逻辑,你对framework就至少了解了百分之五十了。WindowManagerService创建过程: 状态栏添...原创 2019-02-12 10:29:12 · 536 阅读 · 0 评论 -
android NavigationView解析
NavigationView实际上是一个FrameLayout,这个FrameLayout中又包含了一个RecyclerView。如果用户设置了Header布局,那么NavigationView就把这个Header作为这个RecyclerView的第一个Item View,在Header的下面就是菜单列表。通过这种封装使得构建用户菜单变得非常简单,而不需要用户每次都通过RecyclerView手动...原创 2019-02-11 14:17:37 · 1605 阅读 · 0 评论 -
信息应用 彩信UI的修改以及信息列表搜索总结
彩信UI的修改彩信UI的修改是整个信息需求中改动最大的部分,这里不描叙彩信UI是如何修改(UI的修改说白就是自定义控制而已,没啥说的),而是着重描叙“在哪里修改”。这里依旧以添加图片为例,ComposeMessageActivity.addImage会调用WorkingMessage.setAttachment来添加附件,添加后会有个回调:mStatusListener.onAttachmen...原创 2019-02-16 10:46:08 · 316 阅读 · 0 评论 -
手机ROM 信息应用发送,接收流程总结
基本功能流程这部分内容主要描叙短彩信发送与接收相关流程以及彩信解析的相关流程,在这里只描叙了一些主要的节点,忽略了不少中间的过程,否则篇幅无法控制了。短信发送流程在短信发送界面点击发送按钮后(ComposeMessageActivity响应OnClick),ComposeMessageActivity首先会对一些相关条件进行check(例如发件人是否有效等),然后会调用sendMess...原创 2019-02-15 15:11:05 · 510 阅读 · 0 评论 -
android PackageManagerService
(PMS),顾名思义,其作用就是对我们的apk安装包进行管理服务,作为Android在java层的服务之一,其与所有其他的服务一样都是由SystemServer所启动的。package com.android.server;public final class SystemServer {}#SystemServer /** * The main entry p...原创 2019-02-15 09:47:50 · 824 阅读 · 0 评论 -
android广播这订阅、发布的过程
BroadcastReceiver是Android四大组件之一。它作为应用内、进程间的一种重要通信手段,能够将某个消息通过广播的形式 传递给它注册的对应广播接收器的对象,接收对象需要通过Context的registerReceiver函数注册到AMS中,当通过sendBroadcast发送广播时,所有注册了对应的IntentFilter的BroadcastReceiver对象就会接收到这个消息,B...原创 2019-02-03 22:25:45 · 646 阅读 · 0 评论 -
android 深入理解WindowManager
所有需要显示到屏幕上的内容(包括Activity等)都是通过WindowManager来操作的,看来WindowManager是一个非常重要的子系统,这就是我们常说的WMS(WindowManager Service)。我们只关心WindowManager和WindowManagerService(后续简称WMS)、Surface、SurfaceFlinger等建立关联以及交互的一个基本过程。...原创 2019-02-02 10:01:22 · 557 阅读 · 0 评论 -
Android中的Binder跨进程通信机制与AIDL
在Code中,两个对象直接相互访问的前提是这两个对象都存在于相同的内存地址空间中,如果两个对象分别存在于两个不同的进程中,比如上面我们所说的ActivityManager和ActivityManagerService,那么这两个对象是不能直接调用的,就需要使用一种跨进程通信技术,使存在于两个不同进程的对象能够相互访问,传统的跨进程通信方式:Socket、信号量、管道、共享内存、消息队列等。Bi...原创 2019-02-02 09:30:35 · 2780 阅读 · 0 评论 -
android MVP应用架构模式
MVP模式的全称是:Model View Presenter MVP模式解除View与Model的耦合,MVP模式解除View与Model的耦合,同时又带来了良好的可扩展性、可测试性,保证了系统的整洁性、灵活性。可能对于简单应用来说,MVP稍显麻烦,各种各样的接口与概念,使得整个应用充斥着零散的接口,但是对于比较复杂的应用来说,MVP是一种良好的架构模式,它能够非常好的...原创 2019-01-27 18:24:08 · 270 阅读 · 0 评论 -
android 深入理解LayoutInflater
@SystemService(Context.LAYOUT_INFLATER_SERVICE)public abstract class LayoutInflater {... ...}static { ... ...registerService(Context.LAYOUT_INFLATER_SERVICE, LayoutInflater.class, ...原创 2019-02-01 14:08:46 · 284 阅读 · 0 评论 -
android Intent的查找与匹配
App信息表的构建在Android开发中,Intent及其重要,它是各个组件、进程之间通信的纽带。系统如何通过Intent来查找对应的组件?在第一章中,系统启动之后就会注册各种系统服务,如WindowManagerService、ActivityManagerService等,其中就有一个PackageManagerService(PMS)。PMS启动之后,会扫描系统中已安装的apk目...原创 2019-02-01 10:07:16 · 787 阅读 · 0 评论 -
Android设计模式之解释器模式
解释器模式(Interpreter Pattern),是一种用的比较少的行为型设计模式,其提供了一种解释语言的语法或表达式的方式。该模式定义了一个表达式接口,通过该接口解释一个特定的上下文。解释器模式的定义给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言的句子。解释器模式的使用场景1.如果某个简单的语言需要解释执行,而且可以将该语言中的语句表示为...原创 2018-12-05 20:03:46 · 341 阅读 · 0 评论 -
Beyond Compare许可证密钥已被撤销解决方案
文件夹的目录:C:\Users\user\AppData\Roaming\Scooter Software\Beyond Compare 3 删除该文件夹下所有的文件。然后打开Beyond Compare,执行重新安装。原创 2018-12-02 10:49:30 · 818 阅读 · 0 评论 -
android设计模式之责任链模式
责任链模式介绍责任链模式(Iterator Pattern),是行为型设计模式之一。什么是“链”?我们将多个节点首尾相连所构成的模型称为链。将每一个节点看做是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从链式的首端发出,沿着链的路径依次传递给每一个节点对象,直到有对象处理这个请求为止,这种模式称为责任链模式。责任链模式的定义使多个对象都有机会处理请求,从而避免了请求的发送者和...原创 2018-12-02 09:50:25 · 223 阅读 · 0 评论 -
使用openFileInput和openFileOutput实现Android平台的数据存储
基于文件流的读取与写入是Android平台上的数据存取方式之一。在Android中,可以通过Context.openFileInput和Context.openFileOutput来分别获取FileInputStream和FileOutputStream。openFileInput(String fileName); 打开应用程序私有目录下的指定私有文件以读入数据,返回一个FileIn原创 2016-03-14 23:07:03 · 9886 阅读 · 3 评论 -
总结android:scaleType的使用
总结android:scaleType的使用原创 2016-03-13 17:22:37 · 572 阅读 · 0 评论 -
消除Bitmap图片的锯齿
消除Bitmap图片的锯齿原创 2016-04-07 00:03:17 · 2958 阅读 · 0 评论