赞
踩
熟悉Android稍微复杂的逻辑编程,应用网格布局设计一个简单Android计算器界面并能实现加减和清零等功能。
1.PC机
3.Android Studio
TableLayout是一种可以制作表格的布局,它和GridLayout的区别是GridLayout只能制定每一列宽度一样的表格布局,而TableLayout能够制定各列宽度不一样的表格布局。
3.1 TableLayout的主要属性
android:collapseColumns=”0,1” 隐藏第0列和第1列
android:stretchColumns=”0,1” 第0列和第1列可以向行方向扩展
android:stretchColumns=”*” 所有列可以向行方向扩展
android:shrinkColumns=”0,1” 第0列和第1列可以向列方向扩展
3.2 TableRow子控件的主要属性:
android:layout_column=”1” 该控件显示在第1列
android:layout_span=”2” 该控件占据2列
注意:TableLayout里面的子控件可以为TableRow或者其他View,但是其子控件的android:layout_width属性被系统固定为match_parent,TableLayout里面所有行中某一列的宽度的最大值是这一列的宽度。
在Android Studio新建一个工程,在Palette中选择TableLayout、TableRow、textView和button添加到Component Tree中,并修改主从关系及其id、text和textSIZE。如下图所示:
编写程序,核心代码如下(部分功能省略):
- import androidx.appcompat.app.AppCompatActivity;
-
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.TextView;
-
- public class MainActivity extends AppCompatActivity {
- private TextView txtView;
- private Button btn_n0;
- private Button btn_n1;
- private Button btn_n2;
- private Button btn_n3;
- private Button btn_n4;
- private Button btn_n5;
- private Button btn_n6;
- private Button btn_n7;
- private Button btn_n8;
- private Button btn_n9;
- private Button btn_add;
- private Button btn_sub;
- private Button btn_div;
- private Button btn_mix;
- private Button btn_res;
- private Button btn_c;
- private Button btn_del;
- private Button btn_p;
- private Button btn_pct;
- private Button btn_dot;
-
- int opflag;
- double kk,kk_add,kk_sub;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- txtView=findViewById(R.id.textView);
- btn_n0=findViewById(R.id.button_n0);
- btn_n1=findViewById(R.id.button_n1);
- btn_n2=findViewById(R.id.button_n2);
- btn_n3=findViewById(R.id.button_n3);
- btn_n4=findViewById(R.id.button_n4);
- btn_n5=findViewById(R.id.button_n5);
- btn_n6=findViewById(R.id.button_n6);
- btn_n7=findViewById(R.id.button_n7);
- btn_n8=findViewById(R.id.button_n8);
- btn_n9=findViewById(R.id.button_n9);
- btn_add=findViewById(R.id.button_add);
- btn_sub=findViewById(R.id.button_sub);
- btn_div=findViewById(R.id.button_div);
- btn_mix=findViewById(R.id.button_mix);
- btn_res=findViewById(R.id.button_res);
- btn_c=findViewById(R.id.button_c);
- btn_del=findViewById(R.id.button_del);
- btn_p=findViewById(R.id.button_p);
- btn_pct=findViewById(R.id.button_pct);
- btn_dot=findViewById(R.id.button_dot);
-
- btn_n0.setOnClickListener(clickListener);
- btn_n1.setOnClickListener(clickListener);
- btn_n2.setOnClickListener(clickListener);
- btn_n3.setOnClickListener(clickListener);
- btn_n4.setOnClickListener(clickListener);
- btn_n5.setOnClickListener(clickListener);
- btn_n6.setOnClickListener(clickListener);
- btn_n7.setOnClickListener(clickListener);
- btn_n8.setOnClickListener(clickListener);
- btn_n9.setOnClickListener(clickListener);
- btn_add.setOnClickListener(clickListener);
- btn_sub.setOnClickListener(clickListener);
- btn_div.setOnClickListener(clickListener);
- btn_mix.setOnClickListener(clickListener);
- btn_res.setOnClickListener(clickListener);
- btn_dot.setOnClickListener(clickListener);
- btn_pct.setOnClickListener(clickListener);
- btn_p.setOnClickListener(clickListener);
- btn_c.setOnClickListener(clickListener);
- btn_del.setOnClickListener(clickListener);
-
- kk=0;
- opflag=0;
- }
- public View.OnClickListener clickListener = new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.button_n0:
- kk=kk*10+0;
- break;
- case R.id.button_n1:
- kk=kk*10+1;
- break;
- case R.id.button_n2:
- kk=kk*10+2;
- break;
- case R.id.button_n3:
- kk=kk*10+3;
- break;
- case R.id.button_n4:
- kk=kk*10+4;
- break;
- case R.id.button_n5:
- kk=kk*10+5;
- break;
- case R.id.button_n6:
- kk=kk*10+6;
- break;
- case R.id.button_n7:
- kk=kk*10+7;
- break;
- case R.id.button_n8:
- kk=kk*10+8;
- break;
- case R.id.button_n9:
- kk=kk*10+9;
- break;
- case R.id.button_c:
- kk=0;
- break;
- case R.id.button_add:
- kk_add=kk;
- kk_sub=0;
- kk=0;
- opflag=1;
- break;
- case R.id.button_sub:
- kk_add=0;
- kk_sub=kk;
- kk=0;
- opflag=-1;
- break;
- case R.id.button_res:
- kk=(kk+kk_add-kk_sub)*opflag;
- break;
- default:
- break;
- }
- txtView.setText(String.valueOf(kk));
- }
- };
- }
下图为Android计算器设计图及APP模拟编译图,可实现基本功能:
体会:此次实验我熟悉了Android稍微复杂的逻辑编程,一步步做实验的过程也感受到了理论课上无法感受到的东西。开发过程中遇到的不会的问题在网上也有对应的解决办法,最终将计算器设计出来及成功运行也感受到了Android开发的强大魅力。
(如有侵权,请联系删除!文章中若有错误欢迎在评论区指出!)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。