MAD21_Hw1

移动应用开发Hw1报告

实验内容

做一个小语种学习软件

实验目的

  • 熟悉并掌握开发环境
  • IDE Android Studio的安装及配置,熟悉IDE的使用
  • 虚拟设备的配置 AVD
  • git 的使用,参考git 教程.pdf
  • 回忆和复习 Java语言的基本使用
  • 掌握Android 用户界面编程基础
  • Activity生命周期的理解
  • 控件的使用
  • 布局的使用

项目架构

MainActivity

MainActivity是程序打开的第一个界面,功能是选择软件的学习语言。

布局为ConstraintLayout

采用四个ImageButton放上各国国旗

同时设置点击事件为使用Intent唤起下一个页面BottomActivity

并且使用Intent.putExtra将选择的语言信息传递到下一个页面

具体效果:
MainActivity

bottom

bottom页面底部有一个BottomNavigationView

BottomNavigationView绑定了菜单对应“学习”和“用户”的fragment

“学习”和“用户”页面分别为home_fragment和dashboard_fragment

Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响

home_fragment

这个fragment主要功能是展示课程列表,假定有4个Tour,每个Tour有4个unit

布局使用一个ScrollView使得页面可以滚动查看

每个Tour为一个CardView

每个unit只是单纯的一行Textview

具体效果:
home

dashboard_fragment

这个fragment主要功能是提供一个登录按钮和用户信息、用户设置

由于Android Studio没有自带的圆形按钮,所以需要在drawable文件夹里编写一个xml文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#03D0F4"/>

</shape>

然后把按钮的背景设置成这个xml文件就能实现圆形按钮

我查了很多博客都说按照这样就能做成,但是我的button按钮设置背景图片却无法显示

后来在博客Android中遇到button按钮设置背景图片无法显示的解决方案找到了解决方案

打开res/values/themes目录下的themes.xml文件

<style name="Theme.Lab2_1" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
改为
<style name="Theme.Lab2_1" parent="Theme.MaterialComponents.DayNight.DarkActionBar.Bridge">

至于为什么,博主解释说是因为高版本的AS继承了主题的缘故,要改成非继承

然后这个按钮我实现了一个伪登录功能,点击按钮之后“用户信息”下的“用户名”和“邮箱”会从“未登录”变为我预先设好的字符串

这里的实现方法是获取dashboard_fragment的子fragment管理器(使用getChildFragmentManager()方法)调用子fragment——information_page的自己写的login函数,login函数更改两个TextView的值

接下来是一个tabLayout,用于切换“用户信息”与“用户设置”两个页面

“用户信息”与“用户设置”也分别对应information_page和config_page这两个fragment

与在Activity中添加tabLayout不同的是,由于这里在fragment中使用tabLayout,嵌套了fragment,所以在获取Fragment管理器时要使用getChildFragmentManager()方法

information_page

此片段就是显示用户名和邮箱

预设四个TextView塞进TableLayout里

两个TableRow各塞两个TextView

具体效果:
Information

config_page

此页面主要有两个按钮,一个是“返回语言选择”,一个是“退出登录”

“返回语言选择”按钮的实现比较简单,就是直接调用getActivity().finish()使当前的bottomActivity结束,自动返回MainActivity

“退出登录”按钮我的实现方式是在config_page通过调用getParentFragment()方法获取到父fragment——Dashboard_fragment

然后再调用Dashboard_fragment中自己写的logout函数

logout函数会获取dashboard_fragment的子fragment管理器(使用getChildFragmentManager()方法)调用子fragment——information_page的自己写的logout函数

login函数更改两个TextView的值

具体效果:
config

实现缺陷

  • 总觉得还是很丑
  • 登录功能是伪的,没有弹窗输入用户名和密码,并且若从“用户”页面切到“学习”页面之后登录状态不会保留,推测和fragment的生命周期以及Activity的数据保存有关
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mad_synth_frame是在MAD库中用于将MPEG音频解码为PCM样本的函数。它通过使用给定的MAD帧将MPEG编码的音频数据解码为PCM样本来工作。MAD库是一个开源的音频解码器,可用于在各种应用程序中解码MPEG音频。 ### 回答2: mad_synth_frame是MAD(MPEG Audio Decoder)库中的一个函数,用于合成一个音频帧。MAD库是一个用于解码MPEG音频文件的开源库,mad_synth_frame函数是其中的一个重要组成部分。 mad_synth_frame函数的主要功能是将解码后的音频数据合成为一个音频帧,以便后续进行音频播放或其他处理。在合成过程中,该函数会根据输入的解码数据和相关参数,对音频数据进行重构和处理,并输出合成后的音频帧。 mad_synth_frame函数使用了一系列的算法和技术来实现音频的合成。首先,它会根据输入的解码数据获取音频采样值,并将其转换为一个帧(frame)的形式。其次,它会根据解码后的音频数据进行重构和补偿,以提高音频质量和音频采样的准确性。最后,它会对合成后的音频帧进行校正和处理,以满足特定的音频格式和标准要求。 总之,mad_synth_frame函数是MAD库中的一个重要函数,用于将解码后的音频数据合成为一个音频帧。它通过一系列的算法和技术,对音频数据进行重构和处理,以提高音频质量和准确性。这个函数在音频解码和处理方面起着至关重要的作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值