layout()方式 layout用于布局控件用的,那么它也可以实现view位置的变化。 layout(l,t,r,b) 这几个值可以这样理解 l t 就是view左上角的xy轴,rb就是右下角的xy轴。 case Mo…
分类:移动开发
Okhttp解析(四)网络连接的建立
Okhttp作为一款底层网络访问框架,它和Volley等上层网络框架不一样的地方在于,Okhttp自己实现了与服务端的TCP连接,并在此连接上根据HTTP协议的规范与服务端进行HTTP协议及内容的请求和响应。Okhttp…
git cherry-pick用法
场景: 如果你的应用已经发布了一个版本2.0, 代码分支叫release-2.0, 现在正在开发3.0, 代码的分支叫dev-3.0. 那么有一天产品说, 要把正在开发的某个特性提前上线, 也就是说要把dev-3.0分支…
Android常用三方框架
1.下拉刷新 Android-Ptr-Comparison-Android 下拉刷新开源库对比,非常nice!! Android-PullToRefresh– 最经典、最多人用的下拉刷新、加载更多。 Pull…
Android - Picasso加载图片的优化
Picasso优化 1、自定义Application应用程序类MyApplication继承于Application,在onCreate()生命周期方法中初始化Picasso private void initPicas…
TextView行间距、字间距的问题
1.修改行间距(最简单) 在xml中设置 (1)lineSpacingMultiplier属性,意思是行与行之间的距离倍数,相当于word里面的行间距,例如1.5倍行间距 android:lineSpacingMulti…
Android Design Support Library
NavigationView:通过提供一种框架,这个框架满足了对于导航抽屉和通过menu资源填充导航item的能力的需要。 你可以像这样在布局文件中把 NavigationView 作为 DrawerLayout 的抽屉…
用 VIPER 构建 iOS 应用架构(2)
【编者按】本篇文章由 Jeff Gilbert 和 Conrad Stoll 共同编写,通过构建一个基础示例应用,深入了解 VIPER,并从视图、交互器等多个部件理清 VIPER 的整体布局及思路。通过 VIPER 构建…
Apt实现一款缓存小框架
一款简单的使用apt实现的缓存处理器,默认使用gson+sp实现,只需要编写实体类,添加注解即可自动生成缓存代码,无需做任何额外操作。 优点 1,将杂乱的配置文件以面向对象的方式管理。 2,不需要编写繁琐重复的缓存具体代…
Activity的启动模式
引言 当面试官说请你介绍一下activity启动模式,大多数人都能整两句,什么栈顶复用啊栈内复用啊,不过,你确定你真的懂启动模式吗? 如果你能回答出下面的问题,那么你可以直接退出当前界面。 假设有如下四个activity…
深入JVM:(五)内存分配与回收策略
一、对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。 新生代GC(Minor GC):指发生在新生代的垃圾收集动作,因为Java对…