- 博客(82)
- 资源 (4)
- 收藏
- 关注
转载 Android APP架构心得
什么是架构在我看来,软件架构绝对不只是框架的堆砌,看我看来,架构是为了方便软件维护、扩展、安全性、切入性(我也不知道有没有人提出过这个关键字,因为的确很少看见,简单来说我这里说的切入性就是指一个以前没有接触过这个项目的人,能快速加入到这个项目中,对项目进行维护、修改和扩展)维护性一个好的软件(不一定是成功的软件,这里说的好只是程序员认为的代码方面)肯定是能方便维护的,出了问题能快速定位...
2018-07-19 11:08:29
1941
转载 架构设计中的基本原则
1、单一职责原则(Single Responsibility Principle)单一职责原则的优点有:可以降低类的复杂度,一个类只负责一项职责,其逻辑肯定要比负责多项职责简单的多;提高类的可读性,提高系统的可维护性;变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。2、依赖倒转原则(Dependence Inversion Pri...
2018-07-18 20:05:34
1407
转载 在Ubuntu 10.04下编译Android源码
1. 编译环境建立1)安装sun-java6-jdk:android使用java5编译,但是ubuntu10.04的更新源里已经没有sun-java6-jdk。我们可以更改android配置文件使用java6编译,经过试验可以通过。如下:10.04当中sun-jdk被移走了。android x86用的是sun-jdk,于是在官方的release notes:Sun Java moved to th...
2018-06-20 09:15:38
274
转载 zxing的使用及优化
二维码介绍zxing项目是谷歌推出的用来识别多种格式条形码的开源项目,项目地址为https://github.com/zxing/zxing,zxing有多个人在维护,覆盖主流编程语言,也是目前还在维护的较受欢迎的二维码扫描开源项目之一。zxing的项目很庞大,主要的核心代码在core文件夹里面,也可以单独下载由这个文件夹打包而成的jar包,具体地址在http://mvnrepository.co...
2018-06-20 09:15:31
1441
转载 15个Android通用流行框架大全
1. 缓存DiskLruCacheJava实现基于LRU的磁盘缓存2.图片加载Android Universal Image Loader一个强大的加载,缓存,展示图片的库Picasso一个强大的图片下载与缓存的库Fresco一个用于管理图像和他们使用的内存的库Glide一个图片加载和缓存的库3. 图片处理Picasso-transformations一个为Picasso提供多种图片变换的库Gli...
2018-06-20 09:15:28
424
转载 重构 改善既有代码的设计(二)
第三章 代码的坏味道分析什么时间需要重构从我们经验来看,没有任何度量规矩比得上一个见识广博者的直觉。Duplicated Code (重复代码)Long Method(过长函数)Large Class(过大的类)Long Parameter List (过长参数列)Divergent Change(发散式变化)Shotgun Surgery (散弹式修改)Feature Envy (依恋情结)Da...
2018-06-20 09:15:24
193
转载 如何完全退出android应用程序
Android应用程序开发中,如何完全退出android应用程序?网上朋友们也给出了各种答案,很多都是自己想的办法。如:android.os.Process.killProcess(android.os.Process.myPid());或:System.exit(0);还有推土机式,预先设置开始的空activity,关闭应用程序时定位到此activity,再逐一关闭等。诸如此类很多方法。这几天闲...
2018-06-20 09:15:18
536
转载 Android画图学习总结(一)——类的简介
首先,如何获取 res 中的资源数据包package:android.content.res主要类:ResourcesAndroid SDK中的简介:Class for accessing an application’s resources.Class for accessing an application’s resources. This sits on top of the asset ...
2018-06-20 09:15:12
149
转载 闹钟 AlarmManager PendingIntent
闹钟应用程序作为人 们日常常用的基本应用程序之一,其重要性不言而喻。在android系统中闹铃服务功能不仅仅对闹钟应用程序服务,最重要的是可以利用该闹铃服务功能提供的 唤醒能力来做定时器。这样即便应用程序没有运行或者是没有启动的情况下,只要其注册过闹铃,那么该闹铃到时间后,android系统可以自动将该应用程序启 动,这就是所谓的闹铃“唤醒“功能。在android系统中,底层系统提供了两种类型的时...
2018-06-20 09:15:07
238
转载 android背景选择器selector用法汇总
一.创建xml文件,位置:drawable/xxx.xml,同目录下记得要放相关图片http://schemas.android.com/apk/res/android">android:drawable="@drawable/pic1" />二.使用xml文件:1.方法一:在listview中配置android:listSelector="@drawable/xxx或者在listvi...
2018-06-20 09:15:01
309
原创 音视频技术研究总结
现在主流的第三方播放器都是基于FFmpeg开源库开发的。它几乎实现了所有的封装格式、传输协议以及音视频编解码功能,功能非常强大。不过FFmpeg比较复杂,研究透需要花费大量的时间,限于时间,从音视频基本概念入手,了解码率、帧率、视频格式、编码原理等,其次通过比较Android自身提供的音视频编解码和FFmpeg多媒体库的优缺点进一步了解FFmpeg,再通过阅读源码和API大致了解FFmpeg功能,...
2018-06-20 09:14:56
2218
转载 ScrollView反弹效果的实现
View中也有scrollBy和scrollTo这两个方法,但是ScrollView对scrollTo进行重写由于:public void scrollBy(int x, int y) {scrollTo(mScrollX + x, mScrollY + y);}View:public void scrollTo(int x, int y) {if (mScrollX != x || mScrol...
2018-06-20 09:14:50
170
转载 Android组件化开发实践
Android项目中代码量达到一定程度,编译将是一件非常痛苦的事情,短则一两分钟,长则达到五六分钟。Android studio推出instant run由于各种缺陷一般情况下是被关闭的……组件化开发可以有效降低代码模块的耦合度,使代码架构更加清晰,同时模块化的编译可以有效减少编译时间,当然总的编译时间是不会减少的,只是App模块化之后开发某个模块时,只需要编译特定模块,可以快速编译调试。原理组件...
2018-06-19 09:19:23
190
转载 Android中的Apk的加固(加壳)原理解析和实现
一、前言今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理。现阶段。我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk,结果被人反编译了,那心情真心不舒服。虽然我们混淆,做到native层,但是这都是治标不治本。反编译的技术在更新,那么保护Apk的技术就不能停止。现在网上有很多Apk加固的第三方平台,最有名的应当属于:爱...
2018-06-19 09:19:19
18393
5
转载 android热更新机制
Android 不仅系统版本众多,机型众多,而且各个市场都各有各的政策和审核速度,每次发布一个版本对于开发同学来讲都是一种漫长的煎熬。相比于 iOS 两三天就能达到 80% 的覆盖速度而言,Android 应用版本升级至少需要两周才能达到 80% 的升级率,严重阻碍了版本迭代速度。也导致市场上 App 版本分散,处理 bug 和投诉等也越来越麻烦。修复的 bug 需要等待下个版本发布窗口才能发布?...
2018-06-19 09:19:13
4170
1
转载 关于java文档注释添加url链接
因为之前没有认真系统学习过javadoc,看到@link直接认为是添加url,死活添加不上url链接,上google一查,果然理解错误,@link是为了方便注释比如我有两个方法getInt()和getInt(int i),如果getInt(int i)已经有了文档注释,那么我们可以利用@link来链接到getInt(int i)的文档注释@link 语法{@link package.class#...
2018-06-19 09:19:09
5571
转载 如何选择开源许可证?(转)
如何为代码选择开源许可证,这是一个问题。世界上的开源许可证,大概有上百种。很少有人搞得清楚它们的区别。即使在最流行的六种----GPL、BSD、MIT、Mozilla、Apache和LGPL----之中做选择,也很复杂。乌克兰程序员Paul Bagwell,画了一张分析图,说明应该怎么选择。这是我见过的最简单的讲解,只用两分钟,你就能搞清楚这六种许可证之间的最大区别。下面是我制作的中文版,请点击看...
2018-06-19 09:19:03
402
转载 Android开发——Android中常见的4种线程池(保证你能看懂并理解)
0.前言转载请注明出处:http://blog.csdn.net/seu_calvin/article/details/52415337使用线程池可以给我们带来很多好处,首先通过线程池中线程的重用,减少创建和销毁线程的性能开销。其次,能控制线程池中的并发数,否则会因为大量的线程争夺CPU资源造成阻塞。最后,线程池能够对线程进行管理,比如使用ScheduledThreadPool来设置延迟N秒后执行...
2018-06-19 09:18:14
192
转载 从零开始搭建架构实施Android项目
从零开始搭建架构实施Android项目我们先假设一个场景需求:刚有孩子的爸爸妈妈对用照片、视频记录宝宝成长有强烈的意愿,但苦于目前没有一款专门的手机APP做这件事。A公司洞察到市场需求,要求开发团队尽快完成Android客户端的开发。以下模拟团队和工作开展。团队情况:产品经理1人,Android开发2人,服务端开发2人,UI设计1人。开发周期:两个月。工作量:大约50个界面。隐含需求:考虑到用户群...
2018-06-19 09:17:57
277
转载 Android常用的数据结构
Android中一般使用的数据结构有java中的基础数据结构Set, List, Map。还有一些Android中特有的几个,SparseArray(使用Map时Key是int类型的时候可以用这个代替)等。先上一张数据结构类图,还是比较清晰的。Collection它是所有集合类的接口,Set和List也都实现Collection接口,基本需要操作的方法都定义在这里了。Set一般使用的有TreeSe...
2018-06-19 09:17:44
3572
转载 Android SDK开发技术分享
最近在工作中负责统一支付平台的SDK开发部分,就此总结下SDK开发的技术点、注意事项、与普通app开发的差别,作为自我总结,也作为公司内部互相学习的分享,希望有Android开发需求或者对Android有兴趣的同学(互相学习称为同学),多多关注,多多回复。一、SDK开发的概念Android SDK开发,指为第三方app开发提供功能性封装,提供文档(doc),实例(demo),封装包(jar/aar...
2018-06-19 09:17:27
13587
3
转载 Dagger2从入门到放弃再到恍然大悟
现在Dagger2在项目里用的越来越多了,最近花了些时间学习了一下Dagger2,这篇文章主要帮助理解Dagger2的注入实现过程,如有错误,还请指正!什么是Dagger2Dagger2是Dagger的升级版,是一个依赖注入框架,现在由Google接手维护。 恩,这里有个关键字依赖注入,因此我们得先知道什么是依赖注入,才能更好的理解Dagger2。依赖注入是面向对象编程的一种设计模式,其目的是为了...
2018-06-19 09:17:13
6416
转载 Android最便捷的屏幕适配
上述两个机器的分辨率差距挺大了,但是完美实现了适配,最为重要的是:再也不用拿着设计稿去想这控件的宽高到底取多少dp再也不用去为多个屏幕去写多个dimens再也不用去计算百分比了(如果使用百分比控件完成适配)再也不用去跟UI MM去解释什么是dp了你所要做的就是抄抄设计稿上面的px,直接写入布局文件。还有很多好处,比如上面的Item里面元素比较多,如果标识的比较全面,一个FrameLayout,里面...
2018-06-15 11:36:04
153
转载 即时通讯技术概述 (IMPP、IRCP、CPIM、SIMPLE、XMPP、XML、SIP、Jabbe
即时通讯技术(IM)支持用户在线实时交谈。如果要发送一条信息,用户需要打开一个小窗口,以便让用户及其朋友在其中输入信息并让交谈双方都看到交谈的内容。大多数常用的即时通讯发送程序都会提供各种各样的功能:即时通讯 - 在用户和在线朋友之间来回发送信息聊天 - 创建用户与朋友或工友的自定义聊天室网页链接 - 共享用户喜爱的网址支持图片 - 浏览朋友计算机中的图片支持声音 - 给朋友播放音乐支持文件传输 ...
2018-06-15 11:35:54
8417
转载 Android底部导航栏的四种实现
现在大多数App都会用到底部导航栏,比如常见的聊天工具QQ、微信,购物App等等,有了底部导航栏,用户可以随时切换界面,查看不同的内容。它的实现方式也很多,以前大多使用TabHost来实现,但是现在我们有很多更好的选择。使用LinearLayout + TextView实现了底部导航栏的效果首先看看工程目录:Step 1:实现底部选项的一些资源文件图片Drawable资源:tab_menu_dea...
2018-06-15 11:35:37
2841
转载 Android中涉及数据结构和算法的工具类
一.概念数据结构:是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。算法:是特定问题求解步骤的描述,算法是独立存在的一种解决问题的方法和思想详细参照:http://www.cnblogs.com/xydblog/p/3565363.html其中涉及了时间复杂度和空间复杂度,只是浅显的概念,如果想深入的了解请观看研读各种有关书籍。还有想了解时间复杂度和空间复杂度的可以...
2018-06-15 11:35:27
182
转载 Android (争取做到)最全的底部导航栏实现方法
一、DataBinding使用1.使用环境DataBinding是一个support library,所以它可以支持所有的android sdk,最低可以到android2.1(API7)。使用DataBinding需要Android Gradle插件的支持,版本至少在1.5以上,需要的Android studio的版本在1.3以上。在Android Studio上使用,需要在module级别的b...
2018-06-15 11:35:18
1540
转载 Android中加载GIF图片的实现
最近遇到Android中加载GIF图片,而Android目前还不支持GIF图片的加载。查询后发现很多第三方网络请求框架支持GIF图片的加载。第一种:gifView ,这个需要通过google【翻墙下载】,下载完了demo和jar包之后需要将jar包放入工程中的lib文件夹中,然后添加到library中。在xml问价中填写布局为: android:id="@+id/gif" android:...
2018-06-15 11:35:08
1955
转载 Android开发编码规范
第一章 绪论1.1概述 编码规范对于程序员而言尤为重要,有以下几个原因: 【原因1】一个软件的生命周期中,80%的花费在于维护。 【原因2】几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护。 【原因3】编码规范可以改善软件的可读性,可以让程序员尽快而彻底地理解新的代码。 ……等等很多原因,不一一列举。1.2目的 统一规范Eclipse/studio编辑环境下android的编码风...
2018-06-15 11:34:57
217
转载 Android学习之数据库DBFlow的使用
从事Android开发这么久,大大小小的项目也接触了十几个,但是数据库的应用却很少,因为现在大多数的数据操作都可以让后台来实现,但也少不了Android创建数据库的情况,当数据要求保存在本地,而且对增删改查有很高要求时,数据库还是必要的,很多人都知道SQLite这种轻量级的Android开发数据库,但是其需要对数据库的语法有一定掌握,今天来公司加班,顺便我们来学习另外一种DBFlow数据库的使用。...
2018-06-15 11:34:47
560
转载 小白科普:Netty有什么用?
随着移动互联网的爆发性增长,小明公司的电子商务系统访问量越来越大,由于现有系统是个单体的巨型应用,已经无法满足海量的并发请求,拆分势在必行。在微服务的大潮之中, 架构师小明把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。世界上没有免费的午餐, 拆分成多个“微服务”以后虽然增加了弹性,但也带来了一个巨大的挑战:服务之间互相调用的开销。比如说:原来用户下一个...
2018-06-15 11:34:24
159
转载 Android裁剪图片(UCrop)使用说明
Android裁剪图片(UCrop)使用说明Android如何打开拍照 打开系统相册参考: http://blog.csdn.net/weixin_37577039/article/details/79186183使用的是UCrop的一个开源库 参考地址:https://github.com/Yalantis/uCrop大致流程: 1 project gradle中allprojects { r...
2018-06-12 10:10:53
1478
转载 模板方法模式
目录1. 介绍1.1 定义定义一个模板结构,将具体内容延迟到子类去实现。1.2 主要作用在不改变模板结构的前提下在子类中重新定义模板中的内容。模板方法模式是基于”继承“的;1.3 解决的问题提高代码复用性 将相同部分的代码放在抽象的父类中,而将不同的代码放入不同的子类中实现了反向控制 通过一个父类调用其子类的操作,通过对子类的具体实现扩展不同的行为,实现了反向控制 & 符合“开闭原则”2....
2018-06-12 10:10:42
264
转载 人人都是架构师:非功能性需求
需求是最重要的事情,失去了功能,失去了客户的价值,软件将一无是处。 然而,功能的实现只是架构的开端。架构首先来自需求,需求驱动架构,然后非功能性需求反映服务等级,面对客观环境的约束,自行引入的架构实现原则,是在高层次以上对需求、约束、和原则的理解和把握。非功能性需求也可以称为质量属性,我所了解的非功能性需求主要有:性能:响应时间或延迟可伸缩性:更多用户,请求和数据的处理能力可用性:99.9%意味着...
2018-06-12 10:10:33
1053
转载 设计模式原则
设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。 设计模式的六大原则:原则解释单一原则 (...
2018-06-12 10:10:23
121
转载 搭建自己的 Android MVP 快速开发框架
Android 开发进入「死丢丢」的时代后,引用三方库在 Gradle 的支持下变得十分轻松。各种高手写的开源框架,极大程度降低了新手入行(坑)的门槛,「一周开发一款 App 并上线」也不再遥不可及。关于快速开发,笔者本人的意见是不一定什么功能都自己写,但框架最好是自己搭。虽然网上有很多非常成熟好用的完整框架,但直接「拿来主义」的话可能有 2 点不妥之处——框架提供的功能你未必都用得到。比如你只写...
2018-06-12 10:10:14
17828
4
转载 [Android开源]一套快速高效的开发框架EasyAndroid
类库介绍 EasyAndroid现在Android的框架很多,第三方库也很多,当做一个项目的时候,会考虑怎么整合那么多的资源,以达到复用快速开发。今天要说的这个框架就是整合了主流Retrofit2网络层封装、Fresco图片加载、都使用OKHTTP3进行网络处理、使用MVP架构,来快速灵活开发复用我们的项目。框架说明Retrofit2为什么要使用它呢?我们来想想如果不使用它的话,我们直接操作OKH...
2018-06-12 10:10:03
8036
转载 AndroidStudio 快速开发之道
概述现如今开发越来越追求效率和节奏,节省出时间做更多的事情,除了开发技术上的封装等,开发工具的使用技巧也是很重要的,今天就根据自己的经验来给大家介绍一下Android Studio 快速开发之道。Postfix completion介绍Postfix completion 是 IntelliJ IDEA 很早就有的功能,该功能基于已经输入的表达式和你添加的后缀来实现另一个你想要的表达式。例如在布尔...
2018-06-12 10:09:41
457
转载 Android 完整项目打包成 aar 详解
项目背景,公司要将完整APP打包成AAR包,供其它厂商内嵌。外部厂商提供壳工程和相应的Application调用我们提供的aar包一路走来踩了一堆坑。。。这里先简要解释一下相关概念1 什么是AAR包? AAR包相比于jar包,区别在哪儿?aar包含所有资源,class,xml布局文件以及res资源文件全部包含。注意是全部。jar只包含了class文件与清单文件,不包含资源文件,如图片等所有res中...
2018-06-12 10:09:31
2506
1
转载 Android 快速开发系列 打造万能的ListView GridView 适配器
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38902805,本文出自【张鸿洋的博客】1、概述相信做Android开发的写得最多的就是ListView,GridView的适配器吧,记得以前开发一同事开发项目,一个项目下来基本就一直在写ListView的Adapter都快吐了~~~对于Adapter一般都继承BaseAdapte...
2018-06-12 10:09:20
379
Android高级进阶
2018-01-15
网络概算考试资料对考试很有用
2010-01-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人