Android
文章平均质量分 65
徐乙
这个作者很懒,什么都没留下…
展开
-
3秒钟不懂你砍我:网络请求
1.定义接口public interface nikaixinjiuhao { void dowhat(String s);}2.实例化这个接口,实例化里的操作,就是原创 2017-10-27 13:28:41 · 473 阅读 · 0 评论 -
3秒钟不懂你砍我:接口回调
之所以用到接口回调,是不想把网络请求暴露在外面,算是没事找事,不过接口回调还是值得记录的,这里拿网络请求来举例更为清晰。1.定义接口public interface nikaixinjiuhao { void dowhat(String s);}2.网络请求的方法,这里就是告诉那些需要我网络数据才能完成初始化的东西,嗯,我这里数据请求好了,我把数据给你,你也可以开始原创 2017-10-27 13:58:53 · 598 阅读 · 0 评论 -
3秒钟不懂你砍我:抽象类和接口,5分钟包看完,看完包会,史上最强教程
原文:http://www.cnblogs.com/dolphin0520/p/3811437.html深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下J转载 2017-10-28 12:47:53 · 301 阅读 · 0 评论 -
3秒钟不懂你砍我:RecyclerView下拉刷新和上拉加载更多
借鉴自:http://blog.csdn.net/jerrywu145/article/details/52225898先直接写可以拿去用的东西。1.下拉刷新 SwipeRefreshLayout2.上拉加载更多 RecyclerView.OnScrolListener下拉刷新布局<android.support.v4.widget.SwipeRefreshLayout原创 2017-10-28 20:36:10 · 450 阅读 · 0 评论 -
3秒钟不懂你砍我:RecyclerView下拉刷新和上拉加载更多(开源中国List业务流程全解析)
这里以开源中国开源资讯页面为例子。这个页面数据的url:http://www.oschina.net/action/apiv2/news?pageToken=里面存放的是嵌套了3层的json数据。用GsonFormat转化为bean,为了简短一点,我删去了getter,setterpackage com.example.oschina6.bean;import org原创 2017-10-28 21:14:13 · 1096 阅读 · 0 评论 -
3秒钟不懂你砍我:一行代码解决ListView,GridView的一切
这里用了鸿洋的框架依赖compile 'com.joanzapata.android:base-adapter-helper:1.1.11'初始化适配器方法(后期我会继续封装)private QuickAdapter initLGViewAdapter() { return new QuickAdapter(//这个String可以换成bean之类的数据类型,原创 2017-10-28 12:50:05 · 659 阅读 · 0 评论 -
3秒钟肯定懂不了:面向接口编程
(这个3秒钟你肯定懂不了,但是这个文章看一看真的很有好处,下一次我尽量自己写一篇,用几句话,让你真正彻底领悟面向接口。)(为什么要领悟面向接口呢,这非常非常非常有助于提升你的代码境界,接项目再多,也只是提升熟练度,真正提升你代码和思维境界的是啥:算法数据结构设计模式软件架构Thinking in JAVA)(语言和框架只是一时的,上面的东西是永远都不会变的,思维的深度和转载 2017-10-29 13:08:51 · 288 阅读 · 0 评论 -
安卓的消息机制
转载自:http://blog.csdn.net/liuhe688/article/details/6407225/在分析Android消息机制之前,我们先来看一段代码:[java] view plain copypublic class MainActivity extends Activity implements V转载 2017-11-08 23:22:08 · 315 阅读 · 0 评论 -
动态添加碎片的正确姿势,防止碎片的重新创建,用add取代replace
replace方法会相当于add和remove other,当前碎片的栈中清除所有的碎片实例,仅仅留下当前要加入的碎片实例。缺点:浪费资源,且不能保存原有碎片状态解决:仅仅使用add和hide,此外类中内部维护一个当前栈顶的碎片实例,进行当前栈顶有无碎片的判断,有无想添加的那个碎片的判断protected void addFragment(int frameLayoutId, Fr原创 2017-11-09 16:25:40 · 562 阅读 · 0 评论 -
BaseViewPagerFragment,公共的ViewPager父类,一句话搞定(类似于组合模式)
BaseViewPagerFragment(只需要把获取碎片集合和获取标题集合的方法abstract,交给子类去实现即可)public abstract class BaseViewPagerFragment extends BaseFragment { @BindView(R.id.course_tl) protected TabLayout mCourseTl; @B...原创 2017-11-03 11:28:14 · 459 阅读 · 0 评论 -
3秒钟不懂你砍我:Toolbar,没有废话的纯教程
1.隐藏Toolbarname="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">2.xml(它是容器控件)<android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="50d原创 2017-11-02 20:21:09 · 258 阅读 · 0 评论 -
自定义底部导航栏控件NavigationButton
首先为什么要自定义一个1.体现了模块性2.NavigationButton内部维护一个碎片实例,并保证了碎片的单例性3.NavigationButton是封装的控件,不与参数有关,体现了开闭原则,体现了高度可重用性4.内部可以定义更多操作,增强了稳定性,并且可以根据需要拦截底部点击事件5.直接利用NavigationButton初始化了碎片的addNavigatio原创 2017-11-03 14:18:16 · 3346 阅读 · 0 评论 -
视图绘制三部曲之onMeasure()源码最简解析 带你轻松领略源代码之美
performTraversals():(怎么找到这个类:使用as的全局搜索功能搜索ViewRootImpl)(太长了:由于这个方法800多行,所以着重挑选出与视图绘制有关的内容。)(为什么要看这个类?View的绘制从这个方法开始。)取得父视图的大小int childWidthMeasureSpec = getRootMeasureSpec(mWidth, lp原创 2017-11-19 15:02:34 · 269 阅读 · 0 评论 -
LayoutInflater源码最简解读 带你轻松领略源代码之美
首先,我们获取LayoutInflater的方式:LayoutInflater.fron(context);是被封装的过的public static LayoutInflater from(Context context) { LayoutInflater LayoutInflater = (LayoutInflater) context.getSystem原创 2017-11-18 21:38:20 · 391 阅读 · 0 评论 -
Android碎片事务提交transaction.commit()和transaction.commitnow()的区别以及源码完全解析
FragmentManager manager = getFragmentManager();FragmentTransaction transaction = manager.beginTransaction();transaction.add(mContainerId, mFragment);transaction.commit();正常情况是commit就提交了。但是原创 2017-11-28 20:50:24 · 11389 阅读 · 0 评论 -
深入了解RecyclerView预布局状态(preLayout)
看过RecyclerView源码的人都知道,他里面有个preLayout的状态,也有一个postLayout的状态,经常会搞得人云里雾里。大家都知道,preLayout阶段是用于记录数据集改变前子控件的信息,postLayout阶段是用于记录数据集改变后子空间的信息,但是具体怎样的阶段才是预布局阶段呢?下面我们追溯一下源码。先看一下RecyclerView中的状态类中的有关预布局状态的原创 2017-12-08 14:44:30 · 3584 阅读 · 0 评论 -
Android函数响应式编程——RxJava最快速度入门
gradle// RxJava compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2.1'创建Observer(观察者)(这里的方法看意思也看的出来,实在不行看日志也看得出来)Subscriber subscriber = new Subscriber() {原创 2017-12-09 17:01:37 · 170 阅读 · 0 评论 -
Android函数响应式编程——RxJava不完整定义回调,更灵动的观察者写法
gradle// RxJava compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2.1'RxJava不完整定义回调和正常的不一样,区别在于观察者的写法。不完整定义回调的写法更为灵动,我们对比一下。原来的:Subscriber subscrib原创 2017-12-09 17:34:21 · 582 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava辅助操作符delay、Do、subscribeOn、observeOn、timeout
1.delay:让被观察者2秒后再发送数据。rx.Observable.create(new rx.Observable.OnSubscribe() { @Override public void call(Subscribersuper Long> subscriber) { Long cur = System.currentTimeMillis();原创 2017-12-10 01:52:29 · 1294 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava组合操作符startWith、merge、concat、zip、combineLastest
1.startWith:给你被观察者的数据流前再增加一点同类型的数据,这里增加的是1,2rx.Observable.just(3, 4, 5).startWith(1, 2) .subscribe(new Action1() { @Override public void call(Integer integer) {原创 2017-12-10 00:05:48 · 2561 阅读 · 4 评论 -
Android函数响应式编程——必学的RxJava过滤操作符filter、elementAt、distinct、skip、take、ignoreElements、throttleFirst
之前采用的都是分开的写法,现在想想还是写在一起好。1.filter:例子中就是过滤大于2的rx.Observable.just(1,2,3,4).filter(new Func1, Boolean>() { @Override public Boolean call(Integer integer) { return integer > 2;原创 2017-12-09 21:40:00 · 1156 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava变换操作符map、flatMap、cast、concatMap、flatMapIterable、buffer、groupBy
gradle// RxJava compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2.1'变换操作符:对被观察者(Oberserver)要发射的数据进行修改,修改后再发送出去。1.map:把你原来观察者的数据进行修改(Retrofit就是采原创 2017-12-09 20:36:44 · 882 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava创建操作符create、just、from、interval、range、repeat
gradle// RxJava compile 'io.reactivex:rxjava:1.2.0' compile 'io.reactivex:rxandroid:1.2.1'如果看了之前的文章,就知道了create、just、from3个操作符。创建Observable(被观察者)的三种方法:1.rx.Observ原创 2017-12-09 18:04:05 · 493 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava错误处理操作符catch、retry
为什么要拦截异常?因为错误出现的时候会调用Subscriber的onError方法把错误分发出去,由SubsCriber自己来处理错误。但是如果每个Subscriber都处理一遍的话,工作量就太大了,这时候可以使用错误处理操作符,这时候可以使用错误处理操作符(?)。1.catchonErrorReturn:Observable遇到错误会发射一个特殊的值出去并调用观察者的onComple原创 2017-12-10 02:55:16 · 418 阅读 · 0 评论 -
Scroller实现View的滑动
弃用scrollBy的原因?滑动时,是瞬间完成的,用户体验不佳(在手拖着移动的时候不会看出明显区别,如果有一段是自动完成的,scrollBy会瞬间完成,Scroller就平滑的多了)这个弹性滑动又是怎么实现的呢?Scroller本身不能实现弹性滑动,需要和View中的computeScroller()配合。实现步骤:(也是用的自定义控件)1.在构造方法中初始化S原创 2017-11-17 00:54:52 · 399 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava条件操作符和布尔操作符all、contains、isEmpty、amb、defaultIfEmpty
布尔操作符1.all:判断Observable里的所有数据是否全部发射了,如果没有,返回falserx.Observable.just(1,2,3,4) .all(new Func1, Boolean>() { @Override public Boolean call(Integer integer) {原创 2017-12-10 15:07:34 · 501 阅读 · 0 评论 -
Android函数响应式编程——必学的RxJava转换操作符toList、toSortedList、toMap
1.toList:就是把你的Observable处理成一个集合rx.Observable.just(1,2,3).toList().subscribe(new Action1>() { @Override public void call(List integers) { for (int i : integers) { Log.i(原创 2017-12-10 15:24:18 · 1448 阅读 · 0 评论 -
Android函数响应式编程——RxJava的4大subject和线程控制
SubjectSubject既可以是一个Observer也可以是一个Observable,它用来连接两者。所以Subject被认为是Subject=Observable+Observer1.PublishSubjectPublishSubject在被创建完成之后立刻开始发射数据,所有有一个风险:在所有的订阅者订阅之前,数据可能已经发送了 。解决方法:1.确保所有订阅者的订阅比这原创 2017-12-10 15:47:17 · 662 阅读 · 0 评论 -
Android——RecyclerView——ViewHolder——源码注释翻译:ViewHolder的官方
/** * A ViewHolder describes an item view and metadata about its place within the RecyclerView. * * {@link Adapter} implementations should subclass ViewHolder and add fields for caching * potentia翻译 2017-11-30 01:51:53 · 491 阅读 · 0 评论 -
Android——RecyclerView——ViewHolder全部源码及翻译、注释
看了rv的源码 知道了他有 viewholder、动画类、自己定义的layoutparams类,recycler类等。viewHolder:相当于就是一个item,只不过建了这样一个类,去维护这个item,以及view的全部元数据。//内部维护1个item,在oncreateviewholder中,每次都是不一样的itemviewpublic final View翻译 2017-12-02 01:42:29 · 2891 阅读 · 0 评论 -
Android——RecyclerView——Recycler类——源码注释翻译:Recycler类的官方解释
/** * A Recycler is responsible for managing scrapped or detached item views for reuse. * * A "scrapped" view is a view that is still attached to its parent RecyclerView but * that has been marked翻译 2017-12-02 13:36:24 · 410 阅读 · 0 评论 -
RecyclerView实现多种Item,最优雅的方式,getItemViewType(以即时通讯app为例子)
实现多种item有许多种方式,我们这里就用RecyclerView提供给我们的方式,getItemViewType。这个方法是RecyclerView专门开放给我们用来实现多item类型的方法,所以他是最优雅的。我仔细看过源码,这种方式用来实现多种Item,绝对是丝毫不影响性能的,请放心使用。以即时通讯app为例子,你肯定要有一左一右的对话框吧。所以在Adapter中先定义原创 2017-12-19 19:03:16 · 5092 阅读 · 4 评论 -
5大方法完美解决View的移动:layout(),offsetLeftAndRight(),MarginLayoutParams,动画,scrollTo
借鉴自Android进阶之光,刘望舒的好书!(此外再介绍各个阶段应该看的书:入门 第一行代码 中阶 Android群英传(偏View) Android进阶之光(偏业务)高阶 Android开发艺术探索 (还有一本源代码解析好像挺不错的,不过我没看过))(这里采用自定义控件的方式,接下来我会写更具体的应用场景)自定义控件继承自View,里面就一个简单的方法,用原创 2017-11-17 00:37:51 · 1058 阅读 · 0 评论 -
Android——RecyclerView——Recycler类全部源码翻译及注释
总结一下:Recycler就是一个不折不扣的回收站,在里面针对ViewHolder进行一系列回收站应进行的操作。下一个看adapter类或者rvpool类 // mAttachedScrap是你recycler类中当前维护的废品吗final ArrayListmAttachedScrap = new ArrayList // mChangedScrap我猜测是将翻译 2017-12-02 21:27:59 · 1816 阅读 · 0 评论 -
Android给RecyclerView添加头(Header)和尾(Footer)和分标题(Title)——最简单的两种方法
给RecyclerView添加头和尾的方法很多,这里写两种最简单的方法。1.控制布局 显隐xml version="1.0" encoding="utf-8"?>xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" andro原创 2017-11-30 14:38:16 · 5783 阅读 · 0 评论 -
Android——RecyclerView——Adapter全部源码翻译及注释
总结一下:Adapter就是让你去子类实现一个多样化的Adapter,以满足不同数据,不同item的view的需求。与观察者来往密切,用来在数据集更新后更改view显示。private final AdapterDataObservablemObservable = new AdapterDataObservable();//观察者模式private boolean mHasS翻译 2017-12-03 17:04:56 · 698 阅读 · 0 评论 -
接口回调,观察者模式,消息机制3者的区别
接口回调,就是当你要执行一个操作的时候,为了解耦或者组件间的通信,不想在这执行,想在另一处地方执行,所以这个时候就可以创建一个接口,再调用他的方法,而这个接口是在另一个类中声明的,只需要把这个接口传给原来的那个类即可。所以接口回调简单来说是别处执行代码。可是消息机制也是别处执行代码啊?实际上,消息机制本质上也是用了接口回调,但是他可以有弄出来一个队列,里面可以每一个队列中的原创 2017-12-20 22:09:39 · 1190 阅读 · 0 评论 -
Android事件分发机制
借鉴自郭霖博文http://blog.csdn.net/guolin_blog/article/details/9153747,这里浓缩一下首先,onTouch和onClick的对比onTouch是优先于onClick的。意思是同样注册了这两个监听,onTouch会先被调用其次,onTouch的返回值一个触摸屏幕的手势传下来,如果你设置为true,那么就原创 2017-11-24 20:34:18 · 198 阅读 · 0 评论 -
Android自定义控件:左滑删除itemRecyclerView,ListView,GrdiView通配,教你如何最快最轻松定制,而不是复制粘贴!
这里我不直接贴大段代码,不直接讲用的什么什么技术,什么什么框架,从设计思路出发,到难点剖析,以最基础也是最快速的方式搞定他。(这里未借鉴任何网上代码,全是自己想自己手撸的,其实真的不难)思路:你需要重写哪个控件?是recyclerview还是包含item的relativelayout或者是lineralayout?我个人比较崇尚重用性,为了在任何下拉控件中都能使用,我选原创 2017-11-24 23:39:32 · 855 阅读 · 1 评论 -
Android一行代码搞定RecyclerView的一切!
这里用的是我的偶像鸿洋的框架依赖(其实就是一个通用的ViewHolder和Adapter)compile 'com.android.support:recyclerview-v7:25.3.1'compile 'com.zhy:base-rvadapter:3.0.3'定义一个方法,初始化适配器,返回值就是这个适配器private CommonAdapter initRec原创 2017-10-28 12:38:13 · 990 阅读 · 0 评论