目录
终于考完试了,能凑出点时间来写写博客了(虽然还处于微机成绩的忐忑之中)。
1.课设简介
我做的安卓课设是一个论坛系统,搭建了一个后台服务器,所以实现了所有用户的信息实时更新和获取的功能。论坛功能有发布,回复,点赞,收藏。自己发布的内容查看,回复自己的帖子的信息,对个人信息的修改。上述这些功能的实现,在后台的CRUD上下了很大功夫,体会到了后端程序员总是增删改查的感觉。
2.课设所用到的开源控件的汇总
2.1所用到的依赖包
// 都是花里胡哨的字体
def htextview_version = "0.1.6"
compile "com.hanks:htextview-base:$htextview_version" // base library
compile "com.hanks:htextview-fade:$htextview_version" // optional
compile "com.hanks:htextview-line:$htextview_version" // optional
compile "com.hanks:htextview-rainbow:$htextview_version" // optional
compile "com.hanks:htextview-typer:$htextview_version" // optional
compile "com.hanks:htextview-scale:$htextview_version" // optional
compile "com.hanks:htextview-evaporate:$htextview_version" // optional
compile "com.hanks:htextview-fall:$htextview_version" // optional
// 新手引导
//noinspection GradleCompatible
compileOnly 'com.android.support:appcompat-v7:25.3.1'
implementation 'com.github.huburt-Hu:NewbieGuide:v2.4.0'
// 选择器的实现
compile 'com.contrarywind:Android-PickerView:4.1.9'
// 图片磨砂实现
implementation 'jp.wasabeef:glide-transformations:2.0.1'
implementation 'de.hdodenhof:circleimageview:2.1.0'
// 注意:分包之后不会有默认的Header和Footer需要手动添加!还是原来的三种方法!上拉加载,下拉刷新
implementation 'com.scwang.smart:refresh-layout-kernel:2.0.3' //核心必须依赖
implementation 'com.scwang.smart:refresh-header-classics:2.0.3' //经典刷新头
implementation 'com.scwang.smart:refresh-header-radar:2.0.3' //雷达刷新头
implementation 'com.scwang.smart:refresh-header-falsify:2.0.3' //虚拟刷新头
implementation 'com.scwang.smart:refresh-header-material:2.0.3' //谷歌刷新头
implementation 'com.scwang.smart:refresh-header-two-level:2.0.3' //二级刷新头
implementation 'com.scwang.smart:refresh-footer-ball:2.0.3' //球脉冲加载
implementation 'com.scwang.smart:refresh-footer-classics:2.0.3' //经典加载
//点击弹出选择
compile 'com.diegodobelo.expandingview:expanding-view:0.9.4'
//BottomBarLayout轻量级的底部导航栏
compile 'com.github.chaychan:BottomBarLayout:2.0.2' //建议使用最新版本
//Gson框架
implementation 'com.google.code.gson:gson:2.8.6'
//xutils框架
implementation 'org.xutils:xutils:3.9.0'
// 网络图片
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
// 轮播图
implementation 'io.github.youth5201314:banner:2.2.1'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.google.android.material:material:1.1.0'
2.2各个开源控件Github地址
字体动画HTextView:https://github.com/hanks-zyh/HTextView
新手引导:https://github.com/huburt-Hu/NewbieGuide
选择器:https://github.com/Bigkoo/Android-PickerView
图片磨砂:https://github.com/wasabeef/glide-transformations
刷新加载:https://github.com/scwang90/SmartRefreshLayout
一个很好看的点击弹出菜单(带动画):https://github.com/diegodobelo/AndroidExpandingViewLibrary
轻量级底部导航栏:https://github.com/chaychan/BottomBarLayout
Gson框架:https://github.com/google/gson
xutils框架:https://github.com/wyouflf/xUtils3
网络图片:https://github.com/bumptech/glide
轮播图:https://github.com/youth5201314/banner
以上就是我这个项目中所用到的所有开源控件的github地址,可供大家参考使用。
基本上这些关于UI设计的框架的都用到了动画,所以出来的结果还是很好看的。
3.课设所用技术
3.1安卓端
安卓端使用的就是原生的AS开发,再加上一些开源控件的使用,除此之外,没有啥特别的。
3.2后端
后端所使用的是Springboot+Mybaits+MySQL数据库来搭建的,因为在寒假准备服务外包比赛的时候学了很多的框架知识,所以现在用起来感觉比较的轻松,而且这两个框架都是非常成熟的架构。怎么使用我这里就不细说了,大家可以自己前往学习。
3.3关于前后台交互
前后台交互主要是在安卓端使用xUtils框架发送请求,后台用Springboot注解开发很容易搭建好。
从项目中拿出来的一个小Demo
安卓端代码
x.Ext.init(getApplication());
RequestParams requestParams = new RequestParams("http://10.135.143.172:8090/addPostInformation?");
requestParams.addQueryStringParameter("title_discuss", title_discuss);
requestParams.addQueryStringParameter("name", name);
requestParams.addQueryStringParameter("time", time);
requestParams.addQueryStringParameter("name_floor", name_floor);
requestParams.addQueryStringParameter("information", information);
requestParams.addQueryStringParameter("time_floor", time_floor);
requestParams.addQueryStringParameter("account_floor",account_floor);
// 把所有发送base64的请求都删掉这一句话,将请求简化
// requestParams.addQueryStringParameter("base64_floor", base64_floor);
requestParams.addQueryStringParameter("account",account);
x.http().post(requestParams, new Callback.CommonCallback<String>() {
@Override
public void onSuccess(String result) {
if (result.equals("1"))
Toast.makeText(Discuss_post_information.this, "评论成功", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(Throwable ex, boolean isOnCallback) {
Toast.makeText(Discuss_post_information.this, "网络出现异常错误,请稍后", Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(CancelledException cex) {
}
@Override
public void onFinished() {
}
});
后台的代码
// 增加该帖子中的回复的楼层,同时更新该楼的评论数
@PostMapping("/addPostInformation")
public int addPostInformation(String title_discuss, String name, String time,String name_floor,String information,String time_floor,String account_floor,String account){
// 先获得该帖子的id
int id_floor = contentMapper.queryContent_id(title_discuss,account,time);
contentMapper.update_comments(id_floor);
PostInformation postInformation=new PostInformation();
postInformation.setName_floor(name_floor);
postInformation.setInformation(information);
postInformation.setTime_floor(time_floor);
postInformation.setBase64_floor(userMapper.query(account_floor));
postInformation.setContent_id(id_floor);
postInformation.setAccount(account);
postInformation.setAccount_floor(account_floor);
postInformationMapper.addPostInformation(postInformation);
// 当前的回复的id
int floor = postInformationMapper.queryfloor(name_floor, id_floor, time_floor);
commentsReceivedMapper.addCommentsReceived(new CommentsReceived(account,id_floor,floor));
return 1;
}
就像上述这样发送请求,接收数据并且处理
关于几个框架的使用在暑假有时间应该会写博客记录。其实现在基本上只会使用框架了,关于框架的原理和底层都忘得差不多了。准备这个暑假好好补习一下。
4.最终效果展示
最终得分是98分,感觉有些地方还是没有做的太好emmm。下次加油
5.实用工具
5.1课堂笔记
这里贴一下我所有的安卓上课的笔记,大家可以参考学习,批评指正
Android第一讲笔记(常用控件以及线性布局)
Android第二讲笔记(约束布局ConstraintLayout)
Android第三讲笔记(Activity简单操作)
Android第四讲笔记(Activity间的跳转与传值)
Android第五讲笔记(列表RecyclerView)
Android第六讲笔记(Fragment入门)
Android第七讲笔记(圆形图片,网络图片,下拉刷新,上拉加载)
Android第八讲笔记-1(网络编程) Android第八讲笔记-2(JSON)
Android第九讲笔记(xUtils框架,Gson框架)
Android第十讲笔记(WebView,SharedPreferences)
Android第十一讲笔记(SqLite数据库,Room框架)
Android第十二讲笔记(视频,音频播放,开源控件)
Android第十三讲笔记(动画入门,开源控件,应用程序打包)
Android第十四讲笔记(广播,百度地图)