- 博客(57)
- 资源 (1)
- 收藏
- 关注
原创 Android最佳实践
导言:因为新工作使用内网代理的关系,涉及到信息安全,外网基本被屏蔽掉了,因此部门内部还是有相当一部分人在使用eclipse,不过我还是打算申请外网,尼玛还要钱,兼用android studio 和eclipse 毕竟前者基本上沦为主流开发工具,github上很多优秀的开源项目都迁到studio上了,本来是打算在eclipse中搭建gradle环境,网上也是存在相应的解决方案,不过我还是觉得eclip
2016-11-23 19:49:18
494
原创 泛型
1.简介: 1)泛型可以解决数据类型的安全问题,主要原理是在类声明的时候通过标识,表示类中某个属性类型或是某个方法的返回值及参数类型。这样在类的声明及实例化的时候只要指定好需要放入类型即可。2)//泛型类的声明 class ZuoBiao<T> {//此处可以随便写标识符号,T是type的简称,有意义 private T var;//var的类型由外部指定,即由T指定 pub
2016-10-22 17:24:28
463
原创 注释
1.概述1)正确的来说注解是反射的一部分,没有反射,注解无法正常使用2)注解的功能:01. 作为特定的标记,程序可以利用java的反射机制来了解你的类及各种元素上有无何种标记,针对不同的标记,就去做相应的事件。标记可以加在包,类,字段,方法,方法的参数以及局部变量上,使用注解有助于阅读程序,有利于实现程序的自动化检查和实现,简化编程。/ 02. 额外信息的载体/以后javac编译器、开发工具或
2016-10-22 17:14:37
550
原创 Android 屏幕适配方案系列三
Android多屏幕适配: https://github.com/8enet/AndroidMultiScreenLayout 【这个也是针对标注的px来设置的】 Fragment适配大屏幕: https://github.com/ksharpdabu/twoFragment 百分比布局 屏幕适配:https://github.com/wmydz1/AutoFix 比例布局:https:/
2016-10-22 17:06:00
902
原创 Android 屏幕适配方案系列二
1.概述 1)各种屏幕尺寸适配,Web页面设计人员从来没有听说过,网页提供了百分比计算大小2)拿到UI给的设计图以后,是不是抱怨过尼玛你标识的都是px,我项目里面用dp,Android对于不同的屏幕给出的适配方案是dp,那么dp与百分比的差距到底在哪里?2.dp vs 百分比 1)Density-independent pixel (dp)独立像素密度。标准是160dip.即1dp对应1个p
2016-10-22 16:37:31
527
原创 屏幕适配方案系列一
1.推荐方案:1)Android中的RelativeLayout, layout_weight属性,适应不同像素密度的dp/sp单位,mdpi/hdpi/xdpi等一系列文件夹,尽量用点九图,提供了各种手段解决适配问题2)可能的问题原因:android本身会根据手机的像素密度,会在不同的文件夹,选取对应的图片,并对图片进行放缩。但是由于android像素密度算法不科学,会导致同一张图在不同的像素密
2016-10-22 16:21:23
536
原创 Dagger2
1.为什么使用依赖注入1)其实依赖注入也是为了模块解耦,你会发现一切一切,不论是mvp还是dagger都是为了模块解耦。dagger和mvp结合起来还可以做到把m-v-p之间进一步解耦。所谓耦合就是两个模块联系在了一起,什么意思呢?比如一个模块A里面new了另一个模块B的对象,这时候就说两个模块耦合在了一起,如果现在B模块的构造函数做了修改,那么你还需要去修改模块A里面的代码。而我们希望的是B无论怎
2016-10-22 15:25:45
1077
原创 Okhttp
1.OkHttp 简介 1)OkHttp 是一个更先进的专注于连接效率的 HTTP 客户端。OkHttp 提供了对 HTTP/2 和 SPDY 的支持,并提供了连接池,GZIP 压缩和 HTTP 响应缓存功能。OkHttp 的 API 接口也更加的简单实用,是一种http工具类。2)在Android程序中经常需要用到 HTTP 客户端来发送 HTTP 请求并对所得到的响应进行处理3)需要使用
2016-10-22 15:16:34
3649
9
原创 RxJava系列三
操作符1.RxJava的强大性就来自于它所定义的操作符 其实就是提供的方法,因为操作符可以让你对数据流做任何操作。2.Demo 2.1.这个方法根据输入的字符串返回一个网站的url列表(啊哈,搜索引擎) 2.2)这种代码当然是不能容忍的,因为上面的代码使我们丧失了变化数据流的能力。一旦我们想要更改每一个URL,只能在Subscriber中来做。我们竟然没有使用如此酷的map()操作符!!!当然
2016-10-22 14:59:50
643
原创 RxJava系列二
1.RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据。。。)2.一个Observable可以发出零个或者多个事件,直到结束或者出错。每发出一个事件,就会调用它的Subscriber的onNext方
2016-10-22 14:42:41
404
原创 RxJava系列一
1.简介 1)RxJava它就是一个实现异步操作的库:a library for composing asynchronous and event-based programs using observable sequences for the Java VM2)Android 创造的 AsyncTask 和Handler ,其实都是为了让异步代码更加简洁,与众不同之处在于,随着程序逻辑变得越
2016-10-22 14:27:34
946
原创 Android依赖注入
1.含义 1)依赖是指一个对象持有其他对象的引用。依赖注入则是将这些依赖对象传递给被依赖对象,而不是被依赖对象自己创建这些对象,说白了注入就是对象作为参数传递。public class MyClass{ private AnotherClass mAnotherObject; public MyClass(){ mAnotherObject = new An
2016-10-21 23:03:55
655
原创 MVP/MVVP
http://blog.youkuaiyun.com/luyi325xyz/article/details/43085409 http://robobinding.github.io/RoboBinding/getting_started.zh.html#_android_studio
2016-10-21 22:53:47
1466
原创 Retrofit系列二
1.为什么会选择Retrofit【Okhttp/retrofit/android-async-http/volley】 1)个人比较推荐Square开源组合,用Retrofit(目前已经是2.0+)+OkHttp基本上已经可以处理任何业务场景了,Square开源库质量还是值得信赖的。2)Retrofit的特点我个人认为是简化了网络请求流程,同时自己内部对OkHtttp客户端做了封装,同时2.x把
2016-10-21 22:16:46
934
原创 Retrofit系列一
1.Retrofit provides two options to define HTTP request header fields: static and dynamic. Static headers can’t be changed for different requests. The header’s key and value are fixed and initiated with
2016-10-20 21:42:46
635
原创 Glide
1.简介1)google亲儿子,Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是在细节上还是有不少区别的。2)导入库,Picasso和Glide都在jcenter上。在项目中添加依赖非常简单:参考官网 Picasso: dependencies { compile ‘com.squareup.picasso:picasso:2.5.1’ } Gl
2016-10-20 19:56:04
1756
原创 ButterKnife
1.Introduction 简介 【黄油切刀】1)Annotate fields with @Bind and a view ID for Butter Knife to find and automatically cast the corresponding view in your layout. 在定义视图元素前添加注释符号@Bind(ID) 注释框架会自动关联映射到相关联的布局文件中
2016-10-20 19:36:35
324
原创 数据库GreenDAO+ORM
1.简介:1)greenDAO是一个可以帮助 Android 开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询。 2.具体使用方法1)http://blog.youkuaiyun.com/tyyj90/article/details/504509012)http://www.openopen.com
2016-10-20 19:22:34
476
原创 文件file
1.文件存储 http://blog.youkuaiyun.com/xushuaic/article/details/8815563 http://blog.youkuaiyun.com/eyishion/article/details/51502849 http://blog.youkuaiyun.com/zhoumushui/article/details/51361007 http://blog.youkuaiyun.com/lia
2016-10-20 19:14:18
476
原创 本地缓存
1.使用场景1)提高访问服务器接口的速度,测试场景:2G/3G网络环境下,以模拟用户真实体验2)影响因素:双向数据传输速度,3)可行性的措施:减少接口的调用次数 -> 整合多次为一次;措施二,调用一次服务端接口后,在规定地一个时间段内不再调用,保存数据在APP 本地上,也就是缓存时间段内,扔使用上次获取到的数据2.设计场景1)缓存时间长短设置,有一个推荐标准:长【5-10分钟】即时性高低,数据
2016-10-20 18:52:25
1395
原创 代码混淆
【混淆+加固+全量测试】一.概述1.Android Studio中做混淆,基本就是对Proguard-rules.pro文件的操作。混淆的过程也是有规律可循2.写出适合自己代码的混淆规则3.minifyEnabled主要用来控制是否运行混淆的4.然后我们就可以到proguard-rules.pro文件中加入我们的混淆规则了。5.代码混淆(Obfuscated code)亦称花指令,是将计算
2016-10-20 18:46:07
1354
1
原创 Android App签名打包发布
一.步骤: 1.先把应用程序打包 2.再选中其中一个应用市场进行投放 1.混淆 2.签名打包 3.补丁 4.Android通过这个数字证书确定应用的作者 5.错误日志的输出 6.补丁,bug热修复 http://gold.xitu.io/entry/57964afba34131005a96a5b8 https://segmentfault.com/a/11900000046257
2016-10-20 18:36:18
1044
原创 Gradle系列二
1.Introduction 1.1.gradle构建系统的目标 1)让重用代码和资源变得更加容易 2)让创建同一应用程序的不同版本变得更加容易,无论是多个apk发布版本还是同一个应用的不同定制版本。让构建过程变得更加容易配置,扩展和定制1.2.为什么使用gradle 1)它允许通过插件创建自定义的构建逻辑 2)采用了Domain Specific Language(DSL语言)来描述和
2016-10-20 18:11:34
1081
原创 版本更新
1.步骤:1)检测当前版本的信息AndroidManifest.xml–>manifest–>android:versionName。2)从服务器获取版本号(版本号存在于xml文件中)并与当前检测到的版本进行匹配,如果不匹配,提示用户进行升级,如果匹配则进入程序主界面。3)当提示用户进行版本升级时,如果用户点击了确定,系统将自动从服务器上下载并进行自动升级,如果点击取消将进入程序主界面。2.说
2016-10-20 17:18:05
986
原创 Android 应用安全
1.Android 安全的概念1.1.应用和数据处理安全问题1.2.保护应用数据和服务不被其他应用访问,1.3.唯一用户ID,唯一的密钥签名1.4.只有当其他应用在它们的AndroidManifest.xml文件中显式声明了、正确权限后,Android的权限系统才会允许1.5.应用也可以定义权限2.签名和密钥2.1.过程: 1)通过Gradle构建系统自动生成的调试密钥来对应用进行签名
2016-10-20 17:01:59
393
原创 ViewPager
1.简介 1)ViewFlow: gethub上的一个开源项目 废弃掉,有更好的,ViewFlow 相当于 Android UI 部件提供水平滚动的 ViewGroup,动态添加View的功能,也就是说如果你的View数目是不固定的,那么你就应该使用ViewFlow;ViewPager:不能动态添加View,实现屏幕间的切换。 手势滑动,PagerAdapter接口生成页面视图;ViewFli
2016-10-20 16:53:45
356
原创 ListView
1.ListView和Adapter1)ListView就是一个能数据集合以动态滚动的方式展示到用户界面上的View,即:以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。2)ListView和数据是分开的,不直接接触。而是通过Adapter(适配器)加载到屏幕。也就是说Adapter相当于是数据和View之间的桥梁。Adapter负责为每一个数据项制作View。 2.ListView工
2016-10-20 16:25:55
2040
原创 Android Activity 系列二
1.设备配置与备选资源销魂重建Activity原理: Android可自动完成调用最佳匹配资源的工作,但前提是它必须通过新建一个activity来实现显示一个新布局,方法setContentView(R.layout.)必须再次被调用。而调用setContentView(R.layout.方法又必须先调用Activity. onCreate(…)方法。因此,设备一经旋转,Android需要销毁当
2016-10-20 15:59:37
370
原创 内存泄露
1.Android开发—常见的内存泄漏问题及解决办法 http://www.eoeandroid.com/thread-922210-1-1.html?_dsign=a6676e9c2 2016/6/16日,编译时,出现了内存溢出的问题,记录下。 https://plumbr.eu/outofmemoryerror/gc-overhead-limit-exceeded原因:The java.l
2016-10-20 15:11:41
335
原创 SVN
1.本地的而文件要在SVN客户端的控制之下 http://zhidao.baidu.com/link?url=2vzSLD1Qz4GpmHghCNecum18MX1MrP74okwyUJHlVJwQBymiUmOreVQVdilsc0xefuO_MMgSVqMteqlbjooUHvscJxVuNNJaa_hKa3q3NOO http://jingyan.baidu.com/article/497
2016-10-20 15:07:29
545
原创 ScrollView
1.概述1)ScrollView:垂直滚动,ScrollView继承FrameLayout,是一种特殊类型的FrameLayout,因为它可以使用户滚动显示一个内容占据的空间大于物理设备显示的空间的视图列表,即:当拥有很多内容,屏幕显示不完时,需要通过滚动来显示更多内容的视图。2)HorizontalScrollView:水平滚动3)滚动的内容是它其中包含的View4)ScrollView只能
2016-10-20 14:07:48
2333
原创 原型图的设计
原型图的设计1.原型的重点是提供交互性导览,在投入资源进行开发之前预判产品的可行性,所以原型控件样式也就没有那么重要。2.如果要作高保真原型的话,可以自己做贴图放到axure里面。3.手画原型,这样最能呈现我想要的原型,如果用手画怎么完成交互,现在有个4.app叫快现, POP(Prototyping on Paper)你可以把你画的东西拍下来,然后在快现里面完成一些简单的交互设计,还是能满
2016-10-20 12:50:24
2780
2
原创 性能优化之工具篇
1.概述 一个应用性能的好坏并不能依靠我们的主观意识去评判,必须要看数据说话,因此必须要了解和学会使用各种性能测试工具才知道问题出在哪以及具体的优化方向。2.标准 • 布局复杂度: 布局复杂会导致布局需要更长的时间,从而导致进入应用慢、页面切换慢; • 耗电量: 耗电量大会导致机器发热、缩短机器的有效使用时长; • 内存: 内存消耗大会导致频繁GC,GC时会暂停其它工作,导致页面卡
2016-10-20 12:13:31
369
原创 Android布局优化
1.解决重复定义相同布局的问题1)使用include标签: 我们只需要把这个会被多次使用的顶部栏独立成一个xml文件,然后在需要使用的地方通过include标签引入即可2)属性覆盖: layout属性放在最后,并且include的id属性覆盖了布局根元素的id属性 3)注意事项: 寻找目标控件会出现空指针,也就是查询不到对象的存在,对于布局文件的解析,最终都会调用到LayoutInflater
2016-10-20 11:52:42
241
原创 适配器Adapter
1.谈到Adapter就忍不到要跳转到适配器模式,Adapter适配器可以简单理解为一个缓存绑定器,数据绑定视图,现在较流行的BataBinding框架该是对适配器模式的进一步封装了。2.结合官网,说说几个概念2.1.Adapters provide a binding from an app-specific data set to views that are displayed within
2016-10-20 00:05:18
556
原创 代码优化之合理利用编译器
工具:利用Android studio的快捷键 Ctr + F1给出的warning提示,规范化代码,并去除无用代码,使用快捷键Alt+Enter,但是并非所有的场景是能依靠编译器解决,有些是需要自己亲自更改的。编译器: https://github.com/JetBrains/intellij-community 【在这里可以找到所有的提示信息】1 导读:检查到当前全部变量建议改为局
2016-10-19 22:15:54
375
原创 搭建高质量的Android项目框架系列四
界面层详解1.要规划好界面层,至少应该遵循几条基本的原则:1)保持规范性:定义好开发规范,包括书写规范、命名规范、注释规范等,并按照规范严格执行;2)保持单一性:布局就只做布局,内容就只做内容,各自分离好,每个方法、每个类,也只做一件事情;3)保持简洁性:保持代码和结构的简洁,每个方法,每个类,每个包,每个文件,都不要塞太多代码或资源,感觉多了就应该拆分。规范性 1.每个人的编码习惯和风格都不同,
2016-03-18 19:13:48
405
原创 搭建高质量的Android项目框架系列三
1.分包 1.1.首先是其架构,是按功能模块进行划分的,但不必分得太细,最多五个模块就够了,很多类按其功能其实可以属于多个模块,这个时候就需要抽出来。 1.2.类定义要明确,权责单一2.详解 2.1.模型层定义了所有的模型 2.2.接口层封装了服务器提供的API 2.3.核心层处理所有业务逻辑 2.4.界面层就处理界面的展示接口层 1.接口层封装了网络底层的API,并提供给核心层调用
2016-03-18 19:10:34
477
原创 搭建高质量的Android项目框架系列二
1.首先要考虑的是这个项目或者说这个产品的核心功能是什么? 比如: 1)图片处理和展示类app,我们更多考虑对大量图片的处理,防止OOM等等; 2)理财营销类软件,比如微众银行、同花顺这种大量采用H5页面的app,考虑需要对webview控件优化和Js交互框架的搭建.总结:框架是为了便于业务的展开,是为业务而服务的,框架的选择是和业务需求紧密相连的。2.目工程搭建 2.1.http://w
2016-03-18 19:04:33
573
原创 搭建高质量的Android项目框架系列一
1.编程规范 1.1.Application Name: 项目应用名,命名规则简单 1.2.Package Name:包名遵循“DNS反转”约定,亦即将企业组织或公司的域名反转后,在尾部附加上应用名称。遵循此约定可以保证包名的唯一性,遵循MVC的命名原则。![这里写图片描
2016-03-18 18:56:17
3056
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人