# MVP-Retrofit-RxJava(项目年久失修,不再建议使用)
Android MVP+Retrofit+RxJava项目实践
1.登录 2.首页 3.图片
![登录](http://img.blog.csdn.net/20160720171017747)![首页](http://img.blog.csdn.net/20160720171056528)![图片](http://img.blog.csdn.net/20160720171615828)
整个项目使用MVP架构,导航栏使用TabLayout+ViewPager+Fragment,网络请求部分则使用目前流行的Retrofit+RxJava!
下拉刷新: PullRecylerView:https://github.com/baiyuliang/PullRecyclerView
CSDN:http://blog.csdn.net/baiyuliang2013/article/details/51516727
部分代码:
LoginActivity:
```
/**
* 登录
*/
void doLogin() {
String account = et_account.getText().toString();
if (TextUtils.isEmpty(account)) {
Toast.makeText(LoginActivity.this, "请输入您的手机号", Toast.LENGTH_SHORT).show();
return;
}
String pwd = et_pwd.getText().toString();
if (TextUtils.isEmpty(pwd)) {
Toast.makeText(LoginActivity.this, "请输入您的密码", Toast.LENGTH_SHORT).show();
return;
}
loginPresenter.login(account);
}
@Override
public void loginSuccess(LoginBean loginBean) {
startActivity(MainActivity.class);
finish();
Toast.makeText(LoginActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
}
@Override
public void loginFail(String message) {
Toast.makeText(LoginActivity.this, message, Toast.LENGTH_SHORT).show();
}
```
网络请求核心代码:
ApiUtil:
```
public class ApiUtil {
public static ApiService createApiService() {
OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder();
okHttpClientBuilder.connectTimeout(10 * 1000, TimeUnit.MILLISECONDS);//设置请求超时时间10s
OkHttpClient client = okHttpClientBuilder
.addInterceptor((chain) -> {//添加统一参数
Request request = chain.request();
HttpUrl url = request.url()
.newBuilder()
.addQueryParameter("showapi_appid", "20676")
.addQueryParameter("showapi_sign", "f730cd8c4cf8498895f83d43ddaba8c2")
.build();
request = request.newBuilder().url(url).build();
return chain.proceed(request);
})
.addInterceptor((chain) -> {//log拦截器
Request request = chain.request();
LogUtil.v("request>>" + request.toString());
Response response = chain.proceed(chain.request());
MediaType mediaType = response.body().contentType();
String content = response.body().string();
LogUtil.i("response>>" + content);
return response.newBuilder().body(ResponseBody.create(mediaType, content)).build();
})
.hostnameVerifier((hostname, session) -> true)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ApiService.API_ROOT)
.client(client)
.addConverterFactory(GsonConverterFactory.create(new Gson()))
.addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
return retrofit.create(ApiService.class);
}
}
```
#### 已知bug:
首页使用RecyclerView+Header的模式,整体为一个RecyclerView,因RecycleView没有类似ScrollView的滑动监听,因此测量RecycleView滑动距离时,在item数量变化情况下会影响测量结果,导致首页标题栏跟随手指滑动透明效果出现问题,此案例只作为学习使用,实际项目中可以使用阿里的vlayout,强大易用!
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
为了满足广大Android开发爱好者与从业者的学习需求,我们精心整理并上传了一份全面而实用的Android项目资源包。这份资源包内容丰富,涵盖了从基础知识到实战应用的全方位内容,旨在为开发者们提供一个便捷、高效的学习平台。 一、文件手册 资源包中的文件手册部分,详细记录了Android开发的核心知识点和常用技术。无论是初学者还是有一定经验的开发者,都能从中找到所需的学习资料。手册采用了简洁明了的排版方式,使得查阅更加方便快捷。同时,手册内容深入浅出,既适合新手入门,也能为老手提供有价值的参考。 二、项目实战与练习 为了让学习者能够将理论知识与实践相结合,我们特别准备了项目实战与练习部分。这部分内容包含了多个精心设计的Android项目案例,从需求分析、设计思路到实现过程,都有详细的讲解和代码示例。学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了一系列练习题,旨在巩固所学知识,检验学习成果。这些练习题既有基础题,也有难度较高的挑战题,适合不同层次的学习者进行练习。 三、Android开发工具集 在Android开发过程中,选择合适的工具能够大大提高开发效率。因此,我们整理了常用的Android开发工具集,包括开发工具、测试工具、性能优化工具等。这些工具都是经过我们精心筛选和测试的,能够帮助开发者们更加高效地进行Android开发工作。 总的来说,这份Android项目资源包是一份不可多得的学习资料,无论你是初学者还是有一定经验的开发者,都能从中受益匪浅。我们希望通过这份资源包,为广大Android开发爱好者与从业者提供一个更加便捷、高效的学习平台,共同推动Android开发领域的发展。
资源推荐
资源详情
资源评论
收起资源包目录
Android MVP+Retrofit+RxJava项目实践,简单易懂,可直接应用于项目!.zip (130个子文件)
appdemo.apk 2.66MB
gradlew.bat 2KB
.gitignore 97B
.gitignore 7B
build.gradle 1KB
build.gradle 491B
settings.gradle 15B
gradlew 5KB
gradle-wrapper.jar 52KB
PullBaseView.java 19KB
FragmentTab1.java 9KB
NewsAdapter.java 6KB
BaseAdapter.java 5KB
FragmentImageTab2.java 4KB
FragmentImageTab1.java 4KB
BaseActivity.java 4KB
BaseFragment.java 3KB
MyLinearLayoutManager.java 3KB
NewsPresenter.java 3KB
ImagesPresenter.java 3KB
RefreshAnimView.java 3KB
LoginActivity.java 3KB
LoginPresenter.java 2KB
MyProgressDialog.java 2KB
ApiUtil.java 2KB
RefreshLoadingView.java 2KB
ImagesAdapter.java 2KB
MainActivity.java 2KB
FragmentTab2.java 2KB
BasePresenter.java 2KB
FragmentMainTabAdapter.java 2KB
LoginModel.java 1KB
ApiService.java 1KB
FragmentVedioAdapter.java 1KB
PullRecyclerView.java 1KB
News.java 997B
FragmentTab3.java 850B
NewsModel.java 648B
BaseBean.java 601B
ImageModel.java 579B
ImagesMvpView.java 565B
NewsMvpView.java 563B
LogUtil.java 544B
LoginMvpView.java 439B
SysUtil.java 434B
LoginBean.java 385B
NewsBean.java 381B
Presenter.java 362B
MvpView.java 346B
MyApplication.java 305B
README.md 4KB
.name 7B
banner.png 295KB
takeout_img_list_loading_pic2.png 67KB
takeout_img_list_loading_pic1.png 63KB
head_default.png 34KB
ic_launcher.png 10KB
ic_loading_dialog.png 9KB
ic_launcher.png 8KB
ic_launcher.png 5KB
icon_tabbar_settings_selected.png 4KB
icon_tabbar_settings.png 4KB
icon_tabbar_favorites.png 4KB
icon_tabbar_favorites_selected.png 4KB
icon_tabbar_library.png 4KB
icon_tabbar_library_selected.png 4KB
ic_launcher.png 3KB
ic_launcher.png 2KB
ic_common_back_arrow_pressed.png 2KB
ic_common_back_arrow_normal.png 1KB
ic_pulltorefresh_arrow_up.png 912B
ic_pulltorefresh_arrow.png 823B
home_icon_cg_gllife.png 717B
ic_search.png 645B
home_icon_cg_gllaw.png 605B
home_icon_cg_glfriends.png 425B
fop.png 405B
home_icon_cg_glhouse.png 263B
iv_qr.png 209B
proguard-rules.pro 674B
gradle.properties 855B
gradle-wrapper.properties 231B
item_home_head.xml 5KB
fragment_3.xml 4KB
item_news.xml 2KB
misc.xml 2KB
common_title_bar.xml 2KB
activity_login.xml 2KB
fragment_1.xml 2KB
item_girls.xml 1KB
refresh_header.xml 1KB
tab1_selector.xml 1KB
tab3_selector.xml 1KB
tab2_selector.xml 1KB
loading_dialog.xml 1KB
styles.xml 1KB
fragment_2.xml 1008B
AndroidManifest.xml 990B
main_tab_text_selector.xml 951B
colors.xml 824B
共 130 条
- 1
- 2
资源评论
01红C
- 粉丝: 1637
- 资源: 1098
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功