1. 创建Activity,并为Activity设置布局,要求实现一个用户登录界面,界面中包含:1. 照片(ImageView),2. 个人学号、姓名的录入(EditText),3. 个人兴趣爱好的选择(CheckBox、RadioButton),4. 两个名为“确认”和“取消”的按钮(Button)。 2. 为按钮添加点击事件的监听器,实现在“确认”按钮被点击时,显示“登入成功”的提示;在“取消”按钮被点击时,退出程序。 3. 设置选项菜单和上下文菜单,并设置菜单点击事件。
时间: 2024-03-17 15:46:31 浏览: 32
好的,我可以为您提供一个实现以上要求的示例代码,具体实现步骤如下:
1. 在项目的app/src/main/res/layout目录下,创建一个名为activity_login.xml的XML布局文件,用于定义用户登录界面的布局。布局文件中包含一个ImageView控件、两个EditText控件、多个CheckBox和RadioButton控件、两个Button控件。
activity_login.xml的示例代码如下:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher_background"
android:layout_marginTop="30dp"
android:layout_centerHorizontal="true" />
<EditText
android:id="@+id/editText_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="学号"
android:layout_marginTop="30dp"
android:layout_below="@+id/imageView" />
<EditText
android:id="@+id/editText_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="姓名"
android:layout_marginTop="10dp"
android:layout_below="@+id/editText_id" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_below="@+id/editText_name">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="兴趣爱好:"
android:textSize="16sp" />
<CheckBox
android:id="@+id/checkBox_music"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="音乐" />
<CheckBox
android:id="@+id/checkBox_sports"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="运动" />
<CheckBox
android:id="@+id/checkBox_reading"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="阅读" />
</LinearLayout>
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="10dp"
android:layout_below="@+id/checkBox_music">
<RadioButton
android:id="@+id/radioButton_male"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="男" />
<RadioButton
android:id="@+id/radioButton_female"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="女" />
</RadioGroup>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="20dp"
android:layout_below="@+id/radioGroup">
<Button
android:id="@+id/button_confirm"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="确认" />
<Button
android:id="@+id/button_cancel"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="取消" />
</LinearLayout>
</RelativeLayout>
```
2. 在LoginActivity的onCreate()方法中,使用setContentView方法将activity_login.xml布局文件应用到Activity中。同时,为“确认”和“取消”按钮添加点击事件的监听器,并实现相应的逻辑。
LoginActivity的示例代码如下:
```java
public class LoginActivity extends AppCompatActivity {
private EditText mEditTextId;
private EditText mEditTextName;
private CheckBox mCheckBoxMusic;
private CheckBox mCheckBoxSports;
private CheckBox mCheckBoxReading;
private RadioGroup mRadioGroup;
private RadioButton mRadioButtonMale;
private RadioButton mRadioButtonFemale;
private Button mButtonConfirm;
private Button mButtonCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
// 获取控件对象
mEditTextId = findViewById(R.id.editText_id);
mEditTextName = findViewById(R.id.editText_name);
mCheckBoxMusic = findViewById(R.id.checkBox_music);
mCheckBoxSports = findViewById(R.id.checkBox_sports);
mCheckBoxReading = findViewById(R.id.checkBox_reading);
mRadioGroup = findViewById(R.id.radioGroup);
mRadioButtonMale = findViewById(R.id.radioButton_male);
mRadioButtonFemale = findViewById(R.id.radioButton_female);
mButtonConfirm = findViewById(R.id.button_confirm);
mButtonCancel = findViewById(R.id.button_cancel);
// 设置按钮监听器
mButtonConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(LoginActivity.this, "登入成功", Toast.LENGTH_SHORT).show();
}
});
mButtonCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
}
```
在上面的代码中,我们通过findViewById()方法获取了布局文件中的各个控件对象,并为“确认”按钮和“取消”按钮分别添加了点击事件的监听器。在“确认”按钮被点击时,我们使用Toast类显示了一个短暂的提示消息“登入成功”;在“取消”按钮被点击时,我们调用了Activity的finish()方法,实现了退出程序的功能。
3. 在LoginActivity中,重写onCreateOptionsMenu()方法和onOptionsItemSelected()方法,实现选项菜单和上下文菜单的创建和点击事件的响应。
LoginActivity的示例代码如下:
```java
public class LoginActivity extends AppCompatActivity {
// ...
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_login_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.menu_item_setting:
Toast.makeText(this, "点击了设置菜单", Toast.LENGTH_SHORT).show();
return true;
case R.id.menu_item_help:
Toast.makeText(this, "点击了帮助菜单", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.activity_login_context_menu, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.context_menu_item_copy:
Toast.makeText(this, "复制", Toast.LENGTH_SHORT).show();
return true;
case R.id.context_menu_item_paste:
Toast.makeText(this, "粘贴", Toast.LENGTH_SHORT).show();
return true;
default:
return super.onContextItemSelected(item);
}
}
}
```
在上面的代码中,我们重写了Activity的onCreateOptionsMenu()方法和onOptionsItemSelected()方法,实现了选项菜单的创建和菜单项的点击事件响应。同时,我们还重写了Activity的onCreateContextMenu()方法和onContextItemSelected()方法,实现了上下文菜单的创建和菜单项的点击事件响应。
以上就是一个实现了用户登录界面、按钮点击事件的监听器、选项菜单和上下文菜单的示例代码。希望能够对您有所帮助。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)