跑马灯效果
⚪页面布局代码如下:
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#55333333"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:singleLine="true"
android:text="欢迎注册卡特曼大学计算机学院智慧校园平台,注册成功后,你可以方便获得校内咨询!"
android:textColor="#FFFF00"
android:textSize="20dp"/>
动态向左移动
计算器的实现
⚪页面布局代码如下:
<?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: