码中自有颜如玉
布局优化Android UI渲染机制在Android中,系统通过VSYNC信号触发对UI的渲染、重绘,其间隔时间是16ms。15 = 1000/60(1秒内显示60帧画面的单位时间)。 Android系统提供了检测UI渲染时间的工具,打开“开发者选项”,选择“Profile GPU Rendering”,并选中“On screen as bars”的选项,这时候在屏幕上将显示一个条形图。 蓝色代表测量绘制Display List的时间,
Android View动画框架透明度动画为视图增加透明度的变换动画。 AlphaAnimation aa = new AlphaAnimation(0,1); aa.setDuration(1000); view.startAnimation(aa); 旋转动画为视图增加旋转的变换动画。 RotateAnimation ra = new RotateAnimation(0,360,100,100); ra.setDurayion(10
B/S网络架构概述目前的网络架构大多采用下图所示的架构设计,既要满足海量用户的访问请求,又要保持用户请求的快速响应,所以现在的网络架构也越来越复杂。 如何发起一个请求在linux中,通过curl + URL就可以简单发起一个http请求。查看本次访问的http头信息,加上-I选项。 HTTP解析查看http信息的工具浏览器缓存机制DNS域名解析DNS域名解析过程跟踪域名解析过程清除缓存的域名几种域名解析方式CDN工作机制CDN架构负载
Android绘图机制与处理技巧Android屏幕相关知识屏幕参数 屏幕大小:指屏幕对角线的长度,通常用“寸”来度量。 分辨率:指手机屏幕的像素点个数。 PPI:每英寸像素(pixels per inch)又被称为DPI(Dots Per Inch)。它是由对角线的像素点数除以屏幕的大小得到的。独立像素密度dp同样是100dp的长度,在mdpi中为100px,而在hdpi中为150dx。在mdpi中1dp=1px,在hdpi中1dp=1
Android Scroll分析常用的一些方法View 提供的获取坐标方法getTop(): 获取到的是View自身的顶边到其父布局顶边的距离 getLeft(): 获取到的是View自身的左边到其父布局左边的距离 getRight(): 获取到的是View自身的右边到其父布局左边的距离 getBottom(): 获取到的是View自身的底边到其父布局顶边的距离 MotionEvent提供的方法getX(): 获取点击事件距离控件左边的
提到JVM垃圾回收,总觉得离我们程序员有一定的距离。在JAVA中,那是系统自己干的事,我们关心那个干嘛?也就是说我们为什么要学习这个东西,大家开开心心地敲代码不好吗? 还真的不好,一方面我觉得我们可以学习下JAVA语言设计上的一些思想,另一方面,在我们以后从事一些较为高级一点的开发,尤其是性能调优之类的,知道这些基础知识就显得很必要了。我打算从以下几个方面开始进行简单地说明。 GC如何知道哪些对象是垃圾对象?GC不可能随便指派说哪个对象
之前看了好多,觉得还是这个讲的好。本文是转的链接 MVC View 传送指令到 Controller Controller 完成业务逻辑后,要求 Model 改变状态 Model 将新的数据发送到 View,用户得到反馈 MVP 各部分之间的通信,都是双向的。 View 与 Model 不发生联系,都通过 Presenter 传递。 View 非常薄,不部署任何业务逻辑,称为”被动视图”(Passive View),即没有任何主动
好久没更新了,今天给大家更新一篇设计模式文章——适配器模式。如果你做过Android开发,那么你肯定对适配这个词很熟悉。适配的作用就是让我们的应用程序能适用于各大主流的Android手机平台。 适配,通俗地讲,就是将极具个性的人,加以合适的引导,让其发挥其最大的作用。这个极具个性的人,就是Adaptee(适配者),发挥作用就是Target(我们的目标),引导的这个人就是Adapter(适配器)。 举个简单的例子,想必这个段子大家之前都听
ListView常用优化技巧使用ViewHolder模式提高效率ViewHolder模式充分利用了ListView的视图缓存机制,避免了每次在调用getView()的时候都去通过findViewById()实例化控件。 在自定义Adapter中定义一个内部类ViewHolder,并将布局中的控件作为成员变量。 public final class ViewHolder{ public ImageView img; pu
自定义控件自定义控件一般分为以下几种: 对现有控件进行拓展; 通过组合来实现新的控件; 重写view来实现全新的控件。 创建复合控件的步骤: 定义属性(在res目录的values目录下创建一个attrs.xml属性定义文件) 创建一个自定义控件,并让它继承自ViewGroup,在构造方法中,通过下面的代码来获取在xml布局文件中自定义的那些属性。 TypedArray ta = context.obtainStyledAtt
虽然还没想好写点什么,但是总觉得这里放句话比较和谐。