今天课程:
一、点击事件的添加
①首先我们应该用写入EditText可编辑文本框,它有一个属性
android:hint="" 可在文本框里写入字符,当你写入其他的字符时会消失;写一个Button按钮标签,属性
android:onClick="doSubmit"是一个点击事件,如doSubmit在MainActivity.java写入监听方法,事件监听有三种写法:
1.1 标签上直接绑定监听方法
public void xxx(View view) view代表的是按钮里的text
1.2 创建监听器对象,组件再绑定监听器对象
1.2.1 匿名内部类
1.2.2 使用匿名内部类并定义成全局的属性
②不写onClick事件,可以在MainActivity中继承View.OnClickListene ,再在
onCreate方法中设值。
在监听事件中可以用switch ...case来循环判断条件。
最后我们写了一个简单实现计算机的方法
这是我用网格布局写的简单计算机实现,但有点问题,在夜神运算时会停止运行,请看到的大神指教
activity.mian.xml
<GridLayout 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"android:rowCount="5"android:columnCount="4"tools:context=".MainActivity"><EditTextandroid:id="@+id/main_et_result"android:layout_width="100dp"android:layout_height="100dp"android:layout_columnSpan="4"android:hint="计算"/><Buttonandroid:id="@+id/main_btn_btn1"android:layout_width="60dp"android:layout_height="60dp"android:text="1"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn2"android:layout_width="60dp"android:layout_height="60dp"android:text="2"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn3"android:layout_width="60dp"android:layout_height="60dp"android:text="3"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_chu"android:layout_width="60dp"android:layout_height="60dp"android:text="/"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn4"android:layout_width="60dp"android:layout_height="60dp"android:text="4"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn5"android:layout_width="60dp"android:layout_height="60dp"android:text="5"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn6"android:layout_width="60dp"android:layout_height="60dp"android:text="6"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_cheng"android:layout_width="60dp"android:layout_height="60dp"android:text="*"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn7"android:layout_width="60dp"android:layout_height="60dp"android:text="7"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn8"android:layout_width="60dp"android:layout_height="60dp"android:text="8"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn9"android:layout_width="60dp"android:layout_height="60dp"android:text="9"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_jian"android:layout_width="60dp"android:layout_height="60dp"android:text="-"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn0"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_horizontal"android:layout_columnSpan="2"android:text="0"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_dian"android:layout_width="60dp"android:layout_height="60dp"android:text="."android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_jia"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_vertical"android:layout_rowSpan="2"android:text="+"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_ok"android:layout_width="60dp"android:layout_height="60dp"android:layout_gravity="fill_horizontal"android:layout_columnSpan="3"android:text="="android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_clear"android:layout_width="60dp"android:layout_height="60dp"android:layout_columnSpan="1"android:text="c"android:onClick="doSubmit"/><Buttonandroid:id="@+id/main_btn_btn_del"android:layout_width="60dp"android:layout_height="60dp"android:layout_columnSpan="1"android:text="del"android:onClick="doSubmit"/><Space /></GridLayout>
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener{private EditText main_et_result;boolean clear_flag;//清空@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);main_et_result = findViewById(R.id.main_et_result);}@Overridepublic void doSubmit(View view) {int id = view.getId();String input = main_et_result.getText().toString();switch (id){case R.id.main_btn_btn0:main_et_result.setText(main_et_result.getText().toString()+"0");break;case R.id.main_btn_btn1:main_et_result.setText(main_et_result.getText().toString()+"1");break;case R.id.main_btn_btn2:main_et_result.setText(main_et_result.getText().toString()+"2");break;case R.id.main_btn_btn3:main_et_result.setText(main_et_result.getText().toString()+"3");break;case R.id.main_btn_btn4:main_et_result.setText(main_et_result.getText().toString()+"4");break;case R.id.main_btn_btn5:main_et_result.setText(main_et_result.getText().toString()+"5");break;case R.id.main_btn_btn6:main_et_result.setText(main_et_result.getText().toString()+"6");break;case R.id.main_btn_btn7:main_et_result.setText(main_et_result.getText().toString()+"7");break;case R.id.main_btn_btn8:main_et_result.setText(main_et_result.getText().toString()+"8");break;case R.id.main_btn_btn9:main_et_result.setText(main_et_result.getText().toString()+"9");break;case R.id.main_btn_btn_cheng:main_et_result.setText(main_et_result.getText().toString()+"*");break;case R.id.main_btn_btn_chu:main_et_result.setText(main_et_result.getText().toString()+"/");if(clear_flag){clear_flag = false;input = "";main_et_result.setText("");}main_et_result.setText(input+((Button) view).getText().toString());break;case R.id.main_btn_btn_jia:main_et_result.setText(main_et_result.getText().toString()+"+");break;case R.id.main_btn_btn_jian:main_et_result.setText(main_et_result.getText().toString()+"-");break;case R.id.main_btn_btn_dian:main_et_result.setText(main_et_result.getText().toString()+".");if(clear_flag){clear_flag = false;main_et_result.setText("");}main_et_result.setText(input+((Button) view).getText().toString());break;case R.id.main_btn_btn_ok:main_et_result.setText("=");getResult();break;case R.id.main_btn_btn_del:main_et_result.setText("del");if(clear_flag){clear_flag = false;main_et_result.setText("");}else if(input != null || !input.equals("")){main_et_result.setText(input.substring(0,input.length()-1));}break;case R.id.main_btn_btn_clear:main_et_result.setText("c");clear_flag = false;input = "";main_et_result.setText("");break;}}private void getResult() {String exp = main_et_result.getText().toString();if(exp==null||exp.equals(""))return;if(!exp.contains(""))return;if(clear_flag){clear_flag = false;return;}clear_flag = true;double result = 0;//运算符前的数字String s1 = exp.substring(0,exp.indexOf(" "));//运算符String op = exp.substring(exp.indexOf(" ")+1,exp.indexOf(" ")+2);//运算符后的数字String s2 = exp.substring(exp.indexOf(" ")+3);if(!s1.equals("")&&!s2.equals("")){double d1 = Double.parseDouble(s1);double d2 = Double.parseDouble(s2);if(op.equals("+")){result = d1+d2;}else if(op.equals("-")){result = d1-d2;}else if(op.equals("*")){result = d1*d2;}else if(op.equals("/")){if(d2==0){result = 0;}else{result = d1/d2;}}if(!s1.contains(".")&& !s2.contains(".")&&!op.equals("/")){int r =(int) result;main_et_result.setText(r+"");}else{main_et_result.setText(result+"");}}else if(!s1.equals("")&&s2.equals("")){main_et_result.setText(exp);}else if(s1.equals("")&& !s2.equals("")){double d2 = Double.parseDouble(s2);if(op.equals("+")){result = 0+d2;}else if(op.equals("-")){result = 0-d2;}else if(op.equals("*")){result = 0;}else if(op.equals("/")){result = 0;}if(!s1.contains(".")&&!s2.contains(".")){int r = (int)result;main_et_result.setText(r+"");}else{main_et_result.setText(result+"");}}else{main_et_result.setText("");}}
}
二、输入框引入外形资源调节样式
Android资源
1.1 什么是资源
指在res文件夹下的xml文件,每一种类型的xml文件都对应了一种资源。
例如:外形资源(shape)、尺寸资源(dimension)、颜色资源(color)等
1.2 尺寸资源和颜色资源放res/values目录下
1.3 *.xml(文本框的外形资源)可放到drawable目录下
1.4 设置渐变色与背景色只能取其一,后面会覆盖前面的
根据获得/失去焦点边框变色编辑框
2. 选择器
2.1 作用:根据控件状态显示不同样式
2.2 Item: 指定不同状态下控件显示哪个样式
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:drawable="@drawable/main_et_shape" android:state_focused="true"></item><item android:drawable="@drawable/main_et_shape2" android:state_focused="false"></item> </selector>
三、今天的收获
今天其实还听了一个同学的技术分享,感觉太牛了,讲的好详细,我自己也在研究一个技术,但没有什么进展,有点伤心,感觉自己不够用心。。。想到以为教员说的:时间还没到就不能说放弃!!!
现在说放弃太没有出息了,是时候学会成长了。。自己还不太成熟,总爱贪玩。加油!!!希望有大神能指点我!!