【安卓课设】简单分析本次课设

目录


终于考完试了,能凑出点时间来写写博客了(虽然还处于微机成绩的忐忑之中)。 微机我真的无话可说 前面都是废话,进入正文

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 one rror(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第十四讲笔记(广播,百度地图)

5.2开源控件

常见的开源控件

5.3实用工具

构造json数据的平台
聚合图床
bomb后端云

上一篇:常用 Android 库


下一篇:gradle如何构建java项目