TouTiao开源项目 分析笔记3】的更多相关文章

1.Constant常量定义类 1.1.源代码 public class Constant { public static final String USER_AGENT_MOBILE = "Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Mobile Safari/537.36"; public st…
1.NewsChannelBean简单类笔记 1.1.Comparable接口的实现和使用 参考文章:Comparable接口的实现和使用. 因为NewsChannelBean实现了Comparable<NewsChannelBean> public class NewsChannelBean implements Comparable<NewsChannelBean> 一开始不明白为什么要实现这个接口. ==>其实就是强行对实现它的每个类的对象进行整体排序. 之后会报错,因…
1.效果预览 1.1.如下图所以,到目前为止所有的功能. 2.从InitApp开始->SplashActivity->MainActivity 2.1.InitApp源代码.这是整个项目的Application. public class InitApp extends MultiDexApplication { public static Context AppContext; @Override public void onCreate(){ super.onCreate(); AppCo…
1.预览效果 1.1.首先看一下需要实现的效果. 第一种,文字类型新闻. 第二种,图片类型新闻. 1.2.在NewsArticleTextViewBinder中设置了点击事件 RxView.clicks(holder.itemView) .throttleFirst(1, TimeUnit.SECONDS) .subscribe(new Consumer<Object>() { @Override public void accept(@io.reactivex.annotations.Non…
1.构建视频主列表的整体碎片VideoTabLayout 1.1.首先创建一个VideoTabLayout package com.jasonjan.headnews.module.video; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Frag…
1.RxJava的Observable数据操作符总结 1.1.Map操作符 Map操作符对原始Observable发射的没一项数据应用一个你选择的函数, 然后返回一个发射这些结果的Observable. 简单例子: private void testMap() { String[]items = {"just1","just2","just3","just4","just5","just6&quo…
1.InitApp==>项目的入口Application 1.1.继承了MultiDexApplication 超过65K方法的APP,会遇到65535的错误.原因就是为了支持比较大型的APP而产生. 参考文章:Android分包MultiDex原理详解. 1.2.在build.gradle中修改multiDexEnabled 然后记得在dependencies中加: implementation 'com.android.support:multidex:1.0.2' 1.3.用第三方库fac…
1.效果预览 1.1.需要做到的真实效果 1.2.触发的点击事件 在MediaArticleVideoViewBinder的每一个item点击事件中: VideoContentActivity.launch(bean); 在NewsArticleVideoViewViewBinder的每一个item点击事件中: VideoContentActivity.launch(item); 2.视频详情的活动 2.1.首先看一下第三方库==>视频播放==>jiecaovideoplayer的使用 git…
1.效果预览 1.1.要实现的效果 1.2.如何调转到新闻媒体专栏 点击右上角的用户图标. 在新闻详情页面的Fragment的菜单点击事件中触发. case R.id.action_open_media_home: MediaHomeActivity.launch(mediaId); break; 2.媒体主页的活动页面 2.1.源代码 package com.jasonjan.headnews.module.media.home; import android.content.Intent;…
1.要达到的效果 1.1.主要效果图 点击了标题栏的消息图标后,然后会跳转到评论详情的页面. 1.2.触发的点击事件 在新闻详情的片段中的菜单点击事件中 设置上方标题栏的消息标的监听事件 case R.id.action_open_comment: NewsCommentActivity.launch(bean.getGroup_id() + "", bean.getItem_id() + ""); break; bean就是某一个新闻的一些属性,从最前面item中…
1.段子页面详情 1.1.先看看预览界面吧 左边的页面已经实现了,现在的目的就是要实现点击左侧的每一个item 然后跳转到右边相应的段子详情页面. 1.2.首先肯定有右侧这个活动==>JokeCommentActivity. 外部如何启动? fun launch(bean: JokeContentBean.DataBean.GroupBean) { InitApp.AppContext.startActivity(Intent(InitApp.AppContext, JokeCommentAct…
1.实现订阅号的基础类 1.1.本地订阅号的Bean类==>MediaChannelBean public class MediaChannelBean implements Parcelable { public static final Creator<MediaChannelBean> CREATOR = new Creator<MediaChannelBean>() { @Override public MediaChannelBean createFromParce…
1.构建图片主列表的整体片段PhotoTabLayout 1.1.首先创建一个PhotoTabLayout片段 public class PhotoTabLayout extends Fragment { private static final String TAG = "PhotoTabLayout"; private static PhotoTabLayout instance = null; private static int pageSize = InitApp.AppCo…
1.根据API返回创建几个基础的Bean 1.1.WendaArticleDataBean类 API返回的数据如下: /** * cell_type : 36 * extra : {"wenda_video":[],"show_answer":false,"video_large_card":false,"label_style":{"color_type":0,"name":"…
1.整体构架 1.1.以一个段子页面为例,列出用到的主要的类,以图片的方式展示. 1.2.基础类 这里最基础的接口有:   IBaseView<T>==>定义了5个方法. 然后最基础的碎片是:BaseFragment<T extends IBasePresenter>==>3个抽象方法. 然后继承BaseFragment的抽象类:LazyLoadFragment<T extends IBasePresenter>==>1个抽象类 然后继承LazyLoa…
1.深入理解RxJava 1.1.基本上现在的APP都会有请求网络,然后处理回调的业务吧. 如果请求的数据很多,业务越来越复杂,怎么处理呢? 这里我用到了RxJava来帮我处理业务. RxJava主要复杂事件的通知和订阅.这个挺起来没有什么概念. 其实说白了,RxJava就是优雅地处理函数回调. 1.2.推荐参考文章:我们为什么要用rxjava? 这篇文章以一个案例的方式,详细解释了rxjava的功能. 下面我来深入分析一下. 1.3.以通常思维模式来处理这个案例. 这个比较好理解,但是这种方式…
1.效果预览 1.1.效果预览,从问答列表开始 前面实现了从列表到内容. 这里主要讲解从内容到详情. 点击每一个回答内容,进入回答详情页面. 1.2.触发的点击事件 在WendaContentViewBinder中,设置item点击事件: WendaDetailActivity.lauch(bean): 2.问答详情的活动页面 2.1.源代码 public class WendaDetailActivity extends BaseActivity { private static final…
1.真实页面预览 1.1.成果预览 首先是问答列表 然后每个item设置点击事件,进入问答内容列表 然后每一个问答内容也设置点击事件,进入问答详情 1.2.触发事件. 在WendaArticleOneImgViewBinder中,设置item的点击事件, 跳转到WendaContentActivity. 在WendaArticleTextViewBinder中,设置item的点击事件, 跳转到WendaContentActivity. 在WendaArticleThreeImgViewBinde…
1.以新闻页中的段子数据显示为例 1.1.首先执行InitApp==>SplashActivity. 因为在AndroidManifest.xml中定义了一个<intent-filter>中有定义启动页 1.2.然后SplashActivity==>MainActivity. 这是是intent的跳转. 1.3.然后执行MainActivity中的onCreate==>执行里面的initView() override fun onCreate(savedInstanceSta…
1.搭建NewsTabLayout片段 1.1.加载布局 @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_news_tab, container, false); initV…
本机配置cuda8.0使用的cudnn是下面要说的重点,vs2015,win10,1080Ti 下载了开源项目:https://github.com/senlinuc/caffe_ocr 编译的时候报错:caffe_ocr-master/src/caffe/layers/DenseBlock_layer.cu(283): error : too many arguments in function call 调用的地方: CUDNN_CHECK(cudnnSetConvolution2dDesc…
git上搜了几个platform的代码,有一个项目给我感触挺深的. https://github.com/ThomasHansson/Appium-cross-platform-example/tree/master/AppiumExample/app/Android https://github.com/patrickfav/uber-adb-tools/blob/master/src/main/java/at/favre/tools/uberadb/parser/AdbDevicesPars…
近几日想在一个项目中引进一个Socket Server,用来接收客户端发送的命令消息并根据具体的业务逻辑对消息进行处理,然后转发给其它在线的客户端.因为以前在博客园关注过江大渔开源的SuperSocket,后来便在Github和Codeplex上一直关注该项目,但仅仅限于关注和了解.这次想通过具体的实践进一步学习该框架.我觉得一个优秀的开源项目离不开漂亮的代码.清晰的文档.完善的测试.持续的更新,当然从普通走向卓越更离不开社区的支持(源码.宣传.案例及文档等).而SuperSocket对我个人而…
很多App要做到极致的话,对网络状态的监听是很有必要的,比如在网络差的时候加载质量一般的小图,缩略图,在网络好的时候,加载高清大图,脸书的android 客户端就是这么做的, 当然伟大的脸书也把这部分代码开源出来,今天就来带着大家分析一下脸书的这个开源代码. GitHub 地址https://github.com/facebook/network-connection-class 注意这个项目下载下来以后 会报很多错误,导致很多人运行不了,大家要根据各自电脑不同的情况修改gradle脚本,才能让…
1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationView(帧动画)方法先将一个gif动画利用软件分割成若干静态图片,然后按照一定的时间间隔和播放顺序一帧一帧播放图片,从而给用户体验仿佛是动画gif播放的效果 2.其实网上的开源项目中有更为完善的gif动画播放的代码,下面以此为例进一步了解开源项目的使用: (1)在https://github.com/网…
记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScrollView控件(实现QQ5.0侧滑效果)> 今天换一种实现方式,来说下GitHub上非常优秀的开源项目SlidingMenu的使用,它是一种比较新的界面效果,在主界面左滑或右滑出现设置界面效果,能方便的进行各种操作.市面上很多优秀的APP都采用了这种界面方案,像facebook.人人网.everyno…
xUtils是github上的一个Android开源工具项目,其中HttpUtils模块是处理网络连接部分,刚好最近想整理下Android网络编程知识,今天学习下xUtils中HttpUtils. xUtils项目地址:  https://github.com/wyouflf/xUtils 先看看分析的时序图,了解下基本的过程 1. Activity创建HttpUtils对象 HttpUtils http = new HttpUtils(): 查看HttpUtils类的构造函数 public H…
1. 由于android没有自带的gif动画,我在Android(java)学习笔记198:Android下的帧动画(Drawable Animation) 播客中提到可以使用AnimationView(帧动画)方法先将一个gif动画利用软件分割成若干静态图片, 然后按照一定的时间间隔和播放顺序一帧一帧播放图片,从而给用户体验仿佛是动画gif播放的效果 2. 其实网上的开源项目中有更为完善的gif动画播放的代码,下面以此为例进一步了解开源项目的使用: (1)在https://github.com…
1.BaseApplication整个应用的开始 1.1.看一下代码 /* * Copyright 2017 GcsSloop * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *…
我们已经出台SlidingMenu使用:Android开源项目SlidingMenu本学习笔记(一个),接下来再深入学习下.依据滑出项的Menu切换到相应的页面 文件夹结构: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZGVuZzB6aGFvdGFp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt=""> 点击B…