安卓
文章平均质量分 85
不融化的雪人
编程爱好者
展开
-
从零学习RxJava2.0-组合 / 合并操作符
组合 / 合并操作符组合 多个被观察者(Observable) & 合并需要发送的事件组合多个被观察者操作符1:concat,concatArray二者区别:组合被观察者的数量,即concat()组合被观察者数量≤4个,而concatArray()则可>4个Observable.concatArray(Observable.just(1,2), ...原创 2018-07-26 16:38:02 · 453 阅读 · 0 评论 -
开发艺术探索之RemoteView学习
RemoteView简单使用RemoteView在通知栏的使用通知栏除了默认的布局格式之外,还支持自定义布局先看一下通知栏默认布局格式的使用Intent intent = new Intent(this,RemoteView_goActivity.class); PendingIntent pendingIntent = PendingIntent...原创 2018-07-20 21:37:26 · 472 阅读 · 0 评论 -
从零学习RxJava2.0-变换操作符
RxJava-变换操作符对事件序列中的事件 / 整个事件序列 进行加工处理(即变换),使得其转变成不同的事件 / 整个事件序列还是直接看代码效果吧变换操作符1:map对 被观察者发送的每1个事件都通过 指定的函数 处理,从而变换成另外一种事件Observable.create(new ObservableOnSubscribe<Integer>() { ...原创 2018-07-26 10:41:35 · 303 阅读 · 0 评论 -
从零学习RxJava2.0-操作符入门
操作符入门“创建”操作符创建 被观察者( Observable) 对象 & 发送事件。普通创建操作符1:create作用:完整创建1个被观察者对象(Observable)Observable<Integer> observable = Observable.create(new ObservableOnSubscribe<Integer&g...原创 2018-07-25 21:40:20 · 368 阅读 · 0 评论 -
从零学习RxJava2.0-简单入门
前言函数式编程:函数式编程是种编程方式,它将电脑运算视为函数的计算。函数编程语言最重要的基础是λ演算(lambda calculus),而且λ演算的函数可以接受函数当作输入(参数)和输出(返回值),和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。和过程化编程相比,函数式编程里函数的计算可随时调用。RXJava当我们的异步网络请求用的越来越多的时候,rxjava是一...原创 2018-07-25 20:20:12 · 293 阅读 · 0 评论 -
浅析观察者模式
观察者模式观察者模式又被称为发布——订阅模式,属于行为型设计模式的一种,是一个在项目中经常使用的模式。定义:定义对象间一种一对多的依赖关系,每当一个对象改变状态时,则所有依赖于他的对象都会得到通知并被自动更新。四个角色1.Subject抽象主题,(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可...原创 2018-07-24 20:43:40 · 260 阅读 · 0 评论 -
四大组件之Activity的工作过程学习
Activity的启动流程让我们从Activity的启动开始看起,当我们在程序中显式启动一个Activity的时候,我们通常使用如下两句代码Intent intent = new Intent(this,SecondActivity.class);startActivity(intent);直接进startActivity()方法看看,发现他重载了好多次,但最终调用的都是s...原创 2018-07-24 19:30:30 · 388 阅读 · 0 评论 -
android之Window学习
Windowwindow,顾名思义,窗口,他是一个抽象的概念,我们可以将Window理解为手机屏幕的区域他是一个抽象类,Window的具体实现类是PhoneWindow,实现位于WindowManagerService中,如果我们接触过View事件分发的原理,就会知道一个Activity的最底层就是一个PhoneWindow,然后再是DecorWindow等一.简单使用先来...原创 2018-07-23 18:12:44 · 386 阅读 · 0 评论 -
Android 数据库学习总结
android 数据库学习总结android 为了让我们能方便的使用数据库,给我们提供了一个SQLiteOpenHelper帮助类它是一个抽象类,所以我们需要自定义一个类来继承这个类来实现我们创建数据库的逻辑实现逻辑创建以及更新先说一下他的构造方法,我们一般重写第一个(有四个参数的)构造方法四个参数分别的意思是(context,数据库名,null(这里也允许...原创 2018-06-09 16:28:08 · 1538 阅读 · 0 评论 -
LitePal学习
Android数据库的git库LitePal学习学习之前配置依赖库,具体版本见官方gitcompile 'org.litepal.android:core:2.0.0'如果是android studio,以project打开项目,在src->main下新建文件夹命名assets,再在内部新建litepal.xml文件具体结构看图(这里一定不能错) lite...原创 2018-06-09 16:27:42 · 247 阅读 · 0 评论 -
OkHttp源码解析
OkHttp源码解析同步请求方式OkHttpClient client = new OkHttpClient.Builder().build();final Request request = new Request.Builder() .url("") .build();try { Response response = client....原创 2018-06-23 21:34:21 · 939 阅读 · 0 评论 -
安卓动画学习(四) ---PropertyValuesHolder的介绍
安卓属性动画进阶PropertyValuesHolder与Keyframe可能大家都注意到了在ObjectAnimator和ValueAnimator中还有一个创建实例的方法ofPropertyValuesHolder()因为ObjectAnimator是继承自ValueAnimator的,我们就来学习一下ObjectAnimator.ofPropertyValuesHolder()吧,Value...原创 2018-05-24 21:18:42 · 1099 阅读 · 0 评论 -
安卓动画学习(三)--objectAnimator的用法
安卓动画学习(三)在上一篇我们看到了估值器,和ValueAnimator这个类的简单使用方法,可是归根结底还是太麻烦,因为所有的东西都需要我们自己去写这一篇给大家带来ObjectAnimator,他是ValueAnimator的子类,实现了与控件绑定,我们来看看具体用法吧ObjectAnimator简单使用 ObjectAnimator animator = ObjectAnimator.o...原创 2018-05-24 21:18:01 · 390 阅读 · 0 评论 -
安卓动画学习(二)--属性动画(一)
安卓动画学习(属性动画)我们知道,View动画是只能改变视图的显示效果,而对控件的自身属性是无法改变的android 在API Level 11引入了Property Animation,实现了对控件自身属性改变的属性动画android.animation有很多接口和实现类,通过使用这些接口和实现类,我们可以很方便的生成我们自己想要的动画效果下面,我大概列举一下几个平时可能用到的接口或者类,其他的...原创 2018-05-24 21:16:47 · 892 阅读 · 0 评论 -
Volley学习及源码分析总结
Volley的简单使用Volley是2013年google退出的网络框架,他的优点是适合进行数据量不大但频繁的通信,对于一些数据量大的网络请求却是表现的非常差要使用Volley请求网络,我们需要下载到他的jar包,在项目下add他使用队列来管理网络请求,接下来看一下Volley的简单用法先创建管理网络请求的队列RequestQueue queue = Volley.newRe...原创 2018-06-11 23:19:53 · 316 阅读 · 0 评论 -
从零学习RxJava2.0-功能性操作符
功能性操作符辅助被观察者(Observable) 在发送事件时实现一些功能性需求来张盗的图 来一一学习吧订阅(连接被观察者 & 观察者)subscribe对于这个这里就不再说了,太熟悉了线程调度(切换被观察者和观察者的线程)subscribeOn , observeOn代码Observable.create(new Ob...原创 2018-07-26 20:27:32 · 546 阅读 · 0 评论 -
Android-Service再探
Service先看一下官方的解释A Service is an application component representing either an application’s desire to perform a longer-running operation while not interacting with the user or to supply functionali...原创 2018-07-27 16:21:50 · 343 阅读 · 0 评论 -
Android-IPC机制探索
IPC机制IPC含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。按照操作系统的说法,在pc或者移动设备上,进程一般指一个执行单元,一般指一个程序或者一个应用。对于Android这个基于Linux内核的移动操作系统,他的进程间通信方式并不完全依赖于Linux,相反,他有自己的进程间通信方式 ,在Android中最有特色的进程间通信方式就是Binder了,通过Binder可...原创 2018-07-31 10:38:56 · 611 阅读 · 0 评论 -
Android 使用Room 生成不了数据库文件
异常如下java.lang.RuntimeException: cannot find implementation for com.snowman.myapplication.UserDatabase. UserDatabase_Impl does not existcom.snowman.myapplication.UserDatabase. UserDatabase_Impl does ...原创 2019-08-06 20:32:29 · 5800 阅读 · 0 评论 -
Android-事件分发机制
Android-事件分发机制注:参考郭神博客本人在郭神的基础上做下总结,尽量以更简单的语法让你事件分发机制开始从View的点击事件开始吧还记得我们在代码中怎么为一个Button设置他的点击事件嘛?如下findViewById(R.id.bt_test).setOnClickListener(new View.OnClickListener() { @Ov...原创 2019-03-23 14:57:46 · 457 阅读 · 0 评论 -
Android-约束布局学习
Android-约束布局学习相对位置属性属性名含义layout_constraintTop_toTopOf本布局的下方是谁layout_constraintBottom_toBottomOf本布局的下方是谁layout_constraintEnd_toEndOf本布局的右边是谁layout_constraintStart_toStartOf本布局的...原创 2019-03-03 23:14:13 · 907 阅读 · 0 评论 -
AsyncTask源码解析
AsyncTask源码解析AsyncTask是安卓中的一种轻量级的异步任务类,他可以在线程池中执行后台任务,然后把执行进度与结果传递给主线程,从而实现后台任务与UI线程的交互,我们现在先来看看他的简单使用方法简单使用一般来说,我们所要执行的耗时任务莫过于网络请求了,下面这个例子就以网络请求为例AsyncTask是一个抽象类,我们需要去写一个继承自AsyncTask的类来实现我们...原创 2018-09-12 16:48:33 · 169 阅读 · 0 评论 -
深入理解WindowManager
WindowManager我们知道Window是通过WindowManager来管理的,而与WindowManager对应的还有一个WMS(WindowManagerService)那么他们两者到底是怎么工作的呢?接下来我们就来具体分许一下这篇文章我们重点分析WindowManager的基本知识脉络,而不去看具体的实现细节,我们只关心WindowManager和WindowManagerS...原创 2018-08-13 12:54:15 · 3003 阅读 · 0 评论 -
Android值Intent匹配规则挖掘(PMS获取系统apk信息过程)
原型模式介绍原型模式是一个创建型模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制出一个内部属性一致的对象,这个过程也就是我们俗称的克隆,被复制的实例就是我们所称的原型,这个原型是可定制的,原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效定义用原型实例指定创建对象的种类,并通过复制这些原型创建新的对象...原创 2018-08-15 12:34:57 · 1183 阅读 · 0 评论 -
Android的Handler消息机制
Android的消息机制概述Android的消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。Message只是一个单链表构成的存储消息的列表Looper是一个无限循环的机制,一遍一遍的去查询Message是否有新消息,如果有就去处理,没有就继续循环等待Looper中还有一个特殊的概念(ThreadLocal)...原创 2018-08-03 10:46:00 · 303 阅读 · 0 评论 -
Android中的IPC方式
Android中的IPC方式在上一篇,我们探索了IPC的基本知识,序列化,和Binder的基本实现原理本篇我们来看看Android中的一些具体的跨进程通信的方式使用Bundle我们知道,四大组件中的三大组件(Activity,Service,Broadcast)都是支持在Intent中传输Bundle数据的,由于Bundle实现了Parcelable接口,所以他可以很方便的...原创 2018-08-02 09:41:15 · 1853 阅读 · 0 评论 -
为控件添加阴影效果-最简单的实现方法
为控件添加阴影效果-最简单的实现方法我们知道Android5.0 引入了Z轴的概念,于是就有着这种风格,也就是目前比较火的Material Design。我们可以直接为控件设置android:elevation这个属性,来让他实现“漂浮”效果可是,我们日常常用的一些最基本的Button这些东西却是不支持这个属性那么,我们如果想让我们的控件浮起来,该怎么办呢?实现效果 ...原创 2018-08-06 19:35:41 · 3201 阅读 · 0 评论 -
设计模式--Builder模式
Builder模式模式介绍Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下可以更精确的控制对象的构造流程该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件的表示隔离开来。因为一个对象可能有很多个组成部分,比如说汽车有车轮,方向盘,发动机,还有各种小零件等,如何将这些部件组装成一辆汽车,这个过程是相当漫长的,对于这种情...原创 2018-08-10 21:58:39 · 361 阅读 · 0 评论 -
设计模式之单例模式+LayoutInflater分析
单例模式单例模式是应用最广的模式之一,在应用这个模式时,单例对象的类必须保证只有一个实例存在,许多时候整个系统只需要拥有一个全局变量,这样有利于我们协调系统整体的行为定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例使用场景:当创建一个对象需要消耗的资源太多的时候,如要访问IO和数据库等资源的时候,就可以考虑使用单例模式UML类图 角色介绍Client:高层客...原创 2018-08-09 21:53:39 · 419 阅读 · 0 评论 -
Android四大组件-Service工作过程探究
Service工作过程服务是一种运行在后台的组件,可能我们一般情况是见不到服务的具象表现的,但是他在我们的android开发中却是不可或缺的东西,下来我们就来结合源码具体分析一下他的工作过程如果对service的使用还是不太了解的话,烦请移驾这里Service运行状态我们知道,service分为两种工作状态,启动状态(主要用于后台数据的计算),绑定状态(主要用于其他组件和Ser...原创 2018-07-27 21:59:43 · 679 阅读 · 0 评论 -
安卓动画学习(一)
安卓动画学习(View动画)动画的分类先贴官方的解释An animation resource can define one of two types of animations: Property Animation Creates an animation by modifying an object's property values over a set peri...原创 2018-05-23 21:12:55 · 611 阅读 · 0 评论 -
shape标签用法
shape标签用法参考博客详解shape标签用法在res/drawable目录下的xml文件<shape xmlns:android="http://schemas.android.com/apk/res/android" > </shape>基本属性(corners、gradient、padding、size、solid、stroke)Corners--圆...原创 2018-05-23 21:12:04 · 495 阅读 · 0 评论 -
我的自定义View之旅(一)
打算好好学一学自定义控件,然后就尽量写一下连载博客吧先从自定义View开始先说一下今天的自定义VIew实现的功能就是像TextView一样能显示文字,即可贪多嚼不烂,一步一步慢慢来一,定义自己View的属性当我们需要使用一个成品View的时候,总会在xml文件里面设置它的好多好多属性,所以第一步先来看看自定义属性吧在value文件夹下的attrs.xml(没有这个文件则...原创 2018-04-26 23:16:56 · 256 阅读 · 0 评论 -
开发艺术探索-看源码探究View的事件分发机制
嗯,跟着开发艺术探索的步骤,然后自己在源码里面找大体步骤当一个点击事件发生时,先传递给当前的Activity -&gt; Activity内部的Window -&gt; decorview -&gt; setContentView()里面我们写的根View 注,我是在jdk-26下面看的首先事件来到Activity在dispatchTouchEvent()这个...原创 2018-05-10 19:20:13 · 161 阅读 · 0 评论 -
LayoutInflater加载布局时的inflate方法的第三个参数attachToRoot
如果root为null,无论attachToRoot为true或者false,效果都是一样的如果root不为null,attachToRoot为true,表示将layout布局添加到root布局中如果root不为null,attachToRoot为false,表示不将layout布局添加到root布局,若要添加则需要手动addView如果root不为null,不设置attachToRoot...原创 2018-04-20 23:05:25 · 6593 阅读 · 0 评论 -
安卓实现富文本(1)
本篇文章实现自我编辑富文本,就是说可以实现让自己编辑的文字以富文本的形式展示主要参考的是这位大神的博客展示富文本的思路首先需要拿到用户在编辑框编辑的文字然后根据用户选择的富文本方式(比如说,一些文字的颜色改变,文字背景改变,部分文字变大变小等等)用特定的工厂类将用户选择的文字包装即可嗯。。。。。关于这个工厂类google已经帮我们写好了,接下来看我们直接用就好 ###先来看下...原创 2018-04-23 16:43:20 · 2568 阅读 · 0 评论 -
RecycleView添加headerView
这两日在写一个小东西,需要给RecycleView添加一个headerView(轮播图),总结一下吧思路在RecycleView的Adapter里面声明一个内部view变量然后在CreatView方法里面判断位置,如果是position为0的话就代表加载的是第一个那么就把我们事先声明的View放在这个位置代码public class RecycleViewAdapt...原创 2018-04-22 11:05:43 · 1311 阅读 · 0 评论 -
NavigationView动态设置头像
今天准备在项目中为我的NavigationView里面的header部分动态设置头像时出错了先来看一下我的错误做法第一次我是直接用findViewByID想得到header里面的ImageView的控件实例的却是直接报空指针,百思不得其解第二次我发现NavigationView里面有个可以直接得到header的方法,看下图可以发现,三个方法都返回的是header里面的控件实例,可用了...原创 2018-04-12 15:56:35 · 941 阅读 · 0 评论 -
NavigationView修改菜单栏字体样式
据说这个NavigationView是新东西,所以一般的直接设置不管用,看下面吧在drawable里面新建xml文件<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item an...原创 2018-04-10 17:31:56 · 1735 阅读 · 0 评论 -
网络爬虫之模拟登陆(二)安卓okhttp模拟登陆
总算把模拟登陆看的有点眉目了,大概写一下总结吧!之前那个博客写的有点错误,想想,还是不删了,以后看到就当是个弯路的教训先说说模拟登陆的原理吧模拟登陆就是用网络框架模拟浏览器访问网站的步骤进一步得到想要的数据首先说一下服务器与客户端服务器端有一个类似于键值对的东西一块存储空间,一个cookie值,两者一一对应当我们首次访问的时候,服务器就给我们创建键值对,并把cookie给客...原创 2018-02-25 21:06:53 · 1291 阅读 · 0 评论