-
tinuv
-
distinct操作符从词义可以知道,他是筛选出不同的发射的元素给观察者,很简单如:importio.reactivex.*;
importio.reactivex.functions.Consumer;
importio.reactivex.functions.Function;
importjava.util.ArrayList;
importjava.util.List;
publ
-
androidproject
-
Android Animation Detailed Tutorial / Android 动画详尽教程 中文讲解(README)请直接点击对应标题English explanation(or readme), Do not click on the title, please click on the tip address文章开篇总结性文章:《Android 一共有多少种动画?准确告诉你
-
androidproject
-
目录一、本项目的作用二、下载试试三、已经整理完成的章节1、贝塞尔曲线2、PathMeasure3、属性动画4、Xfermode5、VelocityTracker和Scroller6、绘制流程7、svg8-1、canvas_clip8-2、canvas_draw8-3、canvas_text四、继续整理的章节五、作者简介1、个人博客2、联系方式3、赞赏一、本项目的作用本项目主要用于Android高级
-
cnbzlj
-
今天,简单讲讲如何写一个sharedpreferences的工具类。很简单,把一些重复的操作封装在工具类里,其他地方调用就可以。在网上搜索了比较多的资料,找到一个比较好的工具类。import android.content.Context;
import android.content.SharedPreferences;
/**
* 作者:Yzp on 2017-03-20 15:
-
android01
-
前面两篇文章,我们分析了Activity的布局文件加载、绘制流程,算是对整个Android系统中界面的显示流程有了一个大概的了解,其实Android系统中所有的显示控件(注意这里是控件,而不是组件)的加载绘制流程都是类似的,包括:Dialog的加载绘制流程,PopupWindow的加载绘制流程,Toast的显示原理等,上一篇文章中,我说在介绍了Activity界面的加载绘制流程之后,就会分析一下剩
-
tinuv
-
自定义组合控件我以前没有用过,对我来说是一个新的领域,由于今天的时间很少了,没有很只学了一点点,但也记录下来,作为一个开头.实现一个最简单的组合控件实现组合控件很关键的一点是动态加载布局,就是使用LayoutInflater来动态加载布局,加载完了之后基本上一个最简单的组合控件就算完了.组合控件在统一界面风格方面的作用很大,尤其是重用的时候,可以减少很多代码冗余,因为在组合控件可以处理一些公共的逻
-
androidproject
-
Android Animation Detailed Tutorial / Android 动画详尽教程 中文讲解(README)请直接点击对应标题English explanation(or readme), Do not click on the title, please click on the tip address文章开篇总结性文章:《Android 一共有多少种动画?准确告诉你
-
android
-
虽然Android Studio自带了三种主题样式,但是如果对这些主题样式都不满意,又不想自己一个一个去设置主题样式。可以去网上下载自己喜欢的主题样式并导入。首先说一下Android Studio自带主题的切换。打开AS菜单栏File->Settings->Appearance&Behavior->Appearance界面,里面有Theme选项,里面有Darcula、In
-
android01
-
上篇文章中我们分析了Activity的onSaveInstanceState方法执行时机,知道了Activity在一般情况下,若只是执行onPause方法则不会执行onSaveInstanceState方法,而一旦执行了onStop方法就会执行onSaveInstanceState方法,具体的信息,可以参见onSaveInstanceState方法执行时机:android源码解析(二十四)--&g
-
android01
-
前面的几篇文章都是讲解的android中的窗口显示机制,包括Activity窗口加载绘制流程,Dialog窗口加载绘制流程,PopupWindow窗口加载绘制流程,Toast窗口加载绘制流程等等。整个Android的界面显示的原理都是类似的,都是通过Window对象控制View组件,实现加载与绘制流程。这篇文章休息一下,不在讲解Android的窗口绘制机制,穿插的讲解一下Android系统的异常处
-
android01
-
前面一篇文章中我们分析了App返回按键的分发流程,从Native层到ViewRootImpl层到DocorView层到Activity层,以及在Activity中的dispatchKeyEvent方法中分发事件,最终调用了Activity的finish方法,即销毁Activity,所以一般情况下假如我们不重写Activity的onBackPress方法或者是onKeyDown方法,当我们按下并抬起
-
android00
-
前言整理功能,把这块拿出来单独做个demo,好和大家分享交流一下。版本更新这个功能一般 app 都有实现,而用户获取新版本一般来源有两种:一种是各种应用市场的新版本提醒一种是打开app时拉取版本信息(还要一种推送形式,热修复或打补丁包时用得多点)这两区别就在于,市场的不能强制更新、不够及时、粘度低、单调。摘要下面介绍这个章节,你将会学习或复习到一些技术:- dialog 实现 key 的重写,在弹
-
gityuan
-
一、Android系统1.1 Android系统源码网站备注https://android.googlesource.comGoogle官方提供的Android系统源码(需翻墙)http://androidxref.com用于阅读Android系统源码,基于OpenGrokhttp://aosp.opersys.com用于阅读Android系统源码,基于OpenGrokhttps://git.ke
-
cnbzlj
-
今天,简单讲讲如何解决android:password 过时的问题。这个其实很简单,之前自己讲过很多过时的代码,这个android:password 过时也经常遇到,只是一直没有花时间写成博客。今天正好记录一下。android:password="true"编写Android时,这句代码会报错,“android:password is deprecated: Use inputType inste
-
cnbzlj
-
Android 7.0 打开文件的错误,调用相机及裁剪图片,还有动态权限Github代码码云链接华为荣耀V8,小米5,小米6,R9s,测试通过,其他机子没机会测试。。。。核心代码7.0以上除了相机和裁剪图片,只要是打开文件的,uri都要更改,包括更新安装包,记得要改uri,不然解析异常,但裁剪图片outputUri有点不一样if (Build.VERSION.SDK_INT >= Build
-
kotlin
-
在 Kotlin 中,所有东西都是对象,在这个意义上讲我们可以在任何变量上调用成员函数和属性。 一些类型可以有特殊的内部表示——例如,数字、字符和布尔值可以在运行时表示为原生类型值,但是对于用户来说,它们看起来就像普通的类。 在本节中,我们会描述 Kotlin 中使用的基本类型:数字、字符、布尔值、数组与字符串。一、数字Kotlin 处理数字在某种程度上接近 Java,但是并不完全相同。例如,对于
-
android
-
简单说一下学习okhttp的理由google在Android 6.0中删除了HttpClient的Api,采用的是则是okhttp高效的使用HTTP,使应用运行更快更省流量响应缓存数据避免重复网络请求无缝的支持GZIP来减少数据流量使用非常简单,请求和响应的Api具有流畅的建造和不变性,同时支持同步异步调用回调函数如果网络出现问题,它会从常见的连接问题中恢复如果服务器配置有多个IP地址,当第一个I
-
android00
-
为期三天的Google I/O 2019大会终于在上周落下了帷幕,每年的Google I/O大会都可以说是一场全球的开发者盛宴。不过可惜的是,由于和美国存在时差,I/O大会的直播时间正好是我们这边的深夜,因此对于大多数的人来说可能都只能通过回放的方式来观看I/O大会。另外由于会议全程都是使用的英文,因此对于一些英文不太好的朋友观看起来可能也会比较吃力。因此今天我特意写了这样一篇文章来覆盖Googl
-
android
-
三)常见的一些原理性问题1、Handler机制和底层实现 机制:hanlder是android线程间通信的一种实现,以消息队列的方式实现线程间数据的共享,通过Looper不断的轮询消息队列来 获取数据 底层:MessageQueen、Looper以及Looper内部的ThreadLocal,我们在线程中Looper对消息队列的管理过程离不开数据储存ThreadLocal,ThreadLocal在多
-
android01
-
继续我们的源码解析,上一篇文章我们介绍了Activity的启动流程,一个典型的场景就是Activity a 启动了一个Activity b,他们的生命周期回调方法是:onPause(a) --> onCreate(b) --> onStart(b) --> onResume(b) --> onStop(a)而我们根据源码也验证了这样的生命周期调用序列,那么Activity的