第三周学习总结
程序员文章站
2022-06-23 14:09:18
一、前言本周学习了事件的处理,窗口跳转与传递数据(用户登录功能案例演示),还学习了线性布局的一部分。二、用户登陆程序1. 创建用户登录安卓应用【UserLogin】2. 创建之后复制添加背景图片(放res/drawable目录)3. 创建登录窗口,然后在登录窗口布局资源文件activity_login.xml:
一、前言
本周学习了事件的处理,窗口跳转与传递数据(用户登录功能案例演示),还学习了线性布局的一部分。
二、用户登陆程序
1. 创建用户登录安卓应用【UserLogin】
2. 创建之后复制添加背景图片(放res/drawable目录)
3. 创建登录窗口,然后在登录窗口布局资源文件activity_login.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:background="@drawable/background1"
android:orientation="vertical"
android:gravity="center"
android:padding="15dp"
tools:context=".LoginActivity">
<TextView
android:id="@+id/tvUserLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="30dp"
android:text="@string/user_login"
android:textColor="#0000ff"
android:textSize="25dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/tvUsername"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username"
android:textColor="#000000"
android:textSize="20dp"/>
<EditText
android:id="@+id/edtUsername"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/input_username"
android:singleLine="true"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal">
<TextView
android:id="@+id/tvPassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/password"
android:textColor="#000000"
android:textSize="20dp"/>
<EditText
android:id="@+id/edtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:hint="@string/input_password"
android:inputType="textPassword"
android:singleLine="true"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:text="@string/login"
android:textColor="#000000"
android:background="#04BE02"
android:textSize="20dp"
android:layout_marginRight="15dp"/>
<Button
android:id="@+id/btnCancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="30dp"
android:paddingRight="30dp"
android:text="@string/cancel"
android:textColor="#000000"
android:background="#04BE02"
android:textSize="20dp"/>
</LinearLayout>
</LinearLayout>
4. 布局主窗口资源文件activity_main.xml和删除AndroidManifest.xml中的MainActivity元素的意图过滤器。
5. 完善string.xml文件,并写登录窗口文件LoginActivity:
package net.lbj.userlogin;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
public class LoginActivity extends AppCompatActivity {
private EditText edtUsername;
private EditText edtPassword;
private Button btnLogin;
private Button btnCancel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//利用布局资源文件设置用户界面
setContentView(R.layout.activity_login);
//通过资源标识符获取控件实例
edtUsername = findViewById(R.id.edtUsername);
edtPassword = findViewById(R.id.edtPassword);
btnLogin = findViewById(R.id.btnLogin);
btnCancel = findViewById(R.id.btnCancel);
//给给登录按钮注册监听器,实现监听器接口,编写事件处理方法
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//保存用户输入的数据:用户名与密码
String strUsername = edtUsername.getText().toString().trim();
String strPassword = edtPassword.getText().toString().trim();
//判断用户名与密码是否正确(假定用户名和密码都是“admin”)
if (strUsername.equals("admin") && strPassword.equals("admin")) {
//利用吐司提示用户登录成功
Toast.makeText(LoginActivity.this,"恭喜,用户名与密码正确!", Toast.LENGTH_LONG).show();
//创建显示意图(参数1:包上下文;参数2:目标组件)
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
//通过意图携带数据
intent.putExtra("username", strUsername);
intent.putExtra("password", strPassword);
//按照意图启动目标组件
startActivity(intent);
} else {
//利用吐司提示用户登陆失败
Toast.makeText(LoginActivity.this, "遗憾,用户名和密码错误!", Toast.LENGTH_SHORT).show();
}
}
});
//给取消按钮注册监听器,实现监听器接口,编写时间处理方法
btnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//关闭登录窗口
finish();
}
});
//在活动栏上显示图标
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayShowHomeEnabled(true);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setLogo(R.mipmap.ic_launcher);
}
}
其中包括声明控件变量,利用资源标识符获取控件实例,登录和取消按钮事件处理,显示意图。
6. 运行效果:
三、线性布局
1、案例:DirectUI
package net.lbj.directui;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);
layout.setLayoutParams(new LinearLayout.LayoutParams(800,300));
layout.setBackgroundColor(Color.YELLOW);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setGravity(LinearLayout.TEXT_ALIGNMENT_CENTER);
Button btnOK= new Button(this);
btnOK.setText("确定");
Button btnCancel = new Button(this);
btnCancel.setText("取消");
layout.addView(btnOK);
layout.addView(btnCancel);
setContentView(layout);
//简单的事件处理
btnOK.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(MainActivity.this, "你单击了确定按钮!",Toast.LENGTH_SHORT).show();
}
});
//setContentView(R.layout.activity_main);
}
}
2、案例:LinearLayoutDemo
- 主布局资源文件activity_main.xml,将其中的约束布局改成线性布局并设置方向,并添加两个按钮
- 设置按钮位置和背景图片
- 在按钮下添加线性布局,并在drawable目录里创建自定义边框配置文件customer_border.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
<solid android:color="#ffaaff"/>
<stroke android:width="1dp"
android:color="#555555"/>
<gradient android:startColor="#ffaaaa"
android:centerColor="#ffff00"
android:endColor="#00ffff"/>
</shape>
- 运行结果:
3、案例:NestedLinearLayout - 创建应用后复制图片到res/drawable目录
- 将activity_main.xml文件中的约束布局改成线性布局并设置方向属性,再添加三个线性布局。
- 未完成
四、遇到的问题
1、在写登录界面的时候密码没有加密:
2、登录界面的两个按钮连在一起
解决方法:加密是在文件activity_login.xml密码的布局中添加android:inputType=“textPassword”。按钮的问题也是在activity_login.xml中修改。
本文地址:https://blog.csdn.net/lbj5063/article/details/108857868
上一篇: 强制删除文件或文件夹的方法
下一篇: 让Windows中的文件名支持大小写
推荐阅读
-
Spring学习之依赖注入的方法(三种)
-
HighCharts图表控件在ASP.NET WebForm中的使用总结(全)
-
Sql学习第二天——SQL DML与CTE概述
-
Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示
-
Sql学习第三天——SQL 关于CTE(公用表达式)的递归查询使用
-
Sql学习第三天——SQL 关于with ties介绍
-
Sql学习第一天——SQL 练习题(建表/sql语句)
-
Sql学习第一天——SQL UNION 和 UNION ALL 操作符认识
-
Sql学习第一天——SQL 将变量定义为Table类型(虚拟表)
-
C# networkcomms 3.0实现模拟登陆总结