自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术老鸟仍在坚持着,大家一起加油

终于有时间可以做个系统的技术总结和记录了,方便自己日后查阅,也希望能帮到更多的朋友。现在很难,以后会更难,但我们仍要不断学习充电,大家共勉吧。本人博客将主要涉及以下大的模块,安卓应用,安卓系统框架,性能等

  • 博客(40)
  • 资源 (23)
  • 收藏
  • 关注

原创 Android S分屏相关组件总结

总的来说,它们共同协作,实现了分屏模式的管理、窗口的显示和交互。

2023-11-30 09:27:39 286

原创 跟窗口操作常用的几个方法

在Android的View.java文件中,有几个方法用于处理窗口和显示相关的操作,它们是 getWindowToken() , getWindowId(), getApplicationWindowToken() 和 getDisplay()。getWindowToken() 方法返回当前View所属的窗口的令牌,可以用于执行与窗口相关的操作,如显示或隐藏窗口。通过使用这些方法,可以获取窗口和显示的信息,并执行相应的操作,例如显示或隐藏窗口,处理多屏幕设备上的显示逻辑等。

2023-11-23 08:49:21 54

原创 Choreographer

在Android框架中,Choreographer(舞台监督)是一个用于管理和协调UI线程上的动画和绘制操作的系统组件。或许我们大概清楚,但不一定能表达清楚。

2023-10-21 12:00:52 399

原创 AndroidStudio使用gradle出现Could not download... 或unable to resolve dependency for...

AndroidStudio使用gradle出现Could not download... 或unable to resolve dependency for...第一步第二步第三步第一步将 gradle.properties 文件 下配置的所有网络代理都注释掉 。 (mac 下通过终端 open .gradle 命令打开 。 windows 下通过 C:\users{user name}.gr...

2020-02-04 17:31:17 1983

原创 String, StringBuffer, StringBuilder

1 String(1) String的创建机理由于String在Java世界中使用过于频繁,Java为了避免在一个系统中产生大量的String对象,引入了字符串常量池。其运行机制是:创建一个字符串时,首先检查池中是否有值相同的字符串对象,如果有则不需要创建直接从池中刚查找到的对象引用;如果没有则新建字符串对象,返回对象引用,并且将新创建的对象放入池中。但是,通过new方法创建的String对象...

2019-06-12 00:49:01 112

原创 强引用、软引用、弱引用、虚引用

在Java语言中,除了基本数据类型外,其他的都是指向各类对象的对象引用;Java中根据其生命周期的长短,将引用分为4类。1 强引用特点:我们平常典型编码Object obj = new Object()中的obj就是强引用。通过关键字new创建的对象所关联的引用就是强引用。 当JVM内存空间不足,JVM宁愿抛出OutOfMemoryError运行时错误(OOM),使程序异常终止,也不会靠随意回...

2019-06-05 19:17:05 127

原创 final、finally、finalize

1. final修饰类:不可被继承修饰方法:不可重写修饰变量:不可修改,只能约束引用不可以被再次赋值。匿名内部类访问局部变量时需要使用 final,因为 Innerclass 实际会 copy 一份局部变量,final 可以防止出现数据一致性问题2. finally:Java 保证重点代码一定要被执行的机制,try - finally,除非在 finally 前执行了 System.exi...

2019-06-05 18:01:36 111

原创 Exception和Error

Exception和Error都继承了Throwable类,在java中只有Throwable类的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成部分。Exception和Error体现了java平台设计者对不同异常情况的分类,Exception是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。Error是指在正常情况下,不大可能出现的情况,...

2019-06-05 10:30:58 276

原创 对Java平台的理解

“一次编译、到处运行”说的是Java语言跨平台的特性,Java的跨平台特性与Java虚拟机的存在密不可分,可在不同的环境中运行。比如说Windows平台和Linux平台都有相应的JDK,安装好JDK后也就有了Java语言的运行环境。其实Java语言本身与其他的编程语言没有特别大的差异,并不是说Java语言可以跨平台,而是在不同的平台都有可以让Java语言运行的环境而已,所以才有了Java一次编译,...

2019-06-04 18:30:57 84

原创 仿微信语音对话实现

要实现下面的布局(先思考下如何实现,看似简单,或许会有所收获) <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.example.weixinrecorder.view.AudioReco...

2018-03-09 09:31:54 1012

原创 IntentService——异步的,会自动停止的服务

  服务默认运行在主线程当中,如果要处理耗时操作,就必须开启子线程进行相关逻辑处理。同时,由于服务一旦启动,就会一直处于运行状态,必须调用stopService()或stopSelf()方法才能让服务停止。所以要实现让一个服务在执行完毕后自动停止的功能,在onStartCommand()方法中可以这样写: new Thread(new Runnable() { ...

2018-03-06 17:43:51 2243

原创 前台服务

  服务几乎都是在后台运行的,但由于其系统优先级比较低,当系统出现内存不足的情况下,就有可能回收掉正在后台运行的服务。如果希望服务一直保持运行状态,可以考虑使用前台服务。   前台服务跟后台服务最大的区别在于,它会一直有一个正在运行的图标在系统的状态栏显示,下拉状态状态栏后可以看到更加详细的信息,非常类似通知的效果。public class MyService extends Serv...

2018-03-06 16:50:44 177

原创 活动(Activity)和服务(Service)进行通信模板

  比如现在想在MyService里提供一个下载功能,然后在活动中可以决定何时开始下载,以及随时查看下载进度。实现这个功能的思路是创建一个专门的Binder对象来对下载功能进行管理。代码如下所示:public class MyService extends Service{ private DownloadBinder mBinder = new DownloadBinder...

2018-03-06 16:01:20 996

原创 通用网络请求实现之HttpURLConnection和OkHttp

  网络请求是一个耗时操作,所以我们需要开启一个子线程来发起网络请求,同时,由于耗时逻辑都是在子线程里进行的,那么服务器响应的数据就无法返回,这时我们应该考虑使用Java的回调机制。public interface HttpCallbackListener{ void onFinish(String response); void onError(Exception e);}...

2018-03-05 18:56:55 3486

原创 json解析的常用方式(不使用第三方库)

  解析json数据有很多种方法,可以使用官方提供的JSONObject,也可以使用谷歌的开源库GSON,另外,一些第三方的开源库如Jackson,FastJSON等也非常不错。接下来主要学习前两种解析方式的用法。JSONObjectjson数据:[{"id":"5", "version":"2.1", "name":"c book"}, {"id":&

2018-03-05 17:13:43 2302 1

原创 OkHttp基本使用

添加依赖库 compile 'com.squareup.okhttp3:okhttp:3.4.1' //可以自行修改成最新版本Get请求 OkHttpClient client = new OkHttpClient();Request request = new Request.Builder()          .url("http://www.baidu.com") //可以连...

2018-03-05 13:39:48 128

原创 WebView最基本设置使用说明

...WebView webView = (WebView)findViewById(R.id.web_view);webView.getSettings().setJavaScriptEnabled(true);webView.setWebViewClient(new WebViewClient());webView.loadUrl("http://www.baidu.com");.....

2018-03-05 11:48:38 260

原创 android调用摄像头拍照

  该功能使用到的场景比较多,下面能过一个实例介绍其使用,布局比较简单只有两个控件,上面Button下面ImageView,Button用于打开摄像头进行拍照,而ImageView用于将拍到的图片显示出来。public class CameraTestActivity extends AppCompatActivity { public static final int TAKE...

2018-03-05 11:12:28 195

原创 android多媒体之播放音视频

播放音频   在Android中播放音频文件一般都是使用MediaPlayer类来实现,它对多种格式的音频文件提供了非常全面的控制方法。常用的控制方法有:setDataSource(), prepare(), start(), pause(), reset()(将MediaPlayer对象重置到刚刚创建的状态), seekTo(), stop()(停止播放音频,调用这个方法后的MediaPlay...

2018-03-03 00:56:36 2072

原创 通知的使用

  相比于广播接收器和服务,在活动里创建通知的场景还是比较少的,一般只有当程序进入到后台的时候我们才需要使用通知。但是无论在哪里创建通知,整体的步骤都是相同的。NotificationManager manager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);  由于几乎Android系统的...

2018-03-02 10:41:52 227

原创 内容提供器(ContentProvider)的安全性

内容提供器是如何做到保证隐私数据不会泄露出去的?   因为内容提供器的良好机制,所有的CRUD操作都一定要匹配到相应的内容URI格式才能进行,而我们当然不可能向UriMatcher中添加隐私数据的URI,所以这部分数据根本无法被外部程序访问到,安全问题也就不存在了。...

2018-03-01 12:52:10 870

原创 程序运行时申请权限

  大家都知道,Android6.0系统的新特性是运行时权限,为简单起见,下面以CALL_PHONE这个权限为例来示例如何使用。   CALL_PHONE这个权限是编写拨打电话的功能是需要声明的,因为拨打电话会涉及用户手机的资费问题,因而被列为危险权限。   首先,在清单文件AndroidManifest.xml中添加以下权限声明:<uses-permission android:n...

2018-03-01 03:58:41 372

原创 android创建数据库,表整体流程

  实例化SQLiteOpenHelper,调用getWritableDatabase() 或 getReadableDatabase(),当检测到当前程序中还没有创建指定的数据库时,于是会创建数据库并调用SQLiteOpenHelper实例中的onCreate()方法,这个方法中,我们通常会使用SQLiteDatabase调用execSQL来创建数据库表,此时,数据库和表就都创建好了。当检测到要...

2018-02-28 16:06:48 1350

原创 瞬时数据,android中的数据持久化及方式

  瞬时数据:指那些存储在内存当中,有可能会因为程序关闭或其它原因导致内存被回收而丢失的数据。   数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使手机或电脑关机的情况下,这些数据仍然不会丢失。   保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则提供了一种机制可以让数据在瞬时状态和持久状态之间进行转换。   Android系统中主要...

2018-02-28 11:32:39 517

原创 本地广播

  首先,我们都知道广播是一种跨进程的通信方式,这一点从应用程序可以接收系统广播就可以看出来。   其次,我们通常发送和接收的广播全部属于系统全局广播,即本程序发出的广播可以被其它任何应用程序接收到,并且本程序也可以接收到来自其它任何应用程序发送的广播。这样很容易引起安全问题,比如说我们发送的携带关键性数据的广播可能会被其它应用程序截获,或者其它的应用程序可能会不停向我们的广播接收器发送垃圾广播...

2018-02-27 16:38:17 398

原创 让一份程序同时适应手机和平板,动态加载布局的技巧

  由于平板电脑的屏幕足够大,我们会发现很多应该采用了双页模式即程序在左侧面板上显示一个包含子项的列表,右侧面板显示内容,而手机屏幕一次只能显示一页内容,因此两个页面需要分开显示。   为了让碎片发挥更大的空间,我们可以考虑如何才能让程序根据设备的屏幕大小和分辨率在运行的时候动态加载哪个布局,那就是使用限定符。   比如:   单页模式:res/layout/activity_main,xm...

2018-02-27 10:49:01 744

原创 碎片(Fragment)的状态与附加回调

跟活动一样,碎片在其生命周期内也会经历运行状态,暂停状态,停止状态以及销毁状态这四种状态,下面将分别进行说明。运行状态:   碎片可见并且它所关联的活动正处于运行状态时。暂停状态:   当一个活动进入暂停状态即由于另一个未占满屏幕的活动被添加到栈顶时,与它相关联的可见碎片就会进入暂停状态。停止状态:   当一个活动进入停止状态时,与它相关联的碎片就会进入停止状态。或者通过调用Fra...

2018-02-27 02:22:12 400

原创 活动与碎片之间以及碎片与碎片之间进行通信

活动->碎片DetailFragment fragment = (DetailFragment)getFragmentManager().findFragmentById(R.id.detail_fragment);碎片->活动MainActivity activity = (MainActivity)getActivity();碎片->碎片思路:...

2018-02-27 01:43:57 663

原创 RecyclerView由来及使用模板

为什么要使用RecyclerView   ListView由于其强大的功能,直到今天仍有不计其数的程序在使用ListView。但是ListView也有自身的缺陷。比如:如果不使用一些技巧来提升它的运行效率,那么它的运行效率会非常差;ListView的扩展性也不够好,目前只能实现纵向滚动的效果,如果我们有横向滚动的需求,那么ListView就无法实现了。   为此,官方推荐使用一个功能更加强大...

2018-02-26 17:52:40 175

原创 ListView滑动性能优化三步曲

  我们将问题定位在ListView的适配器中的getView(int position, View convertView, ViewGroup parent)中:   1. 最初的写法即加载子项布局View,获取View中的控件实例,对各控件实例进行赋值,最后再返回这个View。这样的写法每次都会重复加载布局,运行效率最低。   2. 仔细观察会发现,getView()方法中有一个conv...

2018-02-26 10:46:43 207

原创 LayoutInflater的inflate()方法参数说明

  这里以ListView的适配器为例说明,在适配器的getView()方法中,我们在加载ListView的子项布局时,会这样写:   View view = LayoutInflater.from(getContext()).inflate(resourceId, parent, false);   前两个参数我们已经知道是什么意思了,第三个参数指定成false,表示只让我们在父布局中声明的...

2018-02-26 09:36:24 897 3

原创 左中右结构标题栏实现技巧

标题栏: 两种实现方式: 1. 使用RelativeLayout(这种方式在此不实现) 2. 使用LinearLayout(重点介绍)<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" ...

2018-02-25 01:43:43 835

原创 百分比布局

       在常用的布局LinearLayout, RelativeLayout, FrameLayout中,只有LinearLayout支持使用layout_weight属性来实现按比例指定控件大小的功能,其它两种布局都不支持。        为此,Android引入了一种全新的布局方式来解决这个问题——百分比布...

2018-02-25 00:55:04 246

原创 快速判断当前所在活动,快速退出程序

如何知道当前在哪个活动 新建BaseActivity(继承自AppCompatActivity)但不需要注册,在onCreate()方法中写Log.e(“BaseActivity”, getClass().getSimpleName()),最后修改让BaseActivity成为项目中所有活动的基类。如何随时随地退出程序2.1. 编写活动管理器public class Activit...

2018-02-22 19:00:07 130

原创 启动模式之singleTask和singleInstance之间的关联

不同于其它3种启动模式,指定为singleInstance模式的活动会启用一个新的返回栈来管理这个活动,其实如果singleTask模式指定了不同的taskAffinity,也会启动一个新的返回栈。附:如何解决活动实例共享? 每个应用程序都会有自己的返回栈,同一个活动在不同的返回栈中入栈时必然是创建了新的实例,而在singleInstance模式下会有一个单独的返回栈来管理这个活动,不管...

2018-02-22 17:19:58 713

原创 Android Studio快速补全日志及生成TAG

在方法外即定义变(常)量的地方,输入logt,然后按下Tab键,这时就会以当前的类名作为值自动生成一个TAG常量。在方法中输入logd,然后按下Tab键,就会自动补全一条debug级别的日志,其它级别以此类推。...

2018-02-13 05:24:07 6109

原创 android5.0及以上版本特性

android5.0 使用ART运行环境替代了Dalvik虚拟机,大大提升了应用的运行速度,还提出Material Design的概念来优化应用的界面设计。除此之外,还推出Android Wear,Android Auto,Android TV系统,从而进军可穿戴设备,汽车,电视等全新领域。android6.0 加入运行时权限功能android7.0 加入多窗口模式功能...

2018-02-12 18:31:18 382

转载 Android学习路线指南

前言看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了,但是中高级的Android技术人才仍然稀缺“,这的确不假,从我在百度所进行的一些面试来看,找一个适合的高级Android工程师的确不容易,一般需要进行大量的面试才能挑选出一个比较满意的。为什么中高级Android程序员不多呢?这是一个问题,我不好回答,但是我想写一篇文章来描述下Android的学习路线,期望可以帮助更多的

2018-01-29 11:04:22 195

转载 面试笔试综合

01Activity生命周期?这几乎是个老少咸宜,永远不会过时的问题,而且极有可能是第一个问题。这个问题当然没什么好讲的啦,死记硬背是没什么用的了,关键是理解。本人就曾遇到这个问题的变种问题,问onStart(),与onResume()有什么区别?如果面试官抛出这个问题,是不是有点措手不及。今天又听说有同学遭遇了更变态的问题:什么情况下Activity走了onCreat(),而不走onStar

2018-01-26 10:49:16 172

原创 面试笔试1

1.请解释下在单线程模型中Message,Handler,Message Queue,Looper之间的关系。  拿主线程来说,主线程启动时会调用Looper.prepare()方法,会初始化一个Looper,放入Threadlocal中接着调用Looper.loop()不断遍历Message Queue。  Handler的创建依赖与当前线程中的Looper,如果当前线程没有L

2018-01-25 11:10:25 210

仿微信语音对话实现

仿微信语音对话实现 仿微信语音对话实现 仿微信语音对话实现

2018-03-08

Android开发艺术探索之高清版本

android开发艺术探索超清版(Word转换成PDF的,非常清晰) 《Android开发艺术探索》是一本Android进阶类书籍,采用理论、源码和实践相结合的方式来阐述高水准的Android应用开发要点。《Android开发艺术探索》从三个方面来组织内容。第一,介绍Android开发者不容易掌握的一些知识点;第二,结合Android源代码和应用层开发过程,融会贯通,介绍一些比较深入的知识点;第三,介绍一些核心技术和Android的性能优化思想。

2018-02-02

Android小闹钟项目源码

Android小闹钟项目源码,欢迎下载,互相学习。 Android小闹钟项目源码,欢迎下载,互相学习。

2017-12-31

Android源码设计模式解析与实战.PDF(高清完整版)

第1章 走向灵活软件之路——面向对象的六大原则1 1.1 优化代码的第一步——单一职责原则1 1.2 让程序更稳定、更灵活——开闭原则5 1.3 构建扩展性更好的系统——里氏替换原则12 1.4 让项目拥有变化的能力——依赖倒置原则13 1.5 系统有更高的灵活性——接口隔离原则16 1.6 更好的可扩展性——迪米特原则18 1.7 总结22 第2章 应用最广的模式——单例模式23 2.1 单例模式介绍23 2.2 单例模式的定义23 2.3 单例模式的使用场景23 2.4 单例模式UML类图23 2.5 单例模式的简单示例24 2.6 单例模式的其他实现方式26 2.6.1 懒汉模式26 2.6.2 Double CheckLock ( DCL )实现单例26 2.6.3 静态内部类单例模式27 2.6.4 枚举单例28 2.6.5 使用容器实现单例模式28 2.7 Android源码中的单例模式29 2.8 无名英雄——深入理解LayoutInflater33 2.9 运用单例模式40 2.10 总结42 第3章 自由扩展你的项目——Builder模式43 3.1 Builder模式介绍43 3.2 Builder模式的定义43 3.3 Builder模式的使用场景43 3.4 Builder模式的UML类图43 3.5 Builder模式的简单实现44 3.6 Android源码中的Builder模式实现46 3.7 深入了解WindowManager 52 3.8 Builder模式实战59 3.9 总结64 第4章 使程序运行更高效——原型模式66 4.1 原型模式介绍66 4.2 原型模式的定义66 4.3 原型模式的使用场景66 4.4 原型模式的UML类图66 4.5 原型模式的简单实现67 4.6 浅拷贝和深拷贝69 4.7 Android源码中的原型模式实现72 4.8 Intent的查找与匹配74 4.8.1 App信息表的构建74 4.8.2 精确匹配80 4.9 原型模式实战83 4.10 总结85 第5章 应用最广泛的模式——工厂方法模式87 5.1 工厂方法模式介绍87 5.2 工厂方法模式的定义87 5.3 工厂方法模式的使用场景87 5.4 工厂方法模式的UML类图87 5.5 模式的简单实现90 5.6 Android源码中的工厂方法模式实现93 5.7 关于onCreate方法95 5.8 工厂方法模式实战102 5.9 总结105 第6章 创建型设计模式——抽象工厂模式106 6.1 抽象工厂模式介绍106 6.2 抽象工厂模式的定义106 6.3 抽象工厂模式的使用场景106 6.4 抽象工厂模式的UML类图106 6.5 抽象工厂方法模式的简单实现109 6.6 Android源码中的抽象工厂方法模式实现112 6.7 总结116 第7章 时势造英雄——策略模式117 7.1 策略模式介绍117 7.2 策略模式的定义117 7.3 策略模式的使用场景117 7.4 策略模式的UML类图118 7.5 策略模式的简单实现118 7.6 Android源码中的策略模式实现123 7.6.1 时间插值器123 7.6.2 动画中的时间插值器124 7.7 深入属性动画128 7.7.1 属性动画体系的总体设计128 7.7.2 属性动画的核心类介绍128 7.7.3 基本使用129 7.7.4 流程图130 7.7.5 详细设计131 7.7.6 核心原理分析131 7.8 策略模式实战应用142 7.9 总结144 第8章 随遇而安——状态模式145 8.1 状态模式介绍145 8.2 状态模式的定义145 8.3 状态模式的使用场景145 8.4 状态模式的UML类图145 8.5 状态模式的简单示例146 8.6 Wi—Fi管理中的状态模式150 8.7 状态模式实战159 8.8 总结164 第9章 使编程更有灵活性——责任链模式165 9.1 责任链模式介绍165 9.2 责任链模式的定义165 9.3 责任链模式的使用场景165 9.4 责任链模式的UML类图165 9.5 责任链模式的简单实现170 9.6 Android源码中的责任链模式实现173 9.7 责任链模式实战178 9.8 总结181 第10章 化繁为简的翻译机——解释器模式182 10.1 解释器模式介绍182 10.2 解释器模式的定义182 10.3 解释器模式的使用场景183 10.4 解释器模式的UML类图184 10.5 解释器模式的简单实现185 10.6 Android源码中的解释器模式实现189 10.7 关于PackageManagerService 195 10.8 总结203 第11章 让程序畅通执行——命令模式204 11.1 命令模式介绍204 11.2 命令模式的定义204 11.3 命令模式的使用场景204 11.4 命令模式的UML类图204 11.5 命令模式的简单实现207 11.6 Android源码中的命令模式实现211 11.7 Android事件输入系统介绍214 11.8 命令模式实战216 11.9 总结223 第12章 解决、解耦的钥匙——观察者模式224 12.1 观察者模式介绍224 12.2 观察者模式的定义224 12.3 观察者模式的使用场景224 12.4 观察者模式的UML类图224 12.5 观察者模式的简单实现225 12.6 Android源码分析227 12.7 观察者模式的深入拓展230 12.8 实战238 12.9 总结245 第13章 编程中的“后悔药”——备忘录模式247 13.1 备忘录模式介绍247 13.2 备忘录模式的定义247 13.3 备忘录模式的使用场景247 13.4 备忘录模式的UML类图247 13.5 备忘录模式的简单示例248 13.6 Android源码中的备忘录模式250 13.7 深度拓展257 13.7.1 onSaveInstanceState调用的时机257 13.7.2 使用V4包存储状态的bug257 13.8 实战260 13.9 总结267 第14章 解决问题的“第三者”——迭代器模式268 14.1 迭代器模式介绍268 14.2 迭代器模式的定义268 14.3 迭代器模式的使用场景268 14.4 迭代器模式的UML类图268 14.5 模式的简单实现271 14.6 Android源码中的模式实现275 14.7 总结277 第15章 抓住问题核心——模板方法模式278 15.1 模板方法模式介绍278 15.2 模板方法模式的定义278 15.3 模板方法模式的使用场景278 15.4 模板方法模式的UML类图278 15.5 模板方法模式的简单示例279 15.6 Android源码中的模板方法模式281 15.7 深度拓展283 15.8 模板方法实战296 15.9 总结299 第16章 访问者模式301 16.1 访问者模式介绍301 16.2 访问者模式的定义301 16.3 访问者模式的使用场景301 16.4 访问者模式的UML类图301 16.5 访问者模式的简单示例302 16.6 Android源码中的模式306 16.7 访问者模式实战309 16.8 总结316 第17章 “和事佬”——中介者模式317 17.1 中介者模式介绍317 17.2 中介者模式的定义318 17.3 中介者模式的使用场景318 17.4 中介者模式的UML类图318 17.5 中介者模式的简单实现320 17.6 Android源码中的中介者模式实现324 17.7 中介者模式实战326 17.8 总结329 第18章 编程好帮手——代理模式330 18.1 代理模式介绍330 18.2 代理模式的定义330 18.3 代理模式的使用场景330 18.4 代理模式的UML类图330 18.5 代理模式的简单实现332 18.6 Android源码中的代理模式实现336 18.7 Android中的Binder跨进程通信机制与AIDL 18.8 代理模式实战 18.9 总结 第19章 物以类聚——组合模式 19.1 组合模式介绍 19.2 组合模式的定义 19.3 组合模式的使用场景 19.4 组合模式的UML类图 19.5 组合模式的简单实现 19.6 Android源码中的模式实现 19.7 为什么ViewGroup有容器的功能 19.8 总结 第20章 得心应手的“粘合剂”——适配器模式 20.1 适配器模式介绍 20.2 适配器模式的定义 20.3 适配器模式的使用场景 20.4 适配器模式的UML类图 20.5 适配器模式应用的简单示例 20.5.1 类适配器模式 20.5.2 对象适配器模式 20.6 Android源码中的适配器模式 20.7 深度拓展 20.8 实战演示 20.9 总结 第21章 装饰模式 21.1 装饰模式介绍 21.2 装饰模式的定义 21.3 装饰模式的使用场景 21.4 装饰模式的UML类图 21.5 模式的简单实现 21.6 Android源码中的模式实现 21.7 Context与ContextImpl 21.8 模式实战 21.9 总结 第22章 对象共享,避免创建多对象——享元模式 22.1 享元模式介绍 22.2 享元模式定义 22.3 享元模式的使用场景 22.4 享元模式的UML类图 22.5 享元模式的简单示例 22.6 Android源码中的享元模式 22.7 深度拓展 22.7.1 深入了解Android的消息机制 22.7.2 子线程中创建Handler为何会抛出异常 22.8 总结 第23章 统一编程接口——外观模式 23.1 外观模式介绍 23.2 外观模式定义 23.3 外观模式的使用场景 23.4 外观模式的UML类图 23.5 外观模式的简单示例 23.6 Android源码中的外观模式 23.7 深度拓展 23.7.1 Android资源的加载与匹配 23.7.2 动态加载框架的实现 23.8 外观模式实战 23.9 总结 第24章 连接两地的交通枢钮——桥接模式 24.1 桥接模式介绍 24.2 桥接模式的定义 24.3 桥接模式的使用场景 24.4 桥接模式的UML类图 24.5 桥接模式的简单实现 24.6 Android源码中的桥接模式实现 24.7 关于WindowManagerService 24.8 桥接模式实战 24.9 总结 第25章 MVC的介绍与实战 25.1 MVC的起源与历史 25.2 MVC在Android中的实现 25.3 总结 第26章 MVP应用架构模式 26.1 MVP模式介绍 26.2 MVP模式的三个角色 26.3 与MVC、MVVM的区别 26.4 MVP的实现 26.5 MVP与Activity、Fragment的生命周期

2017-12-05

android气泡式对话列表

代码实现的是像handcent sms或者chomp sms那样的气泡短信样式,也是iphone上的气泡聊天模式。实现这种效果的重点是ListView的divider和listSelector

2014-09-14

多级列表ExpandableListView(模仿QQ)

通过该实例的学习,就可以知道QQ的界面是怎么做成的

2014-09-12

android的九宫格实现

通过这个简单的实例,可以帮助你学会使用GridView

2014-09-12

android4.0.*源码

将该压缩包解压,添加到project property->java build path->libraries>android 4.0->android.jar->source attachment中,即可在编写代码的同时,查看源码,非常之方便。

2014-08-14

android 多线程下载文件

该程序比较简单,但作为入门很实用,所用技术如多线程,进度条,流等,可以添加到自己的项目当中。

2014-07-17

深入浅出Hibernate

深入浅出Hibernate,从入门到精通,理论实践相结合

2014-04-26

spring精通

spring精通,spring很不错的由浅入深教程,理论实践相结合

2014-04-26

精通Struts

精通Struts.不错的struts深入教程,理论与实践相结合

2014-04-26

android类似天天动听的音乐播放器

类似天天动听的音乐播放器,基本功能,大家可以进一步扩展

2014-04-25

MyCalendar源码

MyCalendar源码,可以加深对Calendar使用的理解

2014-04-25

Android 学生信息管理系统

Android+SQlite 简单的《学生信息管理系统》(实现基本增删改查).

2014-04-25

Android的文件管理系统

基于Android的文件管理系统源代码,初学者必看

2014-04-25

android pdf阅读器

AndroidPdfViewer,android的pdf阅读器

2014-04-25

android 程序自动更新

android 程序自动更新,可以加在任何android应用里

2014-04-25

PhoneGap实战

PhoneGap实战 实例,原理+实践相结合

2014-04-25

android 重力感应

重力感应,很好的资料,对android重力感应会有深入的理解

2014-04-25

志愿选课算法分析与优化研究参考

志愿选课算法分析与优化研究参考,自己整理的参数资料

2014-04-25

深入理解Android----卷1

看深入理解Android-卷1,加深对android的理解,很适合入门

2014-04-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除