一、点击事件的添加
①首先我们应该用写入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
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private EditText main_et_result;
boolean clear_flag;//清空
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
main_et_result = findViewById(R.id.main_et_result);
}
@Override
public 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: 指定不同状态下控件显示哪个样式
今天其实还听了一个同学的技术分享,感觉太牛了,讲的好详细,我自己也在研究一个技术,但没有什么进展,有点伤心,感觉自己不够用心。。。想到以为教员说的:时间还没到就不能说放弃!!!
现在说放弃太没有出息了,是时候学会成长了。。自己还不太成熟,总爱贪玩。加油!!!希望有大神能指点我!!