目录 | 链接 |
---|---|
一,项目实验——Android 线性布局 | http://t.csdnimg.cn/yDK2c |
二,项目实验——Android 约束布局 | http://t.csdnimg.cn/TS73B |
三,个性化定制App登录界面 | http://t.csdnimg.cn/x7q7D |
四,项目实验——Activity与Intent | http://t.csdnimg.cn/BlTbs |
个性化定制App登录界面
一. 简答题(共1题,100分)
- (简答题)
个性化定制App登录界面
一、任务背景
你是一名996工程师,每天都在加班,很少有时间陪伴(男友/女友)。对方感到很失望,觉得你把工作看得比(他/她)还重要。
有一天,对方终于忍不住了,跟你发了脾气。你很抱歉,你拼命解释会尽快完成工作,然后尽量多陪陪对方。但(他/她)并不满意,说你每次都是这样道歉,毫无新意。
你感到很沮丧,你开始思考如何挽回对方的心。你不断反思你们之间的问题,突然,你想起了对方说的“毫无新意”,你明白了,原来(他/她)是生气你千篇一律、没有个性。于是,你想到了一个创意,这个创意会让对方刮目相看。你开始设计一个安卓App登录界面,这个登录界面与众不同,它不再是那些平凡无奇的登录界面,它是一个充满个性、时尚、便捷和安全的登录门户,可以让心爱的(他/她)在使用过程中感受到更多的精彩和乐趣。你希望能把这个登录界面展示给对方看,告诉她你并不是没有个性的人。
二、任务要求
1)25分;TextView、EditText、Button、RadioButton、RadioGroup、CheckBox和ImageView 七个控件每个至少使用1次;
2)25分;布局采用 ConstraintLayout;
3)25分;底部+居中放置一个字符串,显示“XXX版权所有”,其中XXX为姓名;
4)25分;点击“登录”按钮后,可以在Logcat显示用户输入的所有内容(字符串、选项等)。
三、答案形式与评分标准
3.1 答案形式
三个截图:
1)布局源码和预览截图(可以看到使用了什么布局和布局预览);
2)模拟器运行截图;
3)Logcat 输出截图(通过 tag 参数过滤后)。
3.2 评分标准
基本分80%(老师评):例如四个要求都满足,则基本分为 100×80%=80分
创新分20%(学生互评):依据个性化、创新程度给分,如打满100,则创新分为 100×20%=20分。
总分 = 基本分 × 80% + 创新分 × 20%
四、步骤参考
1)打开 Android Studio 并创建一个新项目;
2)在 res/layout 文件夹下打开 activity_main.xml 布局文件;
3)使用 TextView、EditText 等控件构造用户名和密码输入结构;
4)使用 RadioButton、RadioGroup、CheckBox 等控件构造其他输入信息结构;
5)使用 Button 构造登录按钮;
6)使用 ImageView 放置自己喜欢的图片;
7)底部居中放置一个 TextView,字符串设置为“XXX版权所有”,XXX为姓名;
8)在 MainActivity 类中,通过 findViewById 方法控件对应的对象;
9)给 Button 设置监听器,当登录按钮被点击时,可以在 Logcat 看到用户输入的所有信息。
五、答案示例
5.1 布局源码截图
5.2 模拟器运行截图
5.3 Logcat截图
六、注意事项
1)请仔细阅读任务要求,不要遗漏;
2)答案结果采用截图的形式,不要用手机拍照;
3)出现某些控件在预览中不显示的,优先检查 layout_width 和 layout_height 属性,检查是否被挡住;
4)在满足四个要求的基础上,可以DIY添加其他控件,尽情展现个性;
5)没对象也要做这个作业。
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#fefefe"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#6750a4"
android:id="@+id/top"
android:text="登录"
android:textSize="22dp"
android:textColor="#FFFFFF"
android:gravity="center"
app:layout_constraintTop_toTopOf="parent"/>
<TextView
android:id="@+id/top2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="35dp"
android:paddingLeft="30dp"
android:text="欢迎访问我们的APP!"
android:textColor="#797677"
android:textSize="26dp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top"
/>
<ImageView
android:id="@+id/img"
android:layout_width="288dp"
android:layout_height="258dp"
android:layout_marginTop="30dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/top2"
android:background="@drawable/lingimg"
/>
<EditText
android:id="@+id/etAccount"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:hint="请输入账号"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/img" />
<EditText
android:id="@+id/etPassword"
android:layout_width="360dp"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:hint="请输入密码"
android:inputType="textPassword"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etAccount" />
<RadioGroup
android:id="@+id/radioB"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_marginLeft="30dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/etPassword">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radioStudent"
android:text="学生"
android:textSize="15dp" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radioTeacher"
android:text="教师"
android:textSize="15dp" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/radioParent"
android:text="家长"
android:textSize="15dp" />
</RadioGroup>
<CheckBox
android:id="@+id/checkbox1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="记住我"
android:layout_marginLeft="30dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/radioB" />
<Button
android:id="@+id/login"
android:layout_width="360dp"
android:layout_height="50dp"
android:text="登陆"
android:layout_marginTop="15dp"
android:textSize="15dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/checkbox1" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="版权所有"
android:textColor="#797677"
android:textSize="12dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginBottom="20dp"
/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.java
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.RadioButton;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取登录按钮和账号密码输入框的引用
Button loginButton = findViewById(R.id.login);
final EditText accountEditText = findViewById(R.id.etAccount);
final EditText passwordEditText = findViewById(R.id.etPassword);
// 获取CheckBox的引用
CheckBox checkBox = findViewById(R.id.checkbox1);
RadioButton radioStudent = findViewById(R.id.radioStudent);
RadioButton radioTeacher = findViewById(R.id.radioTeacher);
RadioButton radioParent = findViewById(R.id.radioParent);
// 为登录按钮设置点击事件的监听器
loginButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 获取账号和密码的输入值
String account = accountEditText.getText().toString();
String password = passwordEditText.getText().toString();
// 判断CheckBox是否被选中
boolean isChecked = checkBox.isChecked();
// 输出用户输入的信息到Logcat
//输出密码关了password
Log.i("MyText", "欢迎账号为 " + account + ", 登录成功!");
if(radioStudent.isChecked()) {
Log.i("MyText", "您的身份为: " + radioStudent.getText().toString());
}
if(radioTeacher.isChecked()) {
Log.i("MyText", "您的身份为: " + radioTeacher.getText().toString());
}
if(radioParent.isChecked()) {
Log.i("MyText", "您的身份为: " + radioParent.getText().toString());
}
// 输出文本到Logcat
Log.i("MyText", "是否记住登录账号:" + isChecked);
}
});
}
}