2023TYUT移动应用软件开发程序设计和填空

news/2024/5/19 1:34:01/文章来源:https://blog.csdn.net/m0_55298718/article/details/130098074

目录

程序设计

程序设计1:根据要求设计UI,补充相应布局文件,即.xml文件

程序设计2:根据要求,补充Activity.java文件

程序填空

说明:


程序设计

程序设计1:根据要求设计UI,补充相应布局文件,即.xml文件

Design the UI using proper layouts and widgets for the House Selling App/Car Selling App. The UI should include multiple widgets such as TextView文本框, EditText输入框, Button按钮,  Radiobutton单选按钮, Checkbox复选框, Menu菜单,Spinner列表,ListView列表,Seekbar进度条,preference设置。

说明:我将4个实验中要求组件整合到一起来设计了UI

UI设计图如下:

(Spinner列表,写代码时我漏掉了,在这就不补充了,)

main_activity.xml文件如下

<?xml version="1.0" encoding="utf-8"?>
<!--布局方式有6种,常用的有LinearLayout、TableLayout、RelativeLayout,此xml以LinearLayout布局编写-->
<!--eg:构建一个2行3列的TableLayout
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android">android:layout_width=......<TableRow><组件1.1/><组件1.2/><组件1.3/></TableRow><TableRow><组件2.1/><组件2.2/><组件2.3/></TableRow>
</TableLayout>      
-->
<LinearLayout xmlns:android="...">android:id="@+id/llt_02"android:layout_width="match_parint"android:layout_heigth="wrap_parint"android:orientation="vertical">
<!--设置布局的宽为match_parint/wrap_content/具体值-->
<!--设置布局的高为match_parint/wrap_content/具体值-->
<!--orientation设置布局的方向为vertical/horizontal--><TextViewandroid:id="@+id/tvCarSale"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:gravity="center"android:text="汽车销售"/>
<!--TextView还有textColor,textStyle,textSize,background等属性-->
<!--TextView宽高赋值不同,会影响布局,具体问题,具体分析-->
<!--gravity设置对齐方式left/center/right默认left--><TextViewandroid:id="@+id/tvSearch"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text="请输入你想要搜索的汽车:"/><EditTextandroid:id="@+id/et1"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:ems="10"android:hint="输入关键字"/>
<!--ems设置下划线长度,hint设置未输入时下划线显示的字符--><Buttonandroid:id="@+id/btmakesure"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text="确认"/><TextViewandroid:id="@+id/tvdanxuan"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text="变速箱类型(单选):"/><RadioGroupandroid:id="@+id/rgp1"android:layout_width="match_parint"android:layout_heigth="wrap_parint"android:orientation="horizontal">
<!--设置选项方向为水平--><RadioButtonandroid:id="@+id/rbt1"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text="手动"/><RadioButtonandroid:id="@+id/rbt2"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text="自动"/></RadioGroup><TextViewandroid:id="@+id/tvduoxuan"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text=":汽车类型(多选):"/><CheckBox android:id="@+id/ckbSuv"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text=":SUV"/>   <CheckBox android:id="@+id/ckbSportsCar"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text=":跑车"/>     <CheckBox android:id="@+id/ckbSaloonCar"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text=":轿车"/>   <CheckBox android:id="@+id/ckbother"android:layout_width="wrap_parint"android:layout_heigth="wrap_parint"android:text=":其他"/>  <FrameLayoutandroid:id="@+id/settings"android:layout_width="match_parent"android:layout_height="wrap_parent"/>
</LinearLayout><LinearLayout xmlns:android="..."><!--编写listView布局,并为其添加进度条-->android:id="@+id/llt_02"android:layout_width="match_parint"android:layout_heigth="wrap_parint"android:orientation="vertical"><TextViewandroid:id="@+id/tvCarlistview"android:layout_width="match_parint"android:layout_heigth="wrap_parint"android:text="畅销汽车列表(ListView):"/><ListViewandroid:id="@+id/lv"android:layout_width="match_parint"android:layout_heigth="wrap_parint"></ListView><SeekBarandroid:id="@+id/sk"android:layout_width="match_parint"android:layout_heigth="wrap_parint"android:max="100"android:progress="50"/><!--max最大进度,progress当前进度-->
</LinearLayout>

meun.xml文件如下

<?xml version="1.0" encoding="utf-8"?>
<!--menu文件写在另一个xml文件中,在Activity中通过重写onCreateOptionsMenu方法,进行调用-->
<menu xmlns:android="...">android:layout_width="match_parint"android:layout_heigth="match_parint"><itemandroid:id="@+id/m1"android:title="收藏"/><itemandroid:id="@+id/m2"android:title="历史记录"/><itemandroid:id="@+id/m3"android:title="帮助与反馈"/><itemandroid:id="@+id/m4"android:title="关于App"/>
</menu>

listView.item.xml文件如下

<?xml version="1.0" encoding="utf-8"?>
<!--listView的item文件写在另一个xml文件中,通过Adapter与Activity建立联系-->
<LinearLayout xmlns:android="...">android:layout_width="match_parint"android:layout_heigth="match_parint"<TextViewandroid:id="@+id/tv_car1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="五菱" /><TextViewandroid:id="@+id/tv_car2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="大众" /><TextViewandroid:id="@+id/tv_car3"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="比亚迪" />    <TextViewandroid:id="@+id/tv_car4"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="特斯拉" />
</LinearLayout>

setting.xml文件如下

<?xml version="l.0" encoding="utf-8"?>
<PreferenceScreen><Preferenceandroid:key="largeSize"android:title="大字体"android:summary="Setting a large font"/><Preferenceandroid:key="middleSize"android:title="中字体"android:summary="Setting a middle font"/><Preferenceandroid:key="smallSize"android:title="小字体"android:summary="Setting a small font"/>
<!--summary将在title以小字体解释说明title--><Preferenceandroid:key="cancel"android:title="取消"/>
</PreferenceScreen>

程序设计2:根据要求,补充Activity.java文件

1、在Activity中获取RadioButton,为RadioGroup添加监听器,实现OnCheckedChangedListener接口,代码如下


public class MainActivity extends Activity {//继承父类private RadioButton shoudong,zidong;//private RadioGroup  speedchange@Overrideprotected void onCreate(Bundle savedInstanceState){//实现onCreate方法,包含下一行super.onCreate(savedlnstanceState);setContentView(R.layout.activity_main);//调用方法,展现视图Viewspeedchange=(RadioGroup)findViewByld(R.id.bgp1);shoudong=(RadioButton)findViewByld(R.id.rbt1);zidong=(RadioButton)findViewByld(R.id.rbt2);//这里的bgp1,rbt1,rbt2与xml文件中id一致speedchange.setOnClickedChangeListener(new zjrRadioButtonListener());}class zjrRadioButtonListener implements OnClickedChangeListener{@Overridepublic void onCheckedChanged(RadioGroup Group,int checkedId){switch(checkedId){case R.id.rbt1:Log.i("speedchange","变速箱选择了"+rbt1.getText().toString());break;case R.id.rbt2:Log.i("speedchange","变速箱选择了"+rbt2.getText().toString());break; 
//这里点击事件发生后我写了log,考试时要具体分析 }}}
}

2、在Activity中获取Button,添加监听器,实现OnClickListener接口,并利用Intent实现两个活动状态之间的转换,代码如下


public class MainActivity extends Activity {//继承父类private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState){//实现onCreate方法,包含下一行super.onCreate(savedlnstanceState);setContentView(R.layout.activity_main);//调用方法,展现视图Viewbutton=(Button)findViewByld(R.id.btmakesure);button.setOnClickListener(new View.OnClickListener(){@Overridepublic void onClick(View v){Intent intent=new Intent(MainActivity.this,NextActivity.class);startActivity(intent);}});}
}

3、编写Menu菜单的Activity.java文件

//The Activity.java for menu
public class TipCalculatorActivity extends Activity{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedlnstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//The code that displays the menu展示菜单getMenuInflater().inflate(R.menu-activity_tip_calculator, menu);return true;  }@Overridepublic boolean onOptionsItemSelected(Menultem item) {//The code that handles the menu item events处理项目点击事件switch(item.getItemId()) {case R.id.menu_settings:startActivity(new Intent(getApplicationContext( ),SettingsActivity.class));return true;case R.id.menu_about:startActivity(new Intent(getApplicationContext( ),AboutActivity.class));return true;default:return super.onOptionsItemSelected(item);}}
}

程序填空

        程序填空能考的实在太多了,上面的程序设计题中已经覆盖了很多填空的知识,所以要理解地选择记忆

补充一些上面没有涉及到的,如下:

1、第四章how to trace code execution跟踪代码执行的两种方法

  • 利用日志Logcat
//How to use the Log class如何使用日志
//第1步:Import the Log class导入日志类
import android.util.Log;//第2步:Declare a constant for the tag parameter为标签参数声明一个常量
private static final String TAG = "TipCalculatorActivity";//第3步:Send messages to the log向日志发送消息
Log.d(TAG, "calculateAndDisplay method started");
Log.d(TAG, "billAmount: " + billAmount);
  • 利用消息提示框Toast
//How to display a toast如何展示消息框
//第1步:Import the Toast class导入消息类
import android.widget.Toast;//第2步:Use two statements使用方法makeText()和show()
Toast t = Toast.makeText(this, "onCreate method", Toast.LENGTH_SHORT);
t.show();//第3步:Use a single statement (method chaining)使用方法makeText()链接
Toast.makeText(this, "onCreate method ", Toast.LENGTH_SHORT).show();

2、第十章

  • 考点一:how to use SAX ( Simple API for XML) to parse  XML files
final String FILENAME = "news_feed.xml";
RSSFeed feed;
try {SAXParserFactory factory = SAXParserFactory.newlnstance();// get the XML readerSAXParser parser = factory.newSAXParser();XMLReader xmlreader = parser.getXMLReader();RSSFeedHandler theRssHandler = new RSSFeedHandler();// set content handlerxmlreader.setContentHandler(theRssHandler);FilelnputStream in = openFilelnput(FILENAME); // get the input streamInputSource is = new InputSource(in);// parse the dataxmlreader.parse(is);feed = theRssHandler.getFeed();// get the content handler and return it
}
catch (Exception e) {Log.e("News reader", e.toString());
}
  • 考点二:How to use an adapter to display data in a list view
//Code that creates and sets the adapter创建和设置适配器的代码ArrayList <RSSItem> items = feed.getAllItems();// 获取提要项ArrayList <HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();// 创建Map<String, ?>对象列表
for (RSSItem item : items) {HashMap<String, String> map = new HashMap<String, String>();map.put("date", item.getPubDateFormatted());map.put("title", item.getTitle( ));data.add(map);
}int resource = R.layout.listview_item;// 创建资源变量、from变量和to变量
String[] from = {"date", "title"};
int[] to = {R.id.pubDateTextView, R.id.titleTextView};SimpleAdapter adapter =new SimpleAdapter(this, data, resource, from, to);// 创建和设置适配器
itemsListView.setAdapter(adapter);

3、第十一章

  • 考点一:Service核心代码
//The NewsReaderService class with its lifecycle methods implemented
//NewsReaderService类及其实现的生命周期方法
public class NewsReaderService extends Service {@Overridepublic void onCreate() {    }@Overridepublic int onStartCommand(Intent intent, int flags, int startld) {return START_STICKY;}@Overridepublic IBinder onBind(Intent intent) {   return null;}@Overridepublic void onDestroyO {}
}
  • 考点二:notifications核心代码
//How to create a notification如何创建通知
//Step 1: Create the variables for the notification步骤1:为通知创建变量
int icon = R.drawable.ic_launcher;
CharSequence tickerText = "Updated news feed is available";
CharSequence contentTitle = getText(R.string.app_name);
CharSequence contentText = "Select to view updated feed.";//Step 2: Create the Notification object步骤2:创建Notification对象
Notification notification =new Notification.Builder(this).setSmallIcon(icon).setTicker(tickerText ).setContentTitle(contentTitle).setContentText(contentText ).setContentlntent(pendingIntent ).setAutoCancel(true).build();

4、第十二章

  • The BootReceiver class
public class BootReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Log.d("News reader", "Boot completed");// start serviceIntent service = new Intent(context, NewsReaderService.class);context.startService(service);}
}

说明:

        我不推荐大家看我的博文来复习

  • 第一,这篇总结我并没有写完整,至少还剩1/3没写,但是我没时间写了
  • 第二,我总结的只是老师划的重点以及我阅读代码后的见解,能覆盖多少咱说不准
  •  我写的并不是很通俗易懂,实在没时间写那么细,如果看不懂,我建议先去图书馆找android中文书,走马观花地过一遍,我看的是以下两本,图书馆3楼东,关于android开发的书很多

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_285707.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装Nginx——docker安装

使用docker安装Nginx 1.开启docker systemctl start docker docker search nginx[rootlocalhost ~]# systemctl start docker //开启docker [rootlocalhost ~]# docker search nginx //搜素镜像 2. docker pull nginxdocker imagesdocker run -…

【ROS】基于WIFI网络实现图像消息跨机实时传输

【开发背景】 研究机器人目标检测算法的时候&#xff0c;常常需要把推理图像实时展示出来&#xff0c;以供观摩。而ROS1提供的跨机通信方法&#xff0c;要么是配置单Master&#xff0c;要么是配置多Master&#xff1b;一方面配置麻烦&#xff0c;另一方面传输效率低下&#xf…

SQL select总结(基于选课系统)

表详情&#xff1a; 学生表&#xff1a; 学院表&#xff1a; 学生选课记录表&#xff1a; 课程表&#xff1a; 教师表&#xff1a; 查询&#xff1a; 1. 查全表 -- 01. 查询所有学生的所有信息 -- 方法一&#xff1a;会更复杂&#xff0c;进行了两次查询&#xff0c;第一…

基于灵动微SPIN系列开发的水泵方案介绍 以 MM32SPIN040C/MM32SPIN560C为主控

水泵是输送液体或使液体增压的机械。它将原动机的机械能或其他外部能量传送给液体&#xff0c;使液体能量增加&#xff0c;主要用来输送液体包括水、油、酸碱液、乳化液、悬乳液和液态金属等。 水泵以 MM32SPIN040C/MM32SPIN560C为主控。 水泵方案 MCU: MM32SPIN系列 1.输入…

【JavaWeb】后端(Maven+SpringBoot+HTTP+Tomcat)

目录一、Maven1.什么是Maven?2.Maven的作用?3.介绍4.安装5.IDEA集成Maven6.IDEA创建Maven项目7.IDEA导入Maven项目8.依赖配置9.依赖传递10.依赖范围11.生命周期二、SpringBoot1.Spring2.SpringBoot3.SpringBootWeb快速入门二、HTTP1.HTTP-概述2.HTTP-请求协议3.HTTP-响应协议…

机器学习实战:Python基于Logistic逻辑回归进行分类预测

目录1 前言1.1 Logistic回归的介绍1.2 Logistic回归的应用2 iris数据集数据处理2.1 导入函数2.2 导入数据2.3 简单数据查看3 可视化3.1 条形图/散点图3.2 箱线图3.3 三维散点图4 建模预测4.1 二分类预测4.2 多分类预测5 讨论1 前言 1.1 Logistic回归的介绍 逻辑回归&#xff…

产品知识沉淀

梁宁-产品思维30讲 看一个人或看一个产品&#xff0c;可以由表及里的五层来做观察和判断&#xff1a;感知层、角色层、资源层、能力圈和存在感 存在感之于人就好像生存之于动物一样&#xff0c;是触发情绪和推动行动的开关。 动物的状态和情绪&#xff0c;都是关乎它的生存需…

Stearic acid-mPEG,mPEG-STA,甲氧基PEG-单硬脂酸,具有优异疏水性

●外观以及性质&#xff1a; 硬脂酸是一种具有优异疏水性的18碳饱和脂肪酸脂质。PEG修饰的硬脂酸是一种具有亲水性和疏水性的优良的两亲性聚合物。聚乙二醇化脂质是一种优良的脂质体形成材料&#xff0c;可用于药物递送、基因转染和疫苗递送。硬脂酸是十八烷酸CH3&#xff08;C…

微信小程序开发 | API应用案例(下)

API应用案例&#xff08;下&#xff09;6.1【案例5】模拟时钟6.1.1 案例分析6.1.2 前导知识6.1.3 钟表页面布局6.1.4 钟表页面绘制6.2【案例6】罗盘动画6.2.1 案例分析6.2.2 前导知识6.2.3 设计罗盘页面布局6.2.4 手指触摸旋转罗盘6.2.5 单击按钮操作罗盘6.3【案例7】文件上传与…

关于药物|新药|药品市场调研报告(实操资料分享)

药品市场调研报告是指对药品行业进行详细的市场情况研究和分析。往往伴随着药品市场调研目的地不同&#xff0c;如战略探索、新药开发、投资决策等&#xff0c;报告编辑的内容要点要求也不一样。但总的核心要点内容笔者已提炼&#xff0c;如下&#xff1a; 一、药品市场调研报告…

Python学习笔记--判断语句

&#xff08;一&#xff09; 布尔类型和比较运算符 1. 布尔类型&#xff1a;判断结果 True&#xff1a;表示真&#xff08;是、肯定&#xff09; False&#xff1a;表示假&#xff08;否、否定&#xff09; """ 演示布尔类型的定义 以及比较运算符的应用 "…

【花雕学AI】找出合适的提示词—让ChatGPT发挥出最大的潜力与价值

ChatGPT 是一种基于人工智能技术的自然语言处理系统&#xff0c;它可以回答各种问题&#xff0c;提供有用的信息和建议。然而&#xff0c;要让 ChatGPT 发挥出最大的潜力和价值&#xff0c;我们需要使用一些提示词来帮助它更好地理解我们的问题和需求。这些提示词包括明确、详细…

文件上传漏洞 --- php邂逅windows通用上传缺陷

目录 后端源码 前端源码 后端代码审计 方式一绕过原理 --- 冒号加特性 验证及结果 方式二绕过原理 --- 数据流 验证及结果 环境需求 php5.2.17IIS环境&#xff0c;可以下载phpstuday2018来满足环境的要求。 后端源码 <?php //U-Mail demo ... if(isset($_POST[sub…

项目3:积分等级表接口的开发和使用(后台)

项目3&#xff1a;积分等级表接口的开发和使用 1.service-core的controller创建admin包 2.对积分登记表完成增删改查 3.配置swagger接口生成器和ui 4.统一设置返回结果 5.统一设置异常处理 6.统一日志处理 项目3&#xff1a;积分等级表接口的开发和使用 1.service-core的…

编码与加密基础笔记

文章目录&#x1f449;1、ASCII 编码&#x1f449;2、了解Base64&#x1f449;3、MD5消息摘要算法&#x1f449;4、对称加密与 AES&#x1f449;5、非对称加密与 RSA参考书籍《Python 3 反爬虫原理与绕过实战》&#x1f449;1、ASCII 编码 ASCII编码实际上约定了字符串和二进制…

unity的基本窗口界面简要介绍

呜呜呜呜呜呜呜呜呜&#xff0c;怎么可能不难过啊&#xff0c;这tm比失恋难受 学习学习&#xff0c;我要移情别恋 打开一个项目&#xff0c;在左上角或者其他地方&#xff0c;能看到以下界面 Scene&#xff1a;场景编辑窗口 在这个界面我们可以自由切换视角观看场景&#xff0…

Web前端基础——盒子模型

&#xff08;1&#xff09;盒子模型的作用&#xff1a; 布局网页&#xff0c;摆放盒子和内容 &#xff08;2&#xff09;盒子模型重要组成部分&#xff1a; 内容区域 - width & height内边框 - padding&#xff08;出现在内容与盒子边缘之间&#xff09;边框线 - border外…

MySQL---数据类型

文章目录前言一、数据类型分类二、数值类型1.tinyint类型2.bit类型三、小数类型1.float2. decimal三、字符串类型1.char2.varchar3.char和varchar比较四、日期和时间类型五、enum和set我们如何找到性别是男或者女呢?我们如何找到爱好有rapper呢?总结前言 正文开始!!! 一、数…

NE555 Motor LED Chaser

文章目录1.前言2.资料下载1.前言 这个是从YouTube上搬运来的&#xff0c;如图所示 2.资料下载 所需材料 #1# 10k resistor 1 #2# 10k variable resistor 1 #3# 10uf capacitor 1 #4# 3mm blue led 4 #5# 3mm yellow led 4 #6# 3mm red led 4 #7# 3mm green led 4 #8# 3mm w…

新规拉开中国生成式AI“百团大战”序幕?

AI将走向何方&#xff1f; ChatGPT在全球范围掀起的AI热潮正在引发越来越多的讨论&#xff0c;AI该如何管理&#xff1f;AI该如何发展&#xff1f;一系列问题都成为人们热议的焦点。此前&#xff0c;马斯克等海外名人就在网络上呼吁OpenAI暂停ChatGPT的模型训练和迭代&#xf…