计算器的实现
⚪页面布局代码如下:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="#ffc0cb"
tools:ignore="MissingConstraints">
<!--第一行-->
<TextView
android:id="@+id/txtresult"
android:background="#79BFB9"
android:layout_margin="4dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|right"
android:hint="显示结果"
android:textSize="32sp"
android:lines="5" />
<!--第二行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_clear"
android:onClick="calClick"
android:layout_width="0dp"
android:layout_height="80sp"
android:layout_weight="1"
android:textColor="#CF7E07"
android:textSize="25sp"
android:text="C"/>
<Button
android:id="@+id/btn_del"
android:onClick="calClick"
android:layout_width="0dp"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#B68B4C"
android:layout_weight="2"
android:text="DEL"/>
<Button
android:id="@+id/btn_div"
android:onClick="calClick"
android:layout_width="0dp"
android:layout_height="80sp"
android:textSize="25sp"
android:layout_weight="1"
android:textColor="#B9C91D"
android:text="÷"/>
</LinearLayout>
<!--第三行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="1"/>
<Button
android:id="@+id/btn_2"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="2"/>
<Button
android:id="@+id/btn_3"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="3"/>
<Button
android:id="@+id/btn_add"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:layout_weight="1"
android:textColor="#B9C91D"
android:text="+"/>
</LinearLayout>
<!--第四行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_4"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="4"/>
<Button
android:id="@+id/btn_5"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="5"/>
<Button
android:id="@+id/btn_6"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="6"/>
<Button
android:id="@+id/btn_dec"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#B9C91D"
android:layout_weight="1"
android:text="-"/>
</LinearLayout>
<!--第五行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_7"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="7"/>
<Button
android:id="@+id/btn_8"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="8"/>
<Button
android:id="@+id/btn_9"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="9"/>
<Button
android:id="@+id/btn_mul"
android:onClick="calClick"
android:layout_width="match_parent"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#B9C91D"
android:layout_weight="1"
android:text="×"/>
</LinearLayout>
<!--第六行-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_0"
android:onClick="calClick"
android:layout_width="0dp"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#0ECD16"
android:layout_weight="1"
android:text="0"/>
<Button
android:id="@+id/btn_dot"
android:onClick="calClick"
android:layout_width="0dp"
android:layout_height="80sp"
android:textSize="25sp"
android:textColor="#B9C91D"
android:layout_weight="1"
android:text="."/>
<Button
android:id="@+id/btn_equ"
android:onClick="calClick"
android:layout_width="0dp"
android:layout_height="80sp"
android:textSize="25sp"
android:layout_weight="2"
android:textColor="#B9C91D"
android:text="="/>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
⚪Java代码如下:
package com.example.helloandroid;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.style.TtsSpan;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private Button btnAdd, btnDec, btnMul, btnDiv, btnEqu, btnClear, btnDel;//用于存放其他功能按钮
private TextView txtResult;
private StringBuffer digitA = new StringBuffer(), digitB = new StringBuffer();
private boolean isChar = false;//标记是否按下运算符
private int operator = 0;//默认运算符为+
private boolean isDigitA = true;//标记第1个操作数,用于退格删除txtResult中内容
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator = 0; //运算符+
isChar = true;
isDigitA = false;
}
});
btnDec.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator = 1;//运算符-
isChar = true;
isDigitA = false;
}
});
btnMul.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator = 2;//运算符×
isChar = true;
isDigitA = false;
}
});
btnDiv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
operator = 3;//运算符÷
isChar = true;
isDigitA = false;
}
});
btnEqu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
float da = Float.parseFloat(digitA.toString());
float db = Float.parseFloat(digitB.toString());
switch (operator) {
case 0:
txtResult.setText(da + db + "");
break;
case 1:
txtResult.setText(da - db + "");
break;
case 2:
txtResult.setText(da * db + "");
break;
case 3:
txtResult.setText(da / db + "");
break;
}
isChar = true;
isDigitA = true;
}
});
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
digitA = new StringBuffer();
digitB = new StringBuffer();
isChar = false;
txtResult.setText("");
}
});
btnDel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String temp = txtResult.getText().toString();
if (isDigitA) {
digitA = new StringBuffer();
if (temp.length() > 0)
if (temp.length() == 1) {
temp = "0";
} else {
temp = temp.substring(0, temp.length() - 1);
}
txtResult.setText(temp);
digitA.append(txtResult.getText().toString());
} else {
digitB = new StringBuffer();
if (temp.length() > 0)
if (temp.length() == 1) {
temp = "0";
} else {
temp = temp.substring(0, temp.length() - 1);
}
txtResult.setText(temp);
digitB.append(txtResult.getText().toString());
}
}
});
}
void init() {
btnAdd = (Button) this.findViewById(R.id.btn_add);
btnDec = (Button) this.findViewById(R.id.btn_dec);
btnMul = (Button) this.findViewById(R.id.btn_mul);
btnDiv = (Button) this.findViewById(R.id.btn_div);
btnEqu = (Button) this.findViewById(R.id.btn_equ);
btnClear = (Button) this.findViewById(R.id.btn_clear);
btnDel = (Button) this.findViewById(R.id.btn_del);
txtResult = (TextView) this.findViewById(R.id.txtresult);
}
public void calClick(View view) {
switch (view.getId()) {
case R.id.btn_0:
if (isChar) {//如果已经按过运算符,将显示结果区域清空,并将0
txtResult.setText("");
digitB.append("0");
txtResult.setText(digitB.toString());
} else {
digitA.append("0");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_1:
if (isChar) {
txtResult.setText("");
digitB.append("1");
txtResult.setText(digitB.toString());
} else {
digitA.append("1");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_2:
if (isChar) {
txtResult.setText("");
digitB.append("2");
txtResult.setText(digitB.toString());
} else {
digitA.append("2");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_3:
if (isChar) {
txtResult.setText("");
digitB.append("3");
txtResult.setText(digitB.toString());
} else {
digitA.append("3");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_4:
if (isChar) {
txtResult.setText("");
digitB.append("4");
txtResult.setText(digitB.toString());
} else {
digitA.append("4");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_5:
if (isChar) {
txtResult.setText("");
digitB.append("5");
txtResult.setText(digitB.toString());
} else {
digitA.append("5");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_6:
if (isChar) {
txtResult.setText("");
digitB.append("6");
txtResult.setText(digitB.toString());
} else {
digitA.append("6");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_7:
if (isChar) {
txtResult.setText("");
digitB.append("7");
txtResult.setText(digitB.toString());
} else {
digitA.append("7");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_8:
if (isChar) {
txtResult.setText("");
digitB.append("8");
txtResult.setText(digitB.toString());
} else {
digitA.append("8");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_9:
if (isChar) {
txtResult.setText("");
digitB.append("9");
txtResult.setText(digitB.toString());
} else {
digitA.append("9");
txtResult.setText(digitA.toString());
}
break;
case R.id.btn_dot:
if (isChar) {
txtResult.setText("");
digitB.append(".");
txtResult.setText(digitB.toString());
} else {
digitA.append(".");
txtResult.setText(digitA.toString());
}
break;
}
}
}
高仿QQ登录界面的实现
⚪页面布局代码如下:
<?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"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#1F83D2">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:id="@+id/rlayouttop">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:src="@mipmap/skin_about_brand"/>
</RelativeLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/rlayoutmiddle"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="25dp"
android:layout_below="@+id/rlayouttop"
android:background="#fff">
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/edtUserName"
android:layout_marginLeft="10dp"
android:drawableLeft="@mipmap/login_icon_account"
android:drawablePadding="5dp"
android:background="@null"
android:hint="请输入QQ号码"/>
<ImageView
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:scaleType="center"
android:src="@mipmap/row_down"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/llmiddle"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_below="@+id/rlayoutmiddle"
android:layout_marginTop="1dp"
android:background="#ffff">
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/edtPWD"
android:layout_marginLeft="10dp"
android:drawableLeft="@mipmap/login_icon_password"
android:drawablePadding="5dp"
android:background="@null"
android:hint="请输入QQ密码"
android:inputType="numberPassword"/>
</LinearLayout>
<Button
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/btnLogin"
android:layout_below="@+id/llmiddle"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="20dp"
android:background="#8AD2F4"
android:text="登录"
android:textColor="#050505"
android:textSize="24sp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal"
android:paddingTop="10dp"
android:layout_marginTop="390dp">
<CheckBox
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnLogin"
android:text="记住密码"
android:paddingLeft="10dp"
android:textSize="20sp"
android:textColor="#ffff"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/btnLogin"
android:text="忘记密码"
android:layout_alignRight="@+id/dtnLogin"
android:textSize="20sp"
android:layout_marginLeft="200dp"
android:textColor="#ffff"
tools:ignore="UnknownId" />
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:paddingBottom="10dp"
android:text="还没有账号?立即注册>>"
android:textColor="#ffff"/>
</RelativeLayout>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
⚪Java代码如下:
package com.example.qq;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText edtUserName,edtPWD;
private Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtUserName = (EditText) this.findViewById(R.id.edtUserName);20
edtPWD = (EditText) this.findViewById(R.id.edtPWD);
btnLogin = (Button) this.findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sUserName=edtUserName.getText().toString();
String sPWD=edtPWD.getText().toString();
if(sUserName.equals("2021")&&sPWD.equals("2021")){
Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_LONG).show();
}else {
Toast.makeText(MainActivity.this,"QQ号或密码错误,请重新输入!",Toast.LENGTH_LONG).show();
}
}
});
}
}