校园文化是以学生为主体,以课外文化活动为主要内容,校园文化建设是以学生为主体,校园为主要空间,涵盖院校领导、教职工在内,以校园精神为主要特征的一种群体文化。
校园app,作为学校对外展示校园文化的一个窗口,这一模块的功能也必不可少。科师有约 将这一模块分为 【表白墙 & 图说校园 & 社团活动】 三方面来进行实现。

在这里附一下【河北科技师范学院】校训: 敏学、修身、乐业、创新

前言

系列文章

Github地址: 科师有约校园APP

  1. 手把手带你撸一个校园APP(一):项目简介
  2. 手把手带你撸一个校园APP(二):应用启动和欢迎页面
  3. 手把手带你撸一个校园APP(三):用户模块(登录注册等)
  4. 手把手带你撸一个校园APP(四):APP框架及功能设计
  5. 手把手带你撸一个校园APP(五):新闻页面中心模块
  6. 手把手带你撸一个校园APP(六):失物招领&二手交易模块
  7. 手把手带你撸一个校园APP(七):校园文化模块(社团活动&表白墙&图说校园)
  8. 手把手带你撸一个校园APP(八):校园通讯录模块
  9. 手把手带你撸一个校园APP(九):课程表模块(模拟登陆爬取教务处课程信息)
  10. 手把手带你撸一个校园APP(十):APP通用模块(更新,意见反馈等)

社团组织

社团活动是校园文化的重要载体,也是学生愉悦身心、拓宽兴趣、开阔视野的主要阵地。
丰富多彩的社团活动,能提升学生能力,培养兴趣爱好,激发学生寻找个人特色与才能。每个学校的校园文化也多由此体现。因此设置这个模块,用以展示校园的组织社团等,也为各组织社团提供一种新的线上宣传途径。

实现效果

实现

数据库

字段名 描述 类型 是否主键
objectId 唯一标识 String
title 标题 String -
description 描述 Number -
pic 图片 String -
time 发布时间 Date -

安卓代码
查询列表数据,并展示

mAdapter = new GeneralAdapter();
teamBeen = new ArrayList<>();
rvTeam.setLayoutManager(new LinearLayoutManager(TeamActivity.this));
BmobQuery<TeamBean> query = new BmobQuery<TeamBean>();
query.order("-time");
query.setLimit(15);
query.findObjects(new FindListener<TeamBean>() {@Overridepublic void done(List<TeamBean> object, BmobException e) {if (e == null) {LogUtils.e("查询成功:共" + object.size() + "条数据。");teamBeen.addAll(object);mAdapter.setData(teamBeen);} else {LogUtils.e("失败:" + e.getMessage() + "," + e.getErrorCode());}}
});
rvTeam.setAdapter(mAdapter);

表白墙

近年来,表白墙作为大学校园一种新的社交平台迅速崛起,不仅流行范围广、传播速度快,而且显得异常活跃。这种别具一格的表达方式,由于具有鲜明的时代特点和浓厚的感情色彩,深受大学生的青睐。

效果

表白墙及发布页面如下:

本人实在没有美术与设计功底,审美也常年掉线。还望勿笑~~

分析

从代码层面来分析的话,其实就是数据的发布与查询操作。
这部分代码重复性较高,此处就不再赘述了。着重讲下表白信的背景图片【9-patch 图片】。

9-patch 图片

9-patch 图片常叫做 .9图片。因为文件的后缀名是 .9.png 。
是一个指定一些区域可拉伸,另外一些区域不拉伸的位图,同时还可以指定显示内容的区域。在Android开发中,经常使用到.9图片,比如聊天页的消息背景等,以避免因内容导致位图变形。
给一个对比图来感受一下,使用和不使用的区别(左:不使用,右:使用):

可以看到,使用普通图片的话,变形会很严重,而使用9patch则会好很多。
如何制作9patch图片
制作.9图片有很多种方法,最方便快捷的莫过于在Android Studio中进行制作。具体步骤如下:

step1. 准备png图片,需要至少预留1像素的透明区域,然后放到项目drawable或mipmap文件中;
step2. 选中该文件,右键选择 “Create 9-Patch file …”,之后drawable 文件夹下回出现同名的 .9.png 图片;
step3. 绘制可拉伸区域(在顶部以及左侧划线表示,绘制页面如下图所示,右侧可预览拉伸后的效果);
step4. 和其它图片一样正常使用即可。

图说校园

效果

分析

这一部分逻辑比较简单,同样是请求数据列表然后展示。
不同的是,列表采用了瀑布流的形式展示,其实 RecycleView 可以轻易实现这种效果。
数据请求部分代码重复性较高,在此就不再赘述了。这里着重讲跳转页面时的转场动画【共享元素】的实现。
共享元素(Shared Element)
共享元素属于 Material Design, 为场景切换提供了非常优雅的视觉效果,在进入和退出页面,元素共享页面的时候可以添加想要的效果,能给人元素在运动的感觉。Gif 图如下:

实现

数据库

数据库字段设计如下:

字段名 描述 类型 是否主键
objectId id String
name 标题 String -
description 描述 Number -
pic 图片 String -
createdAt 发布时间 Date -

查询列表等数据请求操作部分代码重复性较高,可参考之前文件代码。在此就不再赘述了。

共享元素

Step1:

 <style name="AppTheme" parent="Theme.AppCompat.Light"><item name="android:windowContentTransitions">true</item></style>

Step2:
为共享元素设置 transtionName,两个界面都需要要添加,用以标识哪两个元素共享。

<!--已省略其它属性-->
<ImageViewandroid:layout_width="274dp"android:layout_height="307dp"android:transitionName="shareView" />

当然也可以在代码中设置:

imageView.setTransitionName("shareView");

Step3:
设置好以上的参数后,就可以通过跳转来添加相应的动画了。需要用到 ActivityOptionsCompat 的 makeSceneTransitionAnimation 函数。代码如下:

Intent i = new Intent(mContext, PicDetailActivity.class);
ActivityOptionsCompat optionsCompat =
ActivityOptionsCompat.makeSceneTransitionAnimation(mContext, holder.image, "shareView");
startActivity(i,optionsCompat.toBundle());

设置多个元素共享的代码如下:

 Intent i = new Intent(mContext, PicDetailActivity.class);Pair<View, String> pair = new Pair<View, String>(holder.image,"shareView");Pair<View,String> pairText = new Pair<View, String>(holder.text,"text");ActivityOptionsCompat optionsCompat = ActivityOptionsCompat.makeSceneTransitionAnimation(mContext, pair,pairText);startActivity(i,optionsCompat.toBundle());

至此,本文内容全部完毕,项目中内容均为简易实现,深究的话,可以优化的细节极多,然而作者可能并没有更大的精力去全部完善。此项目也权当抛砖引玉之用,望以后可以有学弟学妹做出真正的产品。
另外,项目中大量依赖或采用了第三方项目的代码。在此向各位有分享精神的大佬们致敬!

如果本文对你有所帮助,还望可以随手赏一个点赞哈 ~ ~

手把手带你撸一个校园APP(七):校园文化模块(社团活动表白墙图说校园)相关推荐

  1. 手把手带你撸一个校园APP(五):新闻中心模块

    这个项目是很早之前在学校做的,如今再回首.很多代码很是粗糙,逻辑也不尽完善.还望各位看官海涵. 前言 通过上一篇文章的功能设计,我们可以发现新闻通知公告等是APP的最主要功能点.主要是聚合展示学校官网 ...

  2. 手把手带你撸一个校园APP(六):失物招领二手交易模块

    代码经过简单的整理,已经放到Github上了.https://github.com/zhengweichao/Hevttc 回首来看,代码质量一般,里面也有各种逻辑问题,还望各位看官海涵.接下来有时间 ...

  3. 手把手带你撸一个cli工具

    你有没有遇到过在没有vue-cli.create-react-app这样子的脚手架的时候一个文件一个文件的去拷贝老项目的配置文件.最近,笔者就在为组里的框架去做一套基本的cli工具.通过这边文章,笔者 ...

  4. dispatch作用 react_「React系列」手把手带你撸后台系统(Redux与路由鉴权)

    [React系列]手把手带你撸后台系统(Redux与路由鉴权) 来源:https://juejin.im/post/5d9b5ddee51d45781b63b8f7 上一篇我们介绍了系统架构,这一篇将 ...

  5. 手把手带你写一个JavaScript类型判断小工具

    业务写了很多,依然不是前端大神,我相信这是很多'入坑'前端开发同学的迷茫之处,个人觉得前端职业发展是有路径可寻的,前期写业务是一个积累过程,后期提炼总结,比如编程思想,父子类的原型继承,还是对象之间的 ...

  6. 手把手教你撸一个Web汇率计算器

    手把手教你撸一个Web汇率计算器 前言 前段时间刚接触到前端网页开发,但是对于刚入门的小白而言,像flask.Django等这类稍大型的框架确实不太适合,今天这个Dash是集众家之长于一体的轻量化We ...

  7. 手把手教你写一个Matlab App(一)

    对于传统工科的学生用的最多的编程软件应该就是matlab,其集成度高,计算能力强,容易上手,颇受大众青睐.今天挖的这个新坑,主要是分享用matlab app designer设计GUI界面的一些方法和 ...

  8. 【NLP】Pyhon+讯飞开放平台:​手把手带你写一个智能语音播报系统

    手把手带你写一个智能语音播报系统. 微信扫码登陆讯飞开放平台:https://www.xfyun.cn/ 完成个人认证. 在控制台创建应用,注意应用名称全库查重,很容易跟别人重复. 可查看到pytho ...

  9. 使用Flutter撸一个视频播放APP(有福利哦~)

    使用Flutter撸一个视频播放APP(有福利哦~) 基于苹果CMS8.0的资源站收集视频播放APP. 视频资源来源:从网上的各大资源收集站中获取视频资源,他们大都支持苹果CMS8.0的接口方法获取. ...

  10. Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|Openresty丨C/C++Linux服务器开发丨中间件

    Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx 视频讲解如下,点击观看: Linux环境,手把手带你实现一个Nginx模块,深入了解Nginx丨惊群效应|error|负载均衡|O ...

最新文章

  1. gcc/g++链接时.o文件及库的顺序问题
  2. linux tomcat apr安装,Linux下Tomcat安装并开启APR模式-Go语言中文社区
  3. 【原创】Kakfa utils源代码分析(一)
  4. 最优化学习笔记(八)——共轭方向法
  5. 理论基础 —— 二叉树 —— 线索链表
  6. 【AudioVideo】处理音频输出的变化(13)
  7. 文档管理 linux,Linux 文档管理
  8. 贝壳宣布内部调查实质性完成
  9. matlab2c使用c++实现matlab函数系列教程-det函数
  10. heidisql 命令保存blob_git常用命令总结
  11. ds18b20温度转换指令_使用STM32控制DS18B20温度传感器
  12. 数字图像处理 matlab 傅里叶变换及逆变换 余弦变换及逆变换(使用代码库)
  13. 艾宾浩斯英语单词记忆表格生成器
  14. 医院体检PEIS系统
  15. 照片webp格式怎么改成jpg?
  16. 各抢票软件的优势,抢火车票成功率高的APP
  17. URL是什么意思?基础知识普及
  18. 使用NGUI实现拖拽功能(拼图小游戏)
  19. python第三方模块之pyquery
  20. 信源编码作业【01】利用Audacity软件语音信号的频谱分析

热门文章

  1. [网络工程师]-IEEE 802.3定义的传输介质特性
  2. APP离线后,通过SystemClock.elapsedRealtime()校正时间
  3. 豆瓣上的一条关于泰坦尼克的影评1
  4. 教你如何利用python调用摄像头
  5. 移动客户端谈百度分享经验
  6. cncert阅读报告
  7. 大数据可视化技术与应用作业一的经验总结
  8. C# 版 flvmerge:快速合并多个flv文件
  9. Whai_springmvc笔记
  10. MOSFet cutoff frequency ( From google)