用Android studio 写一个有登录界面的计算器代码
时间: 2023-11-18 21:06:24 浏览: 37
好的,以下是一个简单的Android Studio项目,其中包含登录界面和计算器功能。请注意,这只是一个基本示例,您可以根据自己的需求进行修改和扩展。
在XML布局文件中创建登录界面login_activity.xml,如下所示:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Enter username and password:"
android:textSize="20sp" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Username" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Password"
android:inputType="textPassword" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Login" />
</LinearLayout>
```
在XML布局文件中创建计算器界面calculator_activity.xml,如下所示:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:text="0"
android:textSize="50sp"
android:textAlignment="center" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
android:columnCount="4"
android:rowCount="5">
<Button
android:id="@+id/button1"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="1"
android:textSize="30sp"
android:layout_column="0"
android:layout_row="1"/>
<Button
android:id="@+id/button2"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="2"
android:textSize="30sp"
android:layout_column="1"
android:layout_row="1"/>
<Button
android:id="@+id/button3"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="3"
android:textSize="30sp"
android:layout_column="2"
android:layout_row="1"/>
<Button
android:id="@+id/button4"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="+"
android:textSize="30sp"
android:layout_column="3"
android:layout_row="1"/>
<Button
android:id="@+id/button5"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="4"
android:textSize="30sp"
android:layout_column="0"
android:layout_row="2"/>
<Button
android:id="@+id/button6"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="5"
android:textSize="30sp"
android:layout_column="1"
android:layout_row="2"/>
<Button
android:id="@+id/button7"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="6"
android:textSize="30sp"
android:layout_column="2"
android:layout_row="2"/>
<Button
android:id="@+id/button8"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="-"
android:textSize="30sp"
android:layout_column="3"
android:layout_row="2"/>
<Button
android:id="@+id/button9"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="7"
android:textSize="30sp"
android:layout_column="0"
android:layout_row="3"/>
<Button
android:id="@+id/button10"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="8"
android:textSize="30sp"
android:layout_column="1"
android:layout_row="3"/>
<Button
android:id="@+id/button11"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="9"
android:textSize="30sp"
android:layout_column="2"
android:layout_row="3"/>
<Button
android:id="@+id/button12"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="*"
android:textSize="30sp"
android:layout_column="3"
android:layout_row="3"/>
<Button
android:id="@+id/button13"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="C"
android:textSize="30sp"
android:layout_column="0"
android:layout_row="4"/>
<Button
android:id="@+id/button14"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="0"
android:textSize="30sp"
android:layout_column="1"
android:layout_row="4"/>
<Button
android:id="@+id/button15"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="="
android:textSize="30sp"
android:layout_column="2"
android:layout_row="4"/>
<Button
android:id="@+id/button16"
android:layout_width="80dp"
android:layout_height="80dp"
android:text="/"
android:textSize="30sp"
android:layout_column="3"
android:layout_row="4"/>
</GridLayout>
</LinearLayout>
```
创建一个名为LoginActivity的Java类来处理登录逻辑,如下所示:
```
public class LoginActivity extends AppCompatActivity {
private EditText etUsername, etPassword;
private Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_activity);
etUsername = findViewById(R.id.editText1);
etPassword = findViewById(R.id.editText2);
btnLogin = findViewById(R.id.button1);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String username = etUsername.getText().toString();
String password = etPassword.getText().toString();
if (username.equals("admin") && password.equals("123456")) {
Intent intent = new Intent(LoginActivity.this, CalculatorActivity.class);
startActivity(intent);
} else {
Toast.makeText(LoginActivity.this, "Invalid username or password", Toast.LENGTH_SHORT).show();
}
}
});
}
}
```
创建一个名为CalculatorActivity的Java类来处理计算器逻辑,如下所示:
```
public class CalculatorActivity extends AppCompatActivity {
private TextView tvResult;
private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn0;
private Button btnPlus, btnMinus, btnMultiply, btnDivide, btnClear, btnEqual;
private double firstNumber = 0;
private double secondNumber = 0;
private char operator = ' ';
private boolean isOperatorClicked = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator_activity);
tvResult = findViewById(R.id.textView2);
btn1 = findViewById(R.id.button1);
btn2 = findViewById(R.id.button2);
btn3 = findViewById(R.id.button3);
btn4 = findViewById(R.id.button4);
btn5 = findViewById(R.id.button5);
btn6 = findViewById(R.id.button6);
btn7 = findViewById(R.id.button7);
btn8 = findViewById(R.id.button8);
btn9 = findViewById(R.id.button9);
btn0 = findViewById(R.id.button14);
btnPlus = findViewById(R.id.button4);
btnMinus = findViewById(R.id.button8);
btnMultiply = findViewById(R.id.button12);
btnDivide = findViewById(R.id.button16);
btnClear = findViewById(R.id.button13);
btnEqual = findViewById(R.id.button15);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("1");
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("2");
}
});
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("3");
}
});
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorClick('+');
}
});
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("4");
}
});
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("5");
}
});
btn7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("6");
}
});
btn8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorClick('-');
}
});
btn9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("7");
}
});
btn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberClick("0");
}
});
btnPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorClick('+');
}
});
btnMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorClick('-');
}
});
btnMultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorClick('*');
}
});
btnDivide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorClick('/');
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resetCalculator();
}
});
btnEqual.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculateResult();
}
});
}
private void handleNumberClick(String number) {
if (isOperatorClicked) {
tvResult.setText(number);
isOperatorClicked = false;
} else {
String currentNumber = tvResult.getText().toString();
if (currentNumber.equals("0")) {
tvResult.setText(number);
} else {
tvResult.setText(currentNumber + number);
}
}
}
private void handleOperatorClick(char op) {
if (operator == ' ') {
firstNumber = Double.parseDouble(tvResult.getText().toString());
operator = op;
isOperatorClicked = true;
} else {
calculateResult();
operator = op;
}
}
private void calculateResult() {
if (operator != ' ') {
secondNumber = Double.parseDouble(tvResult.getText().toString());
switch (operator) {
case '+':
tvResult.setText(String.valueOf(firstNumber + secondNumber));
break;
case '-':
tvResult.setText(String.valueOf(firstNumber - secondNumber));
break;
case '*':
tvResult.setText(String.valueOf(firstNumber * secondNumber));
break;
case '/':
tvResult.setText(String.valueOf(firstNumber / secondNumber));
break;
}
operator = ' ';
isOperatorClicked = true;
}
}
private void resetCalculator() {
firstNumber = 0;
secondNumber = 0;
operator = ' ';
tvResult.setText("0");
}
}
```
最后,在AndroidManifest.xml文件中添加以下代码:
```
<activity android:name=".LoginActivity" />
<activity android:name=".CalculatorActivity" />
```
现在您可以运行此应用程序并测试登录和计算器功能。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.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)