1、接口地址
该博客是一个android中的小项目,主要封装和练习开发中遇到的常用知识点,进行总结。项目简单易懂,大神勿喷。
主要用到知识点
1、BaseActivity,BaseFragment。轻松实现app导航效果
2、Material Design中常用的
- Toolbar导航栏
- RecyclerView的使用
- Swiperefreshlayout下拉刷新,上拉加载更多。
- Glide 加载图片,包括加载gif图
- CoordinatorLayout,AppBarLayout,NestedScrollView实现滑动图片滚动样式(娱乐详情界面)
3、rxjava+retrofit网络请求
主要界面使用的是retorfit直接请求网络,在新闻界面中采用rxjava+retrofit的方式。
网上找到一些免费公用的接口,表示感谢
1. http://gank.io/api
2. http://showdoc.dagoogle.cn/index.PHP/6
3. http://api.map.baidu.com/telematics/v3/movie?qt=hot_movie&location=北京&output=json&ak=A72e372de05e63c8740b2622d0ed8ab1
2、项目运行效果图
1.学习模块:
2.新闻模块:
3.娱乐模块
3、主要知识点
1、BaseActivity,BaseFragment的封装。
1、BaseActivity封装Toolbar包括Toolbar沉浸式状态栏,调用代码简单,只需继承该类,容易实现导航效果,包括返回按钮,菜单栏。代码截图:
2、BaseFragment主要是github上LazyViewFragment,对于fragment+viewpage懒加载,可以使用懒加载,也可以去掉。
代码示例:继承BaseActivity,实现setUpContentView(),setUpView(),setUpToolbar(),setUpData()等方法
@Override
protected void setUpContentView() {
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
}
@Override
protected void setUpView() {
}
@Override
protected void setUpToolbar(int titleResId, int menuId, int mode) {
super.setUpToolbar(R.string.activity_name_main, menuId, 1);
}
@Override
protected void setUpData(Bundle savedInstanceState) {
List<Fragment> list=new ArrayList<Fragment>();
list.add(new LearnFragment());
list.add(new NewFragment());
list.add(new FunFragment());
list.add(new MeTabFragment());
viewPagerAapter=new ViewPagerAdapter(getSupportFragmentManager(),list);
viewpage.setAdapter(viewPagerAapter);
}
2、Material Design中常用控件使用
Material Design中常用的
- Toolbar导航栏
- Swiperefreshlayout下拉刷新,上拉加载更多。
- Glide 加载图片,包括加载gif图
- CoordinatorLayout,AppBarLayout,NestedScrollView实现滑动图片滚动样式(娱乐详情界面)
3、rxjava+retorfit网络请求
rxjava+retorfit使用也比较简单,一个观察者和被观察者,通过订阅。请求数据后回调,更新UI。
注册及订阅事件
private void loadData() {
subscription = Network.getNewFunApi().getNewTop("1", "10")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer);
}
请求后回调
Observer<NewTop> observer = new Observer<NewTop>() {
@Override
public void onCompleted() {
swiperefresh.setRefreshing(false);
}
@Override
public void onError(Throwable e) {
swiperefresh.setRefreshing(false);
}
@Override
public void onNext(NewTop d) {
list.addAll(d.getData());
adapter.notifyDataSetChanged();
swiperefresh.setRefreshing(false);
}
};
github地址
https://github.com/yuxiaogang/MyProject
项目下载地址
http://download.csdn.net/detail/androidxiaogang/9742469