图像合成(4)

由于将每个按钮的OnClickListener设置为this类,因此需要实现一个onClick方法进行响应。为了判断单击了哪一个按钮,可以将传入的View对象与每个Button对象进行比较。如果它们相等,那么这就是单击的按钮。、可以设置一个变量which对应先前定义的常量值,以此来跟踪按下哪个按钮。然后,将这个变量传递给正由ACTION_PICK意图实例化的Gallery应用程序。如同之前的示例所显示的那样,这将以允许用户选择一幅图像的模式启动该应用程序。

public void onClick(View v) {

 int which = -1;

 if (v == choosePicture1){

 which = PICKED_ONE;

          }

          else if (v == choosePicture2){

               which = PICKED_TWO;

          }

 

          Intent choosePictureIntent = new Intent(Intent.ACTION_PICK,

          android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);、startActivityForResult(choosePictureIntent, which);

     }

 在用户选择一幅图像之后,将调用onActivityResult方法。通过startActivityForResult方法传入的变量将在第一个参数(称之为requestCode)中回传给我们。利用它就可以知道用户刚刚选择了哪幅图像:第一幅或第二幅。可以通过这个值来决定使用哪一个位图对象加载所选择的图像。

 protected void onActivityResult(int requestCode, int resultCode,

Intent intent)   { super.onActivityResult(requestCode, resultCode, intent);

 

          if (resultCode == RESULT_OK){

               Uri imageFileUri = intent.getData();

 

               if (requestCode == PICKED_ONE){

                    bmp1 = loadBitmap(imageFileUri);

                    onePicked = true;

               }

               else if (requestCode == PICKED_TWO){

                    bmp2 = loadBitmap(imageFileUri);

                    twoPicked = true;

               }

读书导航