第一次接触android,与之前的嵌入式差别还是很大的,还好JAVA是从C/C++衍生出来的,为我省去了很多时间。在进入android开发学习时,有点不知所措,很主要的一点是,当需要什么功能时,不清楚在库里面是否有相应的已经封装好的东西,以及对于整体的陌生,实在令我寸步难行啊。故借以此来记录学习,算是复习,也希望能在他人的学习中,提供自己的一些总结,希望都有所帮助。接下来,就开始我的界面总结吧~
一、关于一些单位:
px:实际屏幕的像素,英文即:pixel
pt:表示一个点,英文即:point
dp:逻辑长度单位,一般1dp = 1px
sp:与dp类似,根据用户的字体大小设置进行缩放
一般来说,尽量使用dp作为空间大小的单位,而使用sp作为文字大小的单位。
二、关于Activity的跳转:
在进行活动跳转时,使用的是Intent这个类,比如有
Intent intent = new Intent();
intent.setClass(本类.this, 要跳转的类.class);
在最后启动跳转startActivity(intent);
这样既可实现跳转。
当然,如果是在跳转中需要传递数据的,一般也是都要传递数据的,可以使用类Bundle来实现数据的传输。该类是“key-value”的形式。
一般的使用方法有:
void putString(String key, String value);
Bundle bundle = new Bundle();
bundle.putString("key1", value1);
bundle.putDouble("key2", value2);
...
intent.putExtras(bundle); //此处将携带数据的bundle放入intent,当在跳转后的新界面需要使用该数据时,取出即可。
startActivity(intent);
三、跳转后的Activity:
在新的Activity中,我们将通过Bundle类来获取之前存入的数据。比如:
Bundle bundle = this.getIntent().getExtras(); //此处即获得了之前的Activity传进来的Bundle数据。
String value1 = bundle.getString("key1");
double value2 = bundle.getDouble("key2");
在此我们可以看到,在跳转前和跳转后,存入数据和取出数据都是呈对应关系的,这里应该很好把握吧~
四、当想要实现跳转后有返回结果的Activity:
意思就是如果你想在当前页面跳入新的页面处理完之后,在返回本页面的时候可以带回数据信息,则可使用下列方法。
这里定义两个页面:Activity1, Activity2;
第一个页面Activity1:
当第一个页面在进入第二个页面时,与之前的方法略不相同,即使用的是:startActivityForResult(intent, requestCode);
同时,需重写protected void onActivityResult(int requestCode, int resultCode, Intent data) {},该方法是实现对处理界面的返回。
第二个页面Activity2:
可以使用该语句来返回: 本类.this.setResult(Activity.RESULT_CANCELED, intent); //该语句的两个参数,第一个参数可以为自己根据需要而定义,也可以用系统已经定义好的常量来使用。第二个参数即为传入的意图,可以根据需要在意图里添加相应的数据,如上述,使用Bundle来添加返回的数据。
同时需要在代码块最后关掉该页面: 本类.this.finish();
接下来讲解一下关于
protected void onActivityResult(int requestCode, int resultCode, Intent data) {};
本类.this.setResult(Activity.RESULT_CANCELED, intent);
1.startActivityForResult(intent, requestCode)的请求码:
该函数用于第一和页面,一般用于界面中按钮的监听里,点击即实现活动的跳转。第一个参数intent自然不用再叙述了,对于第二个参数,是一个请求码,该请求码,可用于标记发出该请求的出处,即比如在一个活动中,有多个按钮同时实现跳转到相同的一个按钮,无论是点击哪个按钮,在跳转页面后,当再返回原页面时,需要判断出是由哪个按钮跳转而来的,此时的这个请求码标记就可以作为判断了,在后面附上简单示例代码,供大家参看。
2.onActivityResult(int requestCode, int resultCode, Intent data) {}的请求码、结果码:
此处可以实现在多请求码时,根据需要,进行判断处理。
接下来的代码,希望能帮助大家理解请求码,结果码的应用。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == CALL_REQUEST) {
if (resultCode == Activity.RESULT_CANCELED) {
Bundle bundle = data.getExtras();
String phoneNumber = bundle.getString("PHONE_NUM");
Toast.makeText(this, "拨打的电话是:"+phoneNumber, 1000).show();
}
} else if (requestCode == ???) {...........
}
}