szu-exp 安卓开发实验3我的校园

Posted Ant_ony

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了szu-exp 安卓开发实验3我的校园相关的知识,希望对你有一定的参考价值。

发扬开源精神...

给个赞吧giegiejiejie们

实验目的与要求:

目的:掌握安卓中活动的编写、自定义用户界面的开发、碎片开发、广播机制以及数据持久化技术等;并能通过对课堂知识进行扩展来完善该界面,并使界面尽量美观。

内容要求:

1. 请尽量模拟如下深大校园主页的功能,参考:

https://www1.szu.edu.cn/

2. 具体要求:

1) 该实现的界面在某些地方应体现出如下功能:

a. 界面能对平板与手机平台进行自适应(参考第4章碎片);

b. 能对用户身份有强制下线的功能,比如网络中断,登录界面强行退出并显示提示错误的界面(错误dialog无法显示)

c. 界面某些地方体现数据持久化的技术,如文件数据的读取、存储的多种实现方式,并简单阐述几种实现方式具体的适用场景;

d. 界面要比较工整,没必要实现参考界面上的所有子项,能保证自己的界面实现能有扩展到参考界面的能力即可。

2) 功能并不局限于上面的要求,可以根据自己的理解设计一些新的功能,并在报告文档中进行详细的阐述,作为报告的亮点;

3)APP的布局尽快模仿参考界面,如果有较大的困难,可以只实现出右半边部分的界面,并尽量按上面要求进行完善;

4) 对于某一种功能,可以在不同的子项处采用多种实现方式,并比较这些实现方式的不同及优劣势。

3. 参考:尽量多的应用参考书《第一行代码 android》第二版第2章活动、第3章UI开发第4章碎片、第5章广播机制与第6章数据持久化技术的各个知识点。

注意:

1. 实验报告中需要有功能的描述、实验结果的截屏图像及详细说明;重点要突出;

2. 也欢迎采用其它章节的知识点完成本次实验报告,如果实现的功能言之合理,会考虑酌情加分;

3. 尽量删除空白页。

方法、步骤:

实验需求分析:

简要分析之后,我们发现,需要做到手机和平板的自适应,需要设置两个activity_main,其中一个我们使用large关键字进行限制,在手机布局中,我们的左布局和右布局不会一起展示,在平板布局中,左布局和右布局将会按13的比例展示。

强制下线的功能我们将通过广播来实现

数据持久化的技术将在实现记住密码功能中体现

样式模仿我们看效果就好了hh

先给我们所有页面来个大合照!

 

 

实验过程及内容:

两个activity的创建:

首先我们创建activity_main.xml以及activity_mian(large).xml

通过关键字large 我们就实现了碎片的自适应

Activity_main.xml

Activity_mian(large).xml 里面装有两个fragment

 

事实上,我们打算复用left_fragment,平板中则新建tablet_r_fragment接下来就先从left_fragment开始看吧

left_fragment的布局

布局的代码都是很普通的啦,就是linerLayout 各种嵌套,比较突出的点是使用了一下Textclock 以及使用了边框以及按钮的各种自定义布局

自定义的边框:(颜色和圆角)

 

 

代码:

设置背景为自定义的drawable

Drawable/edge:

底部时钟的实现:

很简单,把textClock定义一下就好了

我们在left_fragment中还嵌套了一个ListView,关于怎么配置这一个ListView是非常重要的,在后文会有详细的解释。

首先我们在这里先放置一个framLayout吧,等下会展示三个List

这就是left_fragment的基本布局了(还没有说里面嵌套的ListView

 

framLayout的配置(ListView:

关于怎么向ListView添加元素已经在实验2中有过体现了,这里我也不在赘述了,大体就是:设置共有的item_list.xml—创建若干(所需要个数)的fragment以及对应的activity,  fragment中放置listView—在各自的fragment的activity中配置数据。

共有list_item

三个所需fragment

重点来了!重点来了!重点来了!

重点就是因为这里是在FramLayout中使用FramLayout,(别忘了,我们的左子fragment也是FramLayout),所以们在切换布局的时候应该使用的是getChildFragmentManager方法,为什么呢,我们可以直接看到安卓对于这个方法的解释

详细说明一下,我们已经事先准备好了三个按钮,他们将可以点击以展示不同的列表

在LeftFragment中:

添加事务

切换事务,这里代码放多了,顺便说了一下按钮背景的切换和字体颜色的切换

至此,我们的左布局已经完成啦!

右布局:

由于手机和平板的右边布局实在是复用不了,我们决定分别给他们建立两个不同的布局

手机:

在手机的右布局中,我们的顶部放置了VideoView,下面是四个ListView

平板:

在平板布局中,左布局和右布局将以2:3 的比例呈现

布局代码也不不需要过多的表述了,顶上一个轮播图,下面四个listView,然后是四个imageView

登录功能+强制下线体现数据持久化以及广播

首先我们来看一下登录功能

基本的布局代码就没有什么好看的了

就是一个深大的标志,一个欢迎登陆的标语,一个输入账户的框,一个输入密码的框,一个记住密码的checkbox,然后是一些别的修饰

我们直接看一下效果吧

默认的登录账号和密码都是123

数据持久化的体现就在小小的记住密码上,

实现方法:

首先获取账号框,密码框,记住密码框的实例,

我们使用SHAREPREFERANCE—MODE_PRIVATE来实现数据持久化

接下来调用自己写的submit()方法,实现检测密码以及存入数据的逻辑

然后回到初始化的界面,

如果发现当前checkbox 是选中状态的我们就要填入密码,反正不填入密码

至此,我们的记住密码功能已经得以实现,但我们还需要加入强制下线的功能才能看到记住密码的效果

强制下线:

强制下线的实现可能稍微有一点复杂,整体的逻辑是:在需要的活动中注册广播—设立广播接收器实现相应的逻辑—添加ActicityController类辅助实现逻辑,给强制下线按钮添加发送广播功能。  

先看到ActivityController

提供了增加活动,移除活动,结束所有活动的功能

我们在左布局中定义了一个按钮,当点击按钮的时候就会发送强制下线的广播。

我们在LeftFragment中注册广播

记得如果forceOfflineBroadcast 空,则我们要新建,因为每次结束活动都会把东西清掉

forceOfflineBroadcast实现接受广播后的代码逻辑:

结束所有活动,重新进入login

点击按钮发送广播

最后我们还必须要记得在destory中解除注册

到这里,我们强制下线的功能就完成啦,来看一下效果

可以发现,点击按钮之后,我们接受到了强制下线的通知,并且回到了login页面

同时,如果我没有选择记住密码,那么强制下线之后密码就不会显示

其他功能——多媒体VideoView的使用

在右边布局中,我们在布局头部展示了一个视频,展示了深大的风采。

那么我们怎么实现呢

首先在fragment_right中放入VideoView

然后在RightFragment中

Requestfocus保证了画面在中间。

获取实例,并且使用手机中已有的视频,(记得给手机开权限)并且使用了mediaCotroller从而无需手动实现进度条。

其他功能——轮播图的使用

我们在平板的右边布局的顶部增加了轮播图

首先创建好放置轮播图的viewPager

然后新建MyPageeAdapter类继承PagerAdapter

回到Tablet_right初始化轮播图

至此我们已经完成了轮播图的配置,我们来看看效果

 

还有几张就不展示了,附在后序链接上

以上是关于szu-exp 安卓开发实验3我的校园的主要内容,如果未能解决你的问题,请参考以下文章

移动开发安卓Lab2(01)

20165317实验四 安卓程序开发

基于android安卓平台的校园通软件设计与实现—毕业论文.doc

java计算机毕业设计基于安卓Android的校园快药APP-药店管理app

基于Android的校园导航电子地图软件

java计算机毕业设计基于安卓Android的校园安保巡查系统APP