题目信息

实现用户在线答题的功能,要求如下,运行效果如下图所示:
1. 全部为单项选择题;
2. 每个题目由1个题面和4个选项组成;
3. 用户点击开始按键后,开始答题和计时;
4. 答题时,用户做出选择后,自动跳转到下一题;全部答完后,使用Toast提示框提示用户的答对、答错的个数和总共耗时。
5. 在界面上方显示当前已答个数和待答个数。
6. 题面、选项和答案,作为数组资源保存,如下:
7.

 <string-array name="testTitle"><item>为了使android适应不同分辨率的机型,布局时字体单位应用</item><item>在手机开发中,常用的数据库是哪一个?</item><item>下列哪个属性是专用于相对布局的?</item>
</string-array>
<string-array name="testOption1"><item>dp</item><item>dip</item><item>px</item><item>sp</item>
</string-array><string-array name="testOption2"><item>Oracle</item><item>DB2</item><item>Mysql</item><item>SQLite</item>
</string-array><string-array name="testOption3"><item>layout_toRightOf</item><item>stretchColumns</item><item>layout_width</item><item>orientation</item>
</string-array>
<array name="testOptionAll"><item>@array/testOption1</item><item>@array/testOption2</item><item>@array/testOption3</item>
</array>
<integer-array name="anwser"><item>4</item><item>4</item><item>1</item>
</integer-array>

8. 知识点补充:
隐藏组件:radioGroup.setVisibility(View.INVISIBLE);
取当前的时间:System.currentTimeMillis()
清除当前选择:radioGroup.clearCheck();


解析:

1. 在res的values目录下创建arrays存放数组信息
2. 在layout下创建xml ,写出页面的组件的
3. 在java中创建空的activity , 写出响应xml布局的代码。思路分析:
4. 创建layout布局 写出初始的xml页面
5. 创建activity,加载layout页面方法一:
6. 第1步: 定义页面组件,通过id获取页面对应的控件(R.layout.***)最好是用到哪个定义哪个,否则思路容易乱。
7. 第2步: 获取数组资源信息Resources resources = getResources();testTile = resource.getStringArray(R.array.testTitle);......此题我的代码是: 将定义控件和获取数组资源封装到一个方法体内,进行调用。 目的:增强代码可读性
8. 第3步: 点击开始按钮之前,隐藏题目信息radioGroup.setVisibility(View.GONE);9. 第4步: 点击开始按钮之后,获取当前时间(据197*年1月1日的毫秒值)答题完毕后,再获取字词时间,取差,除以1000得到答题用时的秒数final long beginTime = System.currentTimeMillis();
10. 第5步: 将隐藏的单选框显示出来  并 调用显示题目信息和选项信息的方法radioGroup.setVisibility(View.VISIBLE);showTitleAndOption();  该方法为自定义封装的用于显示题目和选项信息的方法
11. 第6步: 在showTitleAndOption()中显示,答题数目的提示信息,即已答几题,剩余几题,TextView.setText。然后判断是否为最后一题,若是退出方法。根据简单的逻辑即可写出,不再赘述,可参考下文代码。
12. 第7步: 设置radioGroup点击事件,当点击选项是触发执行该方法方法内部使用switch-case进行,对选项的判断,设置临时值判断是否和答案数组中的值一致若一致,则回答正确 rightCounts++,无论是否回答正确,都要根据数组索引index2++(初始为0,++在后面,先按当前值运算,运算结束后++)判断当前题目是否为最后一题,若是,隐藏题目信息,计时结束显示回答结果否则,索引index++ , 执行显示(下一题)题目和选项的方法 showTitleAndOption();
13.  奥利给 自己写一遍!方法二:
15. 第1步:复制粘贴 。

arrays代码,名称为:arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources><string-array name="testTitle"><item>为了使android适应不同分辨率的机型,布局时字体单位应用</item><item>在手机开发中,常用的数据库是哪一个?</item><item>下列哪个属性是专用于相对布局的?</item></string-array><string-array name="testOption1"><item>dp</item><item>dip</item><item>px</item><item>sp</item></string-array><string-array name="testOption2"><item>Oracle</item><item>DB2</item><item>Mysql</item><item>SQLite</item></string-array><string-array name="testOption3"><item>layout_toRightOf</item><item>stretchColumns</item><item>layout_width</item><item>orientation</item></string-array><array name="testOptionAll"><item>@array/testOption1</item><item>@array/testOption2</item><item>@array/testOption3</item></array><integer-array name="anwser"><item>4</item><item>4</item><item>1</item></integer-array>
</resources>

xml布局代码,名称为:layout_ans_online.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><TextViewandroid:id="@+id/h3_tv1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><Buttonandroid:id="@+id/h3_bt"android:layout_width="100dp"android:layout_height="wrap_content"android:layout_margin="10dp"android:textColor="#000"android:text="开始"android:textSize="20sp" /><TextViewandroid:id="@+id/h3_tv2"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="20sp" /><RadioGroupandroid:id="@+id/rg_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="vertical"><RadioButtonandroid:id="@+id/h3_rb_1"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RadioButtonandroid:id="@+id/h3_rb_2"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RadioButtonandroid:id="@+id/h3_rb_3"android:layout_width="wrap_content"android:layout_height="wrap_content" /><RadioButtonandroid:id="@+id/h3_rb_4"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RadioGroup>
</LinearLayout>

activity(java)代码

package cn.edu.sdufe.sn20180664289;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;import androidx.appcompat.app.AppCompatActivity;
public class AnswerQuestionsOnline extends AppCompatActivity {private RadioButton radioButton1, radioButton2, radioButton3, radioButton4;private RadioGroup radioGroup;private TextView alter_message, tv_title;private int[] testAnsware;private String[] testTitle;private TypedArray typedArray;private int rightCounts, al_counts, index, len, index2, t=0;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.layout_ans_online);//调用 获取数组资源,并根据id获得组件资源 的方法getArrayAndAssembly();//获得存储题目的数组的长度,即题目数量len = testTitle.length;//点击开始按钮之前,隐藏题目信息radioGroup.setVisibility(View.GONE);//获取页面组件findViewById(R.id.h3_bt).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//将隐藏的单选框显示出来radioGroup.setVisibility(View.VISIBLE);//点击开始按钮后  计时开始final long beginTime = System.currentTimeMillis();//调用显示题目信息和选项信息的方法showTitleAndOption();radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int checkedId) {switch (checkedId) {case R.id.h3_rb_1:if (R.id.h3_rb_1 == checkedId) t = 1;case R.id.h3_rb_2:if (R.id.h3_rb_2 == checkedId) t = 2;case R.id.h3_rb_3:if (R.id.h3_rb_3 == checkedId) t = 3;case R.id.h3_rb_4:if (R.id.h3_rb_4 == checkedId) t = 4;//判断题目是否回答正确if (t == testAnsware[index2++]) rightCounts++;if (index == len - 1) {//答题完毕 计时结束,隐藏题目信息,显示结果信息radioGroup.setVisibility(View.GONE);        //隐藏题目信息long endTime = System.currentTimeMillis();  //获取答题结束时的系统时间long time = (endTime - beginTime);          //累计用时String stime = "您答对了" + rightCounts + "个题," + "答错" + (len - rightCounts) + "题," + "耗时 " + time/1000 + " 秒";Toast.makeText(AnswerQuestionsOnline.this, stime + "", Toast.LENGTH_LONG).show();}//选中radioButton时进行的操作,radiobutton是控件在xml文件中的idradioGroup.clearCheck();index++;//显示下一题信息showTitleAndOption();break;}}});}});}/*** 封装了 获取数组资源 和 根据id获得组件的方法*/public void getArrayAndAssembly() {Resources resources = getResources();  //使用该方法直接得到resource实例testTitle = resources.getStringArray(R.array.testTitle);  //获取存储题目的数组typedArray = resources.obtainTypedArray(R.array.testOptionAll); //访问TypedArraytestAnsware = resources.getIntArray(R.array.anwser); //获取存储答案的数组radioButton1 = findViewById(R.id.h3_rb_1);   //根据id获取组件radioButton2 = findViewById(R.id.h3_rb_2);   //根据id获取组件radioButton3 = findViewById(R.id.h3_rb_3);   //根据id获取组件radioButton4 = findViewById(R.id.h3_rb_4);   //根据id获取组件radioGroup = findViewById(R.id.rg_1);        //根据id获取组件tv_title = findViewById(R.id.h3_tv2);        //根据id获取组件alter_message = findViewById(R.id.h3_tv1);   //根据id获取组件}/*** 封装了 显示题目信息和选项信息的方法 即:调用数组资源 回写到页面的文本显示框 和 radionButton中*/public void showTitleAndOption() {//设置已答题的提示信息String s = "您已回答 " + al_counts++ + " 题,还剩 " + (len + 1 - al_counts) + " 题";alter_message.setText(s);if (index >= len) return; //如果将题目遍历完毕 则退出方法tv_title.setText(testTitle[index]);//填充选项信息,通过typeArray数组radioButton1.setText(typedArray.getTextArray(index)[0].toString()); //设置radioButton的内容radioButton2.setText(typedArray.getTextArray(index)[1].toString()); //设置radioButton的内容radioButton3.setText(typedArray.getTextArray(index)[2].toString()); //设置radioButton的内容radioButton4.setText(typedArray.getTextArray(index)[3].toString()); //设置radioButton的内容}
}

效果展示: 展示效果用了毫秒值,可将time/1000 换成秒

实现用户在线答题的功能,要求如下,运行效果如下图所示: 1. 全部为单项选择题; 2. 每个题目由1个题面和4个选项组成; 3. 用户点击开始按键后,开始答题和计时; 4. 答题时,用相关推荐

  1. C#设计一个简单的计算器,实现两个数的加,减,乘,除,求幂等计算,运行效果如下图所示:

    1.题目要求如下: C#设计一个简单的计算器,实现两个数的加,减,乘,除,求幂等计算,运行效果如下图所示: 2.这边需要用到的是VS2019下的C#Windows窗体 3.来吧,展示: using S ...

  2. HTML完成如下网页效果代码,JS实现可直接显示网页代码运行效果的HTML代码预览功能实例...

    本文实例讲述了JS实现可直接显示网页代码运行效果的HTML代码预览功能.分享给大家供大家参考.具体如下: JavaScript实现HTML代码预览功能,直接在网页上显示代码运行的效果,就例如点击&qu ...

  3. js直接显示html,JS实现可直接显示网页代码运行效果的HTML代码预览功能实例.pdf...

    JS实实现现可可直直接接显显示示网网页页代代码码运运行行效效果果的的HTML代代码码预预览览功功能能实实例例 本文实例讲述了JS实现可直接显示网页代码运行效果的HTML代码预览功能.分享给大 供大 参 ...

  4. 通过点击移位按键移位修改LCD1602字符型液晶显示器显示时分秒个位十位数值的计时项目

    通过点击移位按键移位修改LCD1602字符型液晶显示器显示时分秒个位十位数值的计时项目 一.前言 1.通过点击移位按键移位修改LCD1602字符型液晶显示器显示时分秒个位十位数值的计时项目包括用Kei ...

  5. php星级评分,jQuery_基于jQuery的星级评分插件,首先看一下运行效果如下图所 - phpStudy...

    基于jQuery的星级评分插件 首先看一下运行效果如下图所示. 鼠标移到星星上该星星前面的所有星星全部变亮,鼠标单击将记录点击的星星数,前面的所有星星将变亮. 一.原理本程序的原理是这样的:一个&qu ...

  6. java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  7. Uniapp实现小程序获取用户微信信息功能

    Uniapp实现小程序获取用户微信信息功能 实现后发现其实这个功能实现起来非常简单,但是,在实现这个功能的过程中真的好多坑啊,可能是我菜吧. 1.获取uniapp的appid和微信小程序的appid, ...

  8. Spring Security Oauth2 JWT 实现用户认证授权功能

    Spring Security Oauth2 JWT 一 用户认证授权 1. 需求分析 1.1 用户认证与授权 什么是用户身份认证? 用户身份认证即用户去访问系统资源时系统要求验证用户的身份信息,身份 ...

  9. 如何显示计算机中本地用户和组,win10电脑管理界面如何显示出“本地用户和组”功能...

    win10电脑管理界面如何显示出"本地用户和组"功能 有些小伙伴在电脑管理界面中没有看到"本地用户和组"功能,其实是我们没有显示出来而已.今天小编跟大家分享下w ...

最新文章

  1. JavaScript初学者编程题(12)
  2. Cannot perform runtime binding on a null reference
  3. opencv 边缘平滑_基于OpenCV的车道检测实现(一)
  4. 平板电脑必装十大软件_电脑越用越卡?这5个必装软件,分分钟帮你恢复火箭般的速度...
  5. 程序员如何在春节假期避免加班?
  6. java字符流输出流_JAVA语言之IO流字符串输入输出流
  7. Leetcode 233.数字1的个数
  8. 解释为什么用梯度下降而不是直接求导数为0的解?
  9. 点餐系统ip地址_教你一步一步做无线点餐项目(登录篇)
  10. 英国发现巨型失落海底世界:曾生活数万居民
  11. 牛客输入输出(依图科技)
  12. 漫画人物头像总是画不好?快看看这些注意点你有没有中招!
  13. Mac下添加Chrome插件
  14. python软件-mPython(图形化编程软件) V0.5.0 官方版
  15. gPTP的理解和使用
  16. 美军如何在不可信设备上安全访问国防部网络?
  17. Python-Selenium WebUI自动化 Selenium-API整理(下)
  18. 如何去画人物的侧脸眼睛?眼睛该怎么画?
  19. 适用于LeetCode的TypeScript编程调试环境
  20. 2018年计算机应用基础统考题库6,2018年12月份计算机应用基础统考题库-网考计算机应用基础真题6.doc...

热门文章

  1. 未接来电暗藏话费陷阱 回拨1次可能扣百元
  2. YouTube的视频推荐算法
  3. 论文中的展望与可以改进的地方
  4. php毕业论文吧,浅谈PHP(毕业论文).docx
  5. 配置linux syslog服务器+配置syslog客户端
  6. [ubuntu]ubuntu18.04利用wine安装最新版本的微信
  7. 5个资源强大的文艺网站,实用性满分!让你甩别人一万条街!
  8. charles 代理手机连不上网_小白也能懂:电脑连不上网分析与解决!
  9. 原生JS 全局变量设置和使用
  10. 2021年计算机职业高中分数线,2021中职学校录取分数线