天天看点

Android入门之界面设计

第一次接触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”的形式。

一般的使用方法有: Object get(String key);

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();

接下来讲解一下关于 startActivityForResult(intent, requestCode);

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 == ???) {

...........

}

    }