【移动应用开发】实验一Activity

一、实验目的

1.熟练掌握Android开发环境搭建和Android Studio的使用;
2.了解Android Studio中项目的文件目录结构;
3. 掌握基于Activity的Android APP的设计和编码方法,根据需求完成APP界面和Activity之间的数据传递功能。

二、实验内容

1.Android Studio安装与基本使用方法;
2.设计实现一个判断题题库Android APP,其基本功能包括:
1)启动后显示第一个题目的界面,如图1-1所示,界面中包含了题目内容、“正确”、“错误”、“查看答案”和“下一个”按钮。点击“正确”或“错误”表示用于给出的答案,点击“下一个”进入下一个判断题;
2)用户点击“查看”答案后,显示如图1-2所示的界面,其中显示提示信息“确定看答案?”和“答案”按钮。用户点击“答案”后,界面显示该题目的标准答案,如图1-3所示;
3)用户如果在题目界面未选择答案而直接进入答案界面并查看了答案,再次回到题目界面(图1)点击“正确”或“错误”按钮,界面提示信息,如图1-4所示的“作弊是不对的”。
三、实验要求
1.实现上述的基本功能要求。说明:题库内容可以写在代码中。在此基础上,可以进一步优化界面,也可以进一步添加其他功能。
2.实验报告提交内容:
1)结合系统界面(截图)介绍APP功能;
2)核心实现代码(Java或Kotlin代码)和布局文件等。
四、APP功能
一.启动界面中包含了题目内容、“正确”、“错误”、“查看答案”和“下一个”按钮。点击“正确”或“错误”表示用于给出的答案,点击“下一个”进入下一个判断题;
在这里插入图片描述在这里插入图片描述在这里插入图片描述

二.用户点击“查看”答案后,弹出提示信息“确定看答案?”和“是/否”按钮。
在这里插入图片描述在这里插入图片描述

三.用户如果在题目界面未选择答案而直接进入答案界面并查看了答案,再次回到题目界面点击“正确”或“错误”按钮,界面提示信息“作弊是不对的”。
在这里插入图片描述

四.横竖屏幕Activity不刷新。
在这里插入图片描述

五.题目循环出现。
五、核心实现代码
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/question_test_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:padding="20dp"
        />

        <Button
            android:id="@+id/true_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/true_button"
            tools:layout_editor_absoluteX="41dp"
            tools:layout_editor_absoluteY="86dp" />

        <Button
            android:id="@+id/false_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/false_button"
            tools:layout_editor_absoluteX="147dp"
            tools:layout_editor_absoluteY="85dp" />

        <Button
            android:id="@+id/check_answer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/check_answer"
            tools:layout_editor_absoluteX="257dp"
            tools:layout_editor_absoluteY="85dp" />

        <Button
            android:id="@+id/next_button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="@string/next_button"
            tools:layout_editor_absoluteX="257dp"
            tools:layout_editor_absoluteY="85dp" />
    </LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.java

package com.example.quizactivity;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.DialogInterface;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private Button mTrueButton;
    private Button mFalseButton;
    private Button mCheckButton;
    private Button mNextButton;

    private TextView mQuestionTextView;

    private int flat=0;//判断是否查看过答案

    private Question[] mQuestionBank = new Question[] {
            new Question(R.string.question_1, false),
            new Question(R.string.question_2, true),
            new Question(R.string.question_3, false),
            new Question(R.string.question_4,false),
            new Question(R.string.question_5, true),
    };
    private int mCurrentIndex = 0;//题目循环

    private void updateQuestion() {
        flat=0;
        int question = mQuestionBank[mCurrentIndex].getTextResId();
        mQuestionTextView.setText(question);
    }

    private void checkAnswer(boolean userProessedTrue) {
        boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();
        int messageId = 0;
        if (userProessedTrue == answerIsTrue && flat != 1)
            messageId = R.string.correct_toast;
        else
            messageId = R.string.incorrect_toast;
        if(flat==1)
            messageId=R.string.cheat;
        Toast.makeText(this, messageId, Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        mQuestionTextView = (TextView) findViewById(R.id.question_test_view);
        updateQuestion();

        mTrueButton = (Button) findViewById(R.id.true_button);
        mTrueButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAnswer(true);
            }
        });
        mFalseButton = (Button) findViewById(R.id.false_button);
        mFalseButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                checkAnswer(false);
            }
        });

        mCheckButton = (Button) findViewById(R.id.check_answer);
        mCheckButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final String[] AB = new String[]{"是","否"};
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("确定要查看答案吗");

                builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        flat=1;
                        boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();
                        if(answerIsTrue == true)
                            Toast.makeText(MainActivity.this,"答案是:正确",Toast.LENGTH_SHORT).show();
                        else
                            Toast.makeText(MainActivity.this,"答案是:错误",Toast.LENGTH_SHORT).show();
                    }
                });
                builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "再接再厉",Toast.LENGTH_SHORT).show();
                    }
                });
                builder.show();
            }
        });

        mNextButton = (Button) findViewById(R.id.next_button);
        mNextButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mCurrentIndex = (mCurrentIndex + 1) % mQuestionBank.length;//循环题目
                updateQuestion();
            }
        });
    }
}

AndroidManifast.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.quizactivity">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.QuizActivity">
        <activity
            android:name=".MainActivity"
            android:exported="true"
android:configChanges="keyboard|keyboardHidden|screenSize|orientation"
            android:label="@string/app_name">

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Qusetion.java

package com.example.quizactivity;

public class Question {
    private int mTextResId;
    private boolean mAnswerTrue;

    public Question(int textResId, boolean answerTrue) {
        mTextResId = textResId;
        mAnswerTrue = answerTrue;

    }

    public int getTextResId() {
        return mTextResId;
    }

    public boolean isAnswerTrue() {
        return mAnswerTrue;
    }

}

strings.xml

<resources>
    <string name="app_name">实验1判断</string>
        <string name="true_button"></string>
        <string name="false_button"></string>
        <string name="correct_toast">回答正确!</string>
        <string name="incorrect_toast">回答错误!</string>
        <string name="check_answer">查看答案</string>
        <string name="cheat">作弊是不对的!</string>
        <string name="next_button">下一题</string>

        <string name="question_1">纽约是美国首都。</string>
        <string name="question_2">华盛顿是美国首都。</string>
        <string name="question_3">元宵节要吃粽子。</string>
        <string name="question_4">圣诞节在一月份。</string>
        <string name="question_5">十月一是国庆节。</string>

</resources>
  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android移动应用开发实验指导书 课程代码: 总课时数: 适用专业: 院(系)名称: Android移动应用开发实验指导书全文共13页,当前为第1页。 Android移动应用开发实验指导书全文共13页,当前为第1页。 实验一深入理解Activity 目标 (1)掌握Activity的开发、配置和使用。 (2)掌握Intent的几种常用的属性。 (3)Android系统内置Intent的使用。 (4)了解Activity的生命周期 实验软、硬件环境 硬件:PC电脑一台; 配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse、ADT、Android SDK 实验主要技术基础 (1)活动是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。 (2)Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。 任务 1、请在AndroidManifest.xml文件中配置SecondActivity: 配置Intent的Action属性为com.sise.intent.action.JHY_ACTION; 配置Category属性为com.sise.intent.category.JHY_CATEGORY。 通过隐式Intent的使用从FirstActivity启动SecondActivity,编写代码,运行程序,预期效果如下所示。 Android移动应用开发实验指导书全文共13页,当前为第2页。 Android移动应用开发实验指导书全文共13页,当前为第2页。 图1 程序运行初始化界面 图2 点击图1中的按钮后的运行结果 2、请使用显式Intent启动SecondActivity,并使用Intent从FirstActiv传递数据到SecondActivity。编写代码,运行程序,预期效果如下所示。 图1 程序运行初始化界面图2 点击图1中的按钮后的运行结果 3、使用Intent传递数据从SecondActivity返回数据到FirstActivity中去。编写代码,运行程序,预期效果如下所示。 图1 程序运行初始化界面图2 点击图1按钮运行结果 图3 点击图2按钮运行结果 实验方法与步骤 (1)创建活动 ActivityAndroid系统提供的一个活动基类所有的活动都必须直接或间接继承此类才能拥有活动的特性。 (2)布局文件 创建布局文件 加载布局文件 (3)在清单文件中注册活动 (4)以上方法完成多个活动的创建 Android移动应用开发实验指导书全文共13页,当前为第3页。(5)使用Intent完成多个活动之间的交互和数据传递 Android移动应用开发实验指导书全文共13页,当前为第3页。 实验Android的UI界面开发 目标 (1)掌握常用UI组件的功能和用法。 (2)掌握四种基本的布局。 (3)掌握自定义控件的2种使用方法。 (4)掌握ListView的简单用法。 (5)掌握自定义ListView控件的使用。 实验软、硬件环境 硬件:PC电脑一台; 配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse、ADT、Android SDK 实验主要技术基础 (1)Android的UI界面都是由View和ViewGroup及其派生类组合而成的。其中,View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器。 (2)Android的布局方式有LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、TableLayout(表格布局)。 (3)Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。 任务:制作精美聊天界面 使用自定义的ListView制作精美的聊天界面,编写代码,运行程序,预期效果如下所示。 Android移动应用开发实验指导书全文共13页,当前为第4页。 主界面布局示意图: Android移动应用开发实验指导书全文共13页,当前为第4页。 (要求画出) ListView子项布局示意图: (要求画出) ------------------------------------------------- 消息实体类创建: (主要代码) 自定义适配器类的创建: (主要代码) 主界面活动的代码: (主要代码) 实验方法与步骤 Step1:创建主界面布局文件。 Step2:创建ListView子项布局文件(可以使用And
移动开发技术(Android)——实验1Android开发环境搭建及简单程序实现 移动开发技术(Android)——实验1 Android开发环境搭建及简单程序实现 ⼀、实验⽬的 1.熟练掌握Android开发环境搭建步骤; 2.掌握Android应⽤程序开发的基本步骤; 3.掌握Android应⽤程序结构。 ⼆、实验内容 1.Android开发环境搭建,要求: (1)将服务器上的相关开发包下载到本机。 (2)按照步骤搭建Android开发环境。 (3)实验报告中要求⽤语⾔描述具体的搭建步骤,并附以截图做辅助说明。 2.创建⼀个Android项⽬,项⽬名称为"shiyan0101_⾃我介绍",要求: (1)界⾯构成:⾄少5个⽂本框,分别⽤于显⽰学⽣的姓名、性别、出⽣年⽉、专业班级、爱好等内容。 (2)实验报告中要求⽤语⾔描述具体的实验步骤,并附以截图做辅助说明。 3.创建⼀个Android项⽬,项⽬名称为"shiyan0102_⽤户登录",要求: (1)界⾯构成:2个⽂本框,分别⽤于显⽰"⽤户名:"、"密码",2个编辑框⽤户接收输⼊的⽤户名和密码,1个按钮,⽂本显⽰"登 录"。 (2)实验报告中要求⽤语⾔描述具体的实验步骤,并附以截图做辅助说明。 三、实验过程 1.⾸先解压缩eclipse⾄D盘,然后在eclipse⽂件夹下的dropins⽂件⾥创建⼀个名为ADT的⽂件夹,将ADT-22.0.5压缩包中的features和 plugins复制到ADT中。 打开eclipse,选择菜单栏Window—>preferences—>在弹出的页⾯中选择Android选项—>SDK Location—>在右侧单击Browse按钮, 浏览到之前解压的SDK根⽬录,并单击"确定"按钮,然后再单击Apply和OK按钮。 2.创建⼀个Android项⽬,项⽬名称为"shiyan0101_⾃我介绍",要求: 界⾯构成:⾄少5个⽂本框,分别⽤于显⽰学⽣的姓名、性别、出⽣年⽉、专业班级、爱好等内容。 (1)在eclipse中创建⼀个Android Application Project,项⽬名称:shiyan0101_⾃我介绍 (2)在XML⽂件的GraphicLayout中⽤⿏标拖动5个TextView控件,分别设置text内容分别为name、sex、Birthday、Depertmant、 Hobby;⽤⿏标拖动5个EditText空间,分别放于5个TextView控件的后⾯。 (3)运⾏run——Andorid Application,程序结果截图如下 3.创建⼀个Android项⽬,项⽬名称为"shiyan0102_⽤户登录",要求: 界⾯构成:2个⽂本框,分别⽤于显⽰"⽤户名:"、"密码",2个编辑框⽤户接收输⼊的⽤户名和密码,1个按钮,⽂本显⽰"登录"。 (1)在ECLIPSE中创建⼀个Android Application Project,项⽬名称:shiyan0102_⽤户登录 (2)在XML⽂件的GraphicLayout中⽤⿏标拖动2个TextView控件,分别设置text内容分别为⽤户名、密码;⽤⿏标拖动2个EditText空 间,分别放于前两个个TextView控件的后⾯;⽤⿏标拖动⼀个button放于前者的下⾯,设置text内容为登陆。 (3)运⾏run——Andorid Application,程序结果截图如下。
Android移动应用开发实验指导书 课程代码: 总课时数: 适用专业: 院(系)名称: Android移动应用开发实验指导书全文共13页,当前为第1页。 Android移动应用开发实验指导书全文共13页,当前为第1页。 实验一深入理解Activity 目标 (1)掌握Activity的开发、配置和使用。 (2)掌握Intent的几种常用的属性。 (3)Android系统内置Intent的使用。 (4)了解Activity的生命周期 实验软、硬件环境 硬件:PC电脑一台; 配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse、ADT、Android SDK 实验主要技术基础 (1)活动是Android的四大组件之一,它是一种可以包含用户界面的组件,主要用于和用户进行交互。 (2)Intent是Android程序中各组件之间进行交互的一种重要方式,它不仅可以指明当前组件想要执行的动作,还可以在不同组件之间传递数据。 任务 1、请在AndroidManifest.xml文件中配置SecondActivity: 配置Intent的Action属性为com.sise.intent.action.JHY_ACTION; 配置Category属性为com.sise.intent.category.JHY_CATEGORY。 通过隐式Intent的使用从FirstActivity启动SecondActivity,编写代码,运行程序,预期效果如下所示。 Android移动应用开发实验指导书全文共13页,当前为第2页。 Android移动应用开发实验指导书全文共13页,当前为第2页。 图1 程序运行初始化界面 图2 点击图1中的按钮后的运行结果 2、请使用显式Intent启动SecondActivity,并使用Intent从FirstActiv传递数据到SecondActivity。编写代码,运行程序,预期效果如下所示。 图1 程序运行初始化界面图2 点击图1中的按钮后的运行结果 3、使用Intent传递数据从SecondActivity返回数据到FirstActivity中去。编写代码,运行程序,预期效果如下所示。 图1 程序运行初始化界面图2 点击图1按钮运行结果 图3 点击图2按钮运行结果 实验方法与步骤 (1)创建活动 ActivityAndroid系统提供的一个活动基类所有的活动都必须直接或间接继承此类才能拥有活动的特性。 (2)布局文件 创建布局文件 加载布局文件 (3)在清单文件中注册活动 (4)以上方法完成多个活动的创建 Android移动应用开发实验指导书全文共13页,当前为第3页。(5)使用Intent完成多个活动之间的交互和数据传递 Android移动应用开发实验指导书全文共13页,当前为第3页。 实验Android的UI界面开发 目标 (1)掌握常用UI组件的功能和用法。 (2)掌握四种基本的布局。 (3)掌握自定义控件的2种使用方法。 (4)掌握ListView的简单用法。 (5)掌握自定义ListView控件的使用。 实验软、硬件环境 硬件:PC电脑一台; 配置:winxp或win7系统,内存大于4G,硬盘250G及以上 JDK1.7 、Eclipse、ADT、Android SDK 实验主要技术基础 (1)Android的UI界面都是由View和ViewGroup及其派生类组合而成的。其中,View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器。 (2)Android的布局方式有LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、TableLayout(表格布局)。 (3)Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。 任务:制作精美聊天界面 使用自定义的ListView制作精美的聊天界面,编写代码,运行程序,预期效果如下所示。 Android移动应用开发实验指导书全文共13页,当前为第4页。 主界面布局示意图: Android移动应用开发实验指导书全文共13页,当前为第4页。 (要求画出) ListView子项布局示意图: (要求画出) ------------------------------------------------- 消息实体类创建: (主要代码) 自定义适配器类的创建: (主要代码) 主界面活动的代码: (主要代码) 实验方法与步骤 Step1:创建主界面布局文件。 Step2:创建ListView子项布局文件(可以使用And

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值