📜  使用示例构建模块化 Android 应用架构

📅  最后修改于: 2022-05-13 01:55:36.183000             🧑  作者: Mango

使用示例构建模块化 Android 应用架构

模块是独立创建和维护的一段代码,可以在不同的系统中使用。在 Android 应用程序中,模块可以是像搜索这样的简单功能,也可以按需购买。例如。在 PUBG 等游戏应用中,枪支皮肤和字符皮肤也是一个模块。有几个模块,它们是,

  1. 应用模块
  2. 核心模块
  3. 抽象模块
  4. 功能模块
  5. 动态支持模块
  6. 即时应用模块

例子

在这个例子中,我们将创建一个应用程序 GFG 模块化架构,它有一个登录模块,我们可以从我们的应用程序访问它。

分步实施

步骤 1:创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Java作为编程语言。

第 2 步:创建登录模块

要创建新模块,请转到应用 > 右键单击 > 新建 > 模块。之后,选择模块类型作为Android 库,并为此模块命名为登录名。之后,您会发现在应用程序的根路径中单独创建了一个新的登录模块。您还可以通过转到Root-Path > Gradle Script > settings.gradle来验证它。在 settings.gradle 中,您会发现登录模块包含在我们的 GFG 模块化架构应用程序中。

include ':login'
include ':app'
rootProject.name = "GFG Modular Architecture"

在进一步移动之前,让我们添加一些颜色属性以增强应用程序视图。转到模块登录 > res > values > 右键单击 > New > Value Resource并创建一个新的 value 资源文件并将其命名为 colors.xml 并添加以下颜色属性。

XML

    #0F9D58
    #16E37F
    #03DAC5


XML


  
    
  
    
  
    


Java
import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
public class LoginActivity extends AppCompatActivity {
  
    private EditText userName;
    private EditText passWord;
    private Button loginBtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
  
        // initializing EditText and Button
        userName = findViewById(R.id.username);
        passWord = findViewById(R.id.password);
        loginBtn = findViewById(R.id.loginBtn);
  
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // for testing purpose we are using username as gfg 
                // and password as geeksforgeeks.
                // On successful login it will display a toast message
                if(userName.getText().toString().equals("gfg")
                        && passWord.getText().toString().equals("geeksforgeeks")){
                    Toast.makeText(LoginActivity.this, "Modular Architecture Works Fine", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}


XML


  
    


Java
package com.paulsofts.gfgmodulararchitecture;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
  
import com.paulsofts.login.LoginActivity;
  
public class MainActivity extends AppCompatActivity {
  
    private TextView modularText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // initializing the button
        modularText = findViewById(R.id.modularTextView);
  
        // adding listener to the button
        modularText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, LoginActivity.class));
            }
        });
    }
}


第三步:添加依赖

我们需要将登录模块的依赖项添加到我们的 GFG 模块化架构应用程序中。转到Gradle Scripts > build.gradle(Module: app)并添加以下依赖项。添加依赖项后,您需要单击Sync Now

dependencies {
    implementation project (':login')
}

第 4 步:在登录模块中创建一个新活动

在这一步中,我们将在登录模块中创建一个新活动,为此,我们将转到我们的模块,登录 > Java > 包 > 右键单击 > 新建 > 活动 > 空活动并创建一个新活动并将其命名为 LoginActivity .

第 5 步:为登录模块创建布局

在这一步中,我们将为我们的登录模块创建一个布局。它有两个用于用户名和密码的 EditText 以及一个登录按钮。转到login> res > layout > activity_login.xml并添加以下代码片段。

XML



  
    
  
    
  
    

第 6 步:使用 LoginActivity。Java

在这一步中,我们将初始化我们的 EditText 和 Button。输入正确的用户名和密码后,将显示一条 Toast 消息,上面写着“Modular Architecture Works Fine”。

Java

import androidx.appcompat.app.AppCompatActivity;
  
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
  
public class LoginActivity extends AppCompatActivity {
  
    private EditText userName;
    private EditText passWord;
    private Button loginBtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
  
        // initializing EditText and Button
        userName = findViewById(R.id.username);
        passWord = findViewById(R.id.password);
        loginBtn = findViewById(R.id.loginBtn);
  
        loginBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // for testing purpose we are using username as gfg 
                // and password as geeksforgeeks.
                // On successful login it will display a toast message
                if(userName.getText().toString().equals("gfg")
                        && passWord.getText().toString().equals("geeksforgeeks")){
                    Toast.makeText(LoginActivity.this, "Modular Architecture Works Fine", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }
}

第 7 步:使用 activity_main.xml 文件

这是我们的主要应用程序(GFG 模块化架构)布局文件。在这里,我们只是添加一个按钮。

XML



  
    

第 8 步:使用 MainActivity。Java

在这一步中,我们将初始化主应用程序的按钮。单击它会将我们重定向到登录模块。首先,我们初始化按钮,然后给它添加一个监听器。

Java

package com.paulsofts.gfgmodulararchitecture;
  
import androidx.appcompat.app.AppCompatActivity;
  
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
  
import com.paulsofts.login.LoginActivity;
  
public class MainActivity extends AppCompatActivity {
  
    private TextView modularText;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
  
        // initializing the button
        modularText = findViewById(R.id.modularTextView);
  
        // adding listener to the button
        modularText.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, LoginActivity.class));
            }
        });
    }
}

输出: