android studio界面TableLayout布局实现计算器
界面布局是用户界面结构的描述,定义界面中所有的元素、结构和相互关系,通过本次实验了解在 Android 界面开发过程中常见的界面布局的使用方法。通过TableLayout布局实现计算器界面布局,并实现计算功能。...
·
s界面布局是用户界面结构的描述,定义界面中所有的元素、结构和相互关系,通过本次实验了解在 Android 界面开发过程中常见的界面布局的使用方法。
通过TableLayout布局实现计算器界面布局,并实现计算功能。
activity_main.xml
<?xml version="1.0"?>
<TableLayout android:stretchColumns="*"
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<TableRow android:layout_marginTop="200dp" style="@style/rowStyle" android:id="@+id/tr_one">
<TextView android:layout_height="match_parent"
android:id="@+id/calc_out"
android:layout_span="4"
android:text="0"
android:textSize="40dp"
android:gravity="right">
</TextView>
</TableRow>
<TableRow style="@style/rowStyle" android:id="@+id/ss">
<Button style="@style/btnStyle" android:text="C" android:id="@+id/Clear"/>
<Button style="@style/btnStyle" android:text="←" android:id="@+id/Goback"/>
<Button style="@style/btnStyle" android:text="+" android:id="@+id/Plus"/>
<Button style="@style/btnStyle" android:text="-" android:id="@+id/Reduce"/>
</TableRow>
<TableRow style="@style/rowStyle" android:id="@+id/tr_two">
<Button style="@style/btnStyle" android:text="7" android:id="@+id/n7"/>
<Button style="@style/btnStyle" android:text="8" android:id="@+id/n8"/>
<Button style="@style/btnStyle" android:text="9" android:id="@+id/n9"/>
<Button style="@style/btnStyle" android:text="x" android:id="@+id/Ride"/>
</TableRow>
<TableRow style="@style/rowStyle" android:id="@+id/tr_three">
<Button style="@style/btnStyle" android:text="6" android:id="@+id/n6"/>
<Button style="@style/btnStyle" android:text="5" android:id="@+id/n5"/>
<Button style="@style/btnStyle" android:text="4" android:id="@+id/n4"/>
<Button style="@style/btnStyle" android:text="/" android:id="@+id/Divide"/>
</TableRow>
<TableRow style="@style/rowStyle" android:id="@+id/tr_four">
<Button style="@style/btnStyle" android:text="1" android:id="@+id/n1"/>
<Button style="@style/btnStyle" android:text="2" android:id="@+id/n2"/>
<Button style="@style/btnStyle" android:text="3" android:id="@+id/n3"/>
<Button style="@style/btnStyle" android:text="." android:id="@+id/Dot"/>
</TableRow>
<TableRow style="@style/rowStyle" android:id="@+id/tr_five">
<Button style="@style/btnStyle" android:text="0" android:layout_span="2" android:id="@+id/n0"/>
<Button style="@style/btnStyle" android:text="=" android:layout_span="2" android:id="@+id/Equal"/>
</TableRow>
</TableLayout>
styles.xml
<?xml version="1.0"?>
<resources>
<!-- Base application theme. -->
-<style parent="Theme.AppCompat.Light.DarkActionBar" name="AppTheme">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
-<style name="rowStyle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_weight">1</item>
</style>
-<style name="btnStyle">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">match_parent</item>
<item name="android:textSize">20sp</item>
</style>
</resources>
colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
</resources>
night\themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.CALCActivity" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_200</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/black</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_200</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
strings.xml
<resources>
<string name="app_name">CALCActivity</string>
</resources>
values\themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<!-- Base application theme. -->
<style name="Theme.CALCActivity" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/purple_500</item>
<item name="colorPrimaryVariant">@color/purple_700</item>
<item name="colorOnPrimary">@color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/teal_200</item>
<item name="colorSecondaryVariant">@color/teal_700</item>
<item name="colorOnSecondary">@color/black</item>
<!-- Status bar color. -->
<item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
</style>
</resources>
MainActivity.xml
package com.example.calcactivity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
Double results=0.0;
String s="";
String experssion="+*/-.";
String experssion2="[+*/-]";
//String[] strarray=s.split("[+*/-]");
// Double d=Double.parseDouble(s);
// String s2=d+"";
// float[] nums={};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button num0=(Button) findViewById(R.id.n0);
Button num1=(Button) findViewById(R.id.n1);
Button num2=(Button) findViewById(R.id.n2);
Button num3=(Button) findViewById(R.id.n3);
Button num4=(Button) findViewById(R.id.n4);
Button num5=(Button) findViewById(R.id.n5);
Button num6=(Button) findViewById(R.id.n6);
Button num7=(Button) findViewById(R.id.n7);
Button num8=(Button) findViewById(R.id.n8);
Button num9=(Button) findViewById(R.id.n9);
Button clear=(Button) findViewById(R.id.Clear);//清空
Button goback=(Button) findViewById(R.id.Goback);//返回
Button plus=(Button) findViewById(R.id.Plus);//加
Button reduce=(Button) findViewById(R.id.Reduce);//减
Button ride=(Button) findViewById(R.id.Ride);//乘
Button divide=(Button) findViewById(R.id.Divide);//除
Button dot=(Button) findViewById(R.id.Dot);//点
Button equal=(Button) findViewById(R.id.Equal);//等于
TextView te=(TextView) findViewById(R.id.calc_out);//显示
// te.setText(s);
//定义1-9按钮的事件
num0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(s.length()>0) {
if (!experssion.contains(s.substring(s.length() - 1))) {
s += "0";
te.setText(s);
}
}
}
});
num1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "1";
te.setText(s);
}
});
num2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "2";
te.setText(s);
}
});
num3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "3";
te.setText(s);
}
});
num4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "4";
te.setText(s);
}
});
num5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "5";
te.setText(s);
}
});
num6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "6";
te.setText(s);
}
});
num7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "7";
te.setText(s);
}
});
num8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "8";
te.setText(s);
}
});
num9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s += "9";
te.setText(s);
}
});
//定义符号类按钮的事件
//清空
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
s = "";
te.setText(s);
}
});
goback.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (s.length()>0) {
s = s.substring(0, s.length() - 1);
}
te.setText(s);
}
});
plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!experssion.contains(s.substring(s.length()-1))) {
s += "+";
}else{
s=s.substring(0,s.length()-1)+"+";
}
te.setText(s);
}
});
reduce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!experssion.contains(s.substring(s.length()-1))) {
s += "-";
}else{
s=s.substring(0,s.length()-1)+"-";
}
te.setText(s);
}
});
ride.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!experssion.contains(s.substring(s.length()-1))) {
s += "*";
}else{
s=s.substring(0,s.length()-1)+"*";
}
te.setText(s);
}
});
divide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!experssion.contains(s.substring(s.length()-1))) {
s += "/";
}else{
s=s.substring(0,s.length()-1)+"/";
}
te.setText(s);
}
});
dot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!experssion.contains(s.substring(s.length()-1))) {
s += ".";
}else{
s=s.substring(0,s.length()-1)+".";
}
te.setText(s);
}
});
equal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(experssion.contains(s.substring(s.length()-1))) {
s = s.substring(0, s.length() - 1);
}
String[] sarray=s.split(experssion2);
String p="hello";
String[] experssionarray=new String[sarray.length-1];
int j=0;
for(int i=0;i<=s.length()-2;i++){
if(experssion2.contains(s.substring(i,i+1))) {
experssionarray[j]=s.substring(i,i+1);
j+=1;
}
}
for(int i=0;i<=sarray.length-1;i+=1){
if(i<1){
results=Double.parseDouble(sarray[0]);
}
else{
switch(experssionarray[i-1]){
case "+":
results+=Double.parseDouble(sarray[i]);
break;
case "-":
results-=Double.parseDouble(sarray[i]);
break;
case "*":
results*=Double.parseDouble(sarray[i]);
break;
case "/":
results/=Double.parseDouble(sarray[i]);
break;
}
}
}
String k=Double.toString(results);
String end=s+"="+k;
te.setText(end);
s=k;
}
});
}
}
更多推荐
已为社区贡献7条内容
所有评论(0)