Talk is cheap, show me the fucking code.
linux下常用命令—个人总结
在学习Picasso源码的过程中,发现了Picasso对象的初始化不需要传入上下文对象了
less中使用calc计算高度注意事项
View#invalidate方法是如何更新UI的
我们这里说的View的测量、布局和绘制,实质上是针对ViewGroup的,简单起见就不区分View和ViewGroup。View的测量、布局和绘制是包含在ViewGroup流程中的。
View的测量、布局和绘制过程中,到底是先测量(布局、绘制)父View,还是先测量子View,这篇文章会从源码角度给出答案。
内部类虽然和外部类写在同一个文件中, 但是编译完成后, 还是生成各自的class文件,内部类通过this访问外部类的成员。 1、编译器自动为内部类添加一个成员变量, 这个成员变量的类型和外部类的类型相同, 这个成员变量就是指向外部类对象(this)的引用; 2、编译器自动为内部类的构造方法添加一个参数, 参数的类型是外部类的类型, 在构造方法内部使用这个参数为内部类中添加的成员变量赋值; 3、在调用内部类的构造函数初始化内部类对象时,会默认传入外部类的引用。
kotlin查看编译后的Java代码
在终端中输入adb命令时,会提示 command not found ,这是是因为mac电脑下没有配置Android环境变量或者环境变量配置错误。
Eclipse中经常会遇到中文乱码的问题,一般都是编码格式不一致,eclipse默认的编码格式是GBK,这里推荐统一使用UTF-8。
这里以照相机权限为例说明问题。实际开发过程中遇到了不少的坑。
在将enum和switch case结合使用的过程中,遇到了这个错误:“An enum switch case label must be the unqualified name of an enumeration constant”。
项目中某些页面中的分组数据的顶部需要悬停,并且悬停的View要与ItemView中同样布局的View进行操作同步,也就是相互同步。大家都知道,Android中有"The specified child already has a parent. You must call removeView() on the child's parent first."这个异常,意味着同一个View对象不能有两个Parent。我们就不能简单粗暴的将同一个View对象添加进两个parent了,需要另谋出路。
写在前面:本文的目的是想将Handler、Looper和Thread之间绑定的原理讲明白,如果没讲明白,也希望能给关于Handler的学习留个印象。 Android中的多线程间交互离不开Handler,开发中最常见的操作是在子线程中执行耗时操作,在主线程中更新UI,这其中就涉及到了Handler的线程切换操作。
如何通过Android Studio查看不同版本的Android源码
Android应用的开发离不开四大组件(Activity,Service,BroadcastReceiver,ContentProvider),而这四大组件所涉及的通信底层都是依赖于Binder IPC机制的。例如当进程A中的Activity要向进程B中的Service通信,这便需要依赖于Binder IPC。不仅如此,整个Android系统架构中,大量采用了Binder机制作为IPC方案,当然也存在部分其它的IPC方式,比如Zygote通信便是采用Socket。 概念:Binder是Android中的一种IPC方式,提供远程过程调用(RFC)功能。
需求:ImageView显示的图片,上方的两个角是圆角,下方的两个角是直角。 
手把手带你用viewpager实现gallary效果,外加无限循环,自动轮播 主要功能: ①Gallary样式 ②无限轮播 ③自动轮播和手势操作间冲突解决
刚做完推送集成方案,记录下坑。 这里记录的特性和使用时针对写blog时采用的sdk的,具体使用流程和限制还请参考官方给出的sdk. #### 1、推送规则 小米手机用小米推送; 华为手机用华为推送; 其他手机用友盟推送。
需求:在做集成推送方案的时候,需要根据不同的手机类型来启用不同的推送方案。 ①手机类型:小米、华为、其他手机 ②三种推送方案的注册时机: 友盟推送是在Applicaiton#onCreate中,不区分进程。 小米推送是在Applicaiton#onCreate中,只在主进程。 华为推送是在启动页,StartActivity#onCreate中。
Android在子线程中更新UI的方法汇总(共七种)
客户端登陆之后一般都会在本地持有某个cookie,在退出登录时将这个cookie清理掉。如果Request的body体中持有这个cookie,服务器就会认为客户端的用户处于登录状态。反之,就会认为用户没有登录。 假设用户一直处于登录状态,如果他关闭了应用,那么他的登录状态应该保存起来。这样的话,在他下次打开应用时,他的状态还是登录状态,不需要再次登录。 如何实现呢?很简单,将有效的cookie保存起来,需要的时候拿出来,塞进请求里面就ok了。
工作中经常会遇到从子线程发送消息给主线程,让主线程更新UI的操作,常见的有handler.sendMessage(Message),和handler.post(runnable)和handler.postDelayed(runnable, milliseconds);一直在使用这些方法,却不知道他们的原理,今天就来解释一下他们的原理。
严格来说来说不是类的懒加载,而是针对业务中的特殊需求实现的,让fragment在可见的时候再进行网络请求。 在viewpager+PagerFragentAdapter里面的Fragment里面,初次加载时,offset范围内的所有fragment的oncreateView方法都会执行,默认情况下,fragment原有的逻辑中,页面的初始化和网络请求都会触发,这就会导致初次进入时,即使在用户面前只展示了一个tab和fragment,但是却所有tab下页面的数据都请求了,会浪费用户流量。正确的做法是在用户打开fragment之后才请求数据。
开发中,我们经常要进行数据的传递,会使用到view.setTag()和view.getTag()方法,主要用在view的点击事件中,可以让数据跟着view走,这种方法很方便。一般情况下给view设置一个tag就够用了,某些情况下我们需要给一个view设置多个tag,在需要的时候再分别取出来,这就需要用到view.setTag()的一个重载方法view.setTag(int key,final Object Tag)了。
成员变量初始化的问题