一、实现效果图
1、启动页界面
2、 登录页面转主框架界面(自动选择首页界面)
3、点击商品进入商品详情页面(服务部分可以左右滑动,产品部分可以上下滑动)
二、功能说明
运行时首先出现启动页界面(停留两秒后自动跳转到首页界面),点击首页界面中产品中的商品,跳转至商品详情界面;点击商品详情左上角的返回键,可以返回原页面。
故要实现的功能为:
1:activity之间的跳转
2:数据的绑定
三、功能实现
1、上述界面对应的代码文件
涉及到如下xml文件:
以及其对应的
客户信息以及产品信息存储在
intro:启动页界面
login:登录界面
main:列表
home:首页
detail:产品详情
customer:用户资料
product:产品详情
2、启动页
activity_intro.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:gravity="center"
android:orientation="vertical"
tools:context=".Activity.IntroActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="300dp"
app:srcCompat="@drawable/logo" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="欢迎光临"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="26sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/app_name"
android:textAlignment="center"
android:textColor="@color/black"
android:textSize="26sp"
android:textStyle="bold" />
</LinearLayout>
IntroActivity
package com.moonstar.moonstaritservices.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AppCompatActivity;
import com.moonstar.moonstaritservices.R;
/**启动页界面**/
public class IntroActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_intro);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(IntroActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
}, 2000);
}
}
3、登录页
activity_login.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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#F2F2F2">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="centerCrop"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/top_background" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="32dp"
android:text="您好,请登录"
android:textColor="#ffffff"
android:textSize="30sp"
android:textStyle="bold"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="32dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="账号"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="12dp"
android:background="@drawable/edittext_background"
android:ems="10"
android:hint="请输入账号"
android:inputType="textPersonName"
android:padding="12dp"
android:text="zhang3@example.com"
android:textColor="#707070"
android:textSize="18sp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="密码"
android:textColor="#000000"
android:textSize="20sp"
android:textStyle="bold" />
<EditText
android:id="@+id/editTextTextPassword"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="12dp"
android:background="@drawable/edittext_background"
android:ems="10"
android:hint="请输入密码"
android:inputType="textPassword"
android:padding="12dp"
android:text="123456"
android:textColor="#707070"
android:textSize="18sp" />
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/loginButton"
style="@android:style/Widget.Button"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_marginTop="64dp"
android:background="@drawable/button_background"
android:text="登 录"
android:textColor="#ffffff"
android:textSize="25sp"
android:textStyle="bold" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
LoginActivity
package com.moonstar.moonstaritservices.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Patterns;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.moonstar.moonstaritservices.Domain.Customer;
import com.moonstar.moonstaritservices.R;
import com.moonstar.moonstaritservices.Util.App;
import com.moonstar.moonstaritservices.Util.JSONUtils;
import java.util.List;
/**登录界面**/
public class LoginActivity extends AppCompatActivity {
private EditText emailEditText;
private EditText passwordEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
Button loginButton = findViewById(R.id.loginButton);
emailEditText = findViewById(R.id.editTextTextPersonName);
passwordEditText = findViewById(R.id.editTextTextPassword);
loginButton.setOnClickListener(v -> doLogin());
}
private void doLogin() {
String email = emailEditText.getText().toString().trim();
String password = passwordEditText.getText().toString().trim();
if (email.isEmpty()) {
Toast.makeText(this, "请输入邮箱", Toast.LENGTH_SHORT).show();
return;
}
if (!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
Toast.makeText(this, "请输入合法的邮箱", Toast.LENGTH_SHORT).show();
return;
}
if (password.isEmpty()) {
Toast.makeText(this, "请输入密码", Toast.LENGTH_SHORT).show();
return;
}
if (password.length() < 6) {
Toast.makeText(this, "密码至少6位", Toast.LENGTH_SHORT).show();
return;
}
List<Customer> customers = JSONUtils.loadCustomersFromAssets(this);
for (Customer customer : customers) {
if (customer.getEmail().equals(email)) {
if (customer.get