2014-04-04 4 views
1

Мне нужно установить разные getPath() для разных изображений. Ниже приведен пример, описывающий getPath для одного изображения. Я не могу понять, как использовать его для установки 2 изображений.разные getPath для разных изображений

public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     if (cursor != null) { 
      // HERE YOU WILL GET A NULLPOINTER IF CURSOR IS NULL 
      // THIS CAN BE, IF YOU USED OI FILE MANAGER FOR PICKING THE MEDIA 
      int column_index = cursor 
        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      cursor.moveToFirst(); 
      return cursor.getString(column_index); 
     } else 
      return null; 
    } 

Bitmap: -

public void decodeFile(String filePath) { 
     // Decode image size 
     BitmapFactory.Options o = new BitmapFactory.Options(); 
     o.inJustDecodeBounds = true; 
     BitmapFactory.decodeFile(filePath, o); 

     // The new size we want to scale to 
     final int REQUIRED_SIZE = 70; 

     // Find the correct scale value. It should be the power of 2. 
     int width_tmp = o.outWidth, height_tmp = o.outHeight; 
     int scale = 1; 
     while (true) { 
      if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE) 
       break; 
      width_tmp /= 2; 
      height_tmp /= 2; 
      scale *= 2; 
     } 

     // Decode with inSampleSize 
     BitmapFactory.Options o2 = new BitmapFactory.Options(); 
     o2.inSampleSize = scale; 
     bitmap = BitmapFactory.decodeFile(filePath, o2); 
     bitmap2 = BitmapFactory.decodeFile(filePath, o2); 
     imgView.setImageBitmap(bitmap); 

     imgView2.setImageBitmap(bitmap2); 
+0

Ваш вопрос не ясен. – GrIsHu

+0

нам нужно растровое изображение, чтобы отображать изображение на изображении при нажатии кнопки. Я пытаюсь найти его путь по вышеуказанному коду. Он отлично работает для одного изображения, но теперь я хочу отобразить 2 изображения, и я думаю, что для этого потребуется еще один путь. – WannaBeGeek

+0

@ user3467204, проверьте мой ответ ниже, надейтесь, что это вам поможет. – InnocentKiller

ответ

0

Нет на самом деле вы не должны использовать различные GetPath для нескольких изображений, вы можете иметь один метод только для n количества изображений,

Посмотрите на это ниже пример,

// Событие нажатия кнопки i am openong телефонная галерея

but1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       openGallery(SELECT_FILE1); 
      } 
     }); 

     but2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       openGallery(SELECT_FILE2); 
      } 
     }); 

где находится открытая функция галереи.

public void openGallery(int req_code) { 
     Intent i = new Intent(Intent.ACTION_PICK, 
       android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI); 
     startActivityForResult(i, req_code); 
    } 

и внутри onActivity результате я ставлю другой путь, который, из которого я получаю изображения,

public void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (resultCode == RESULT_OK) { 
      Uri selectedImageUri = data.getData(); 

      if (requestCode == SELECT_FILE1) { 
       selectedPath1 = getPath(selectedImageUri); 
       editText1.setText(selectedPath1); 
      } 
      if (requestCode == SELECT_FILE2) { 
       selectedPath2 = getPath(selectedImageUri); 
       editText2.setText(selectedPath2); 
      } 

     } 
    } 

и вот наконец

public String getPath(Uri uri) { 
     String[] projection = { MediaStore.Images.Media.DATA }; 
     @SuppressWarnings("deprecation") 
     Cursor cursor = managedQuery(uri, projection, null, null, null); 
     int column_index = cursor 
       .getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
     cursor.moveToFirst(); 
     return cursor.getString(column_index); 
    } 
Смежные вопросы