2016-11-04 2 views
-2

У меня есть набор массива, который я отображаюсь в ImageView в течение определенного интервала time.What я хочу, когда я нажимаю изображение я хочу показать, что изображение в другом activity.How я могу это сделатьКак отправить изображение в другое приложение в Android?

кода: -

int[] imageArray = {R.drawable.amazon, R.drawable.app_me, 
     R.drawable.borabora, R.drawable.dubai}; 
public void showImage(){ 
    m_oHandler = new Handler(); 
    Runnable oRunnable = new Runnable() { 
     int i = 0; 

     @Override 
     public void run() { 
      img.setImageResource(imageArray[i]); 
      i++; 
      if (i > imageArray.length - 1) { 
       i = 0; 
      } 
      img.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // Didn't know where to go 
        Intent intent = new Intent(MainActivity.this, Second.class); 
        intent.putExtra("BitmapImage", imageArray); 
       } 
      }); 
      m_oHandler.postDelayed(this, 6000); 

     } 
    }; 
    m_oHandler.postDelayed(oRunnable, 6000); 
} 
+0

Вы можете передать положение архаиста и сделать старинный аррайалист, чтобы вы могли использовать его глобально. –

+0

Как ....................................... – Raghav

+0

Определить все изображения в res/values ​​/ array.xml и передать только следующую позицию. Массив доступа в следующем действии и выборка изображения :) –

ответ

1

Не передавать объект растрового изображения.
Вместо этого введите идентификатор доступных ресурсов.

Intent intent = new Intent(MainActivity.this, Second.class); 
intent.putExtra("image_res_ids", CollectonUtils.join("/", imageArray); 

И в Second деятельности,

getIntent().getExtra("image_res_ids"); 

получить массив ID изображения ресурса.

0

Ваши изображения являются ресурсами, которые не являются чем-то большим, чем int. Таким образом, вы можете передать их как дополнения в намерении.

+0

Как ................................ .... – Raghav

0

Вы можете отправить массив в качестве статиста, а затем взять его с getIntent().getIntArrayExtra(EXTRA_IMAGE)

Для получения дополнительной информации посмотрите на Intents

1

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

Использование imgsetTag() метода для сохранения текущего Drawable идентификатора и получить его обратно по щелчку зрения использования getTag()

1. набора Drawable идентификатора с помощью SetTag:

.... 
img.setImageResource(imageArray[i]); 
img.setTag(imageArray[i]); 
.... 

2. Получить идентификатор от v внутри метода onClick:

int click_drawable_id=Integer.parseInt(v.getTag().toString()); 
intent.putExtra("clicked_img_draw_id", click_drawable_id); 

Теперь вместо того, чтобы проходить imageArray Array, просто используйте clicked_img_draw_id, чтобы получить идентификатор drawable и передать его setImageResource, чтобы показать щелкнутое изображение в другой операции.

+0

и как получить дополнительные – Raghav

+1

@Raghav: используйте 'int draw_id = getIntent(). GetIntExtra (" clicked_img_draw_id ", -1); 'in onCreate of Second Activity –

0

вы сохраняете идентификатор index/resource с помощью setTag i.e im im.setTag (index) следующим образом. И fowarding его можно удалить идентификатор индекса/ресурса из тега и передать, как намерение дополнительные

@Override 
     public void run() { 
      img.setImageResource(imageArray[i]); 
      img.setTag(i) 
      i++; 
      //your code 
      img.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // Didn't know where to go 
        Intent intent = new Intent(MainActivity.this, Second.class); 
        intent.putExtra("IMAGE_RESOURCE", img.getTag()); 
       } 
      }); 
0

просто пытаются отправить позицию вашего выбранного изображения

Intent i = new Intent(getApplicationContext(), FullImageActivity.class); 
       // passing array index 
       i.putExtra("id", position); 
       startActivity(i); 

получить пристальный

Intent i = getIntent(); 

     // Selected image id 
     int position = i.getExtras().getInt("id"); 
     ImageAdapter imageAdapter = new ImageAdapter(this); 

     ImageView imageView = (ImageView) findViewById(R.id.full_image_view); 
     imageView.setImageResource(imageAdapter.mThumbIds[position]); 

Проверьте это для более http://www.androidhive.info/2012/02/android-gridview-layout-tutorial/

0
If you want to pass single image to next activity, than in your case, only pass image index like 

Intent intent = new Intent(MainActivity.this, Second.class); 
        intent.putExtra("BitmapImage", imageArray[i]); 

and on next activity get it. like 
int image_id= getIntent().getIntExtra("BitmapImage",0); 

this image_id is your selected image resouce id and you can set this as setImageresouce to image view. 
0
previewView = (ImageView) findViewById(R.id.imgPostIssue); 

Первая активность

Intent intent = new Intent(AddNewIssue.this, PostNewIssue.class); 
     intent.putExtra("picture", byteArray); 
     finish(); 
     startActivity(intent); 

Вторая активность

Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
      byte[] byteArray = extras.getByteArray("picture"); 
      if (byteArray != null) { 
       Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length); 
       ImageView image = (ImageView) findViewById(R.id.imgPostIssue); 

       image.setImageBitmap(bmp); 
      } 
     } 

Попробуйте это, это, безусловно, работать .. Надеюсь, что это поможет.

0

Попробуйте использовать setTag(). Проверьте это

BitmapCache.java

public class BitmapCache { 

    private static SparseArray<Bitmap> _bitmapCache = new SparseArray<>(); 

    public static void fillBitmapCache(@NonNull Resources resources) { 
     if (null == _bitmapCache) 
      _bitmapCache = new SparseArray<>(); 

     if (_bitmapCache.indexOfKey(R.drawable.amazon) < 0) 
      _bitmapCache.append(R.drawable.amazon, BitmapFactory.decodeResource(resources, R.drawable.amazon)); 

     if (_bitmapCache.indexOfKey(R.drawable.app_me) < 0) 
      _bitmapCache.put(R.drawable.app_me, BitmapFactory.decodeResource(resources, R.drawable.app_me)); 

     if (_bitmapCache.indexOfKey(R.drawable.borabora) < 0) 
      _bitmapCache.put(R.drawable.borabora, BitmapFactory.decodeResource(resources, R.drawable.borabora)); 

     if (_bitmapCache.indexOfKey(R.drawable.dubai) < 0) 
      _bitmapCache.put(R.drawable.dubai, BitmapFactory.decodeResource(resources, R.drawable.dubai)); 
    } 

    public static Bitmap getAt(int position) { 
     return get(keyAt(position)); 
    } 

    public static int keyAt(int position) { 
     return _bitmapCache.keyAt(position); 
    } 

    public static Bitmap get(@DrawableRes int resId) { 
     return _bitmapCache.get(resId); 
    } 

    public static boolean has(@DrawableRes int resId) { 
     return _bitmapCache.indexOfKey(resId) < 0; 
    } 

    public static void append(@DrawableRes int resId, @NonNull Resources resources) { 
     _bitmapCache.append(resId, BitmapFactory.decodeResource(resources, resId)); 
    } 

    public static void put(@DrawableRes int resId, @NonNull Resources resources) { 
     _bitmapCache.put(resId, BitmapFactory.decodeResource(resources, resId)); 
    } 

    public static int size() { 
     return _bitmapCache.size(); 
    } 
} 

активность Первый

private void showImage() { 
     BitmapCache.fillBitmapCache(getResources()); 

     m_oHandler = new Handler(); 
     Runnable oRunnable = new Runnable() { 
      int i = 0; 

      @Override 
      public void run() { 
       img.setImageBitmap(BitmapCache.getAt(i)); 
       img.setTag(BitmapCache.keyAt(i)); 
       i++; 
       if (i >= BitmapCache.size()) { 
        i = 0; 
       } 
       img.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         if (null != v.getTag()) { 
          int resId = (int) v.getTag(); 
          Intent intent = new Intent(MainActivity.this, Second.class); 
          intent.putExtra("BitmapImage", resId); 
         } 
        } 
       }); 
       m_oHandler.postDelayed(this, 6000); 

      } 
     }; 
     m_oHandler.postDelayed(oRunnable, 6000); 
    } 

Вторая активность

private void displayImageOnSecond() { 
     Bundle bundle = getIntent().getExtras(); 
     int resId = bundle.getInt("BitmapImage", 0); 

     if (resId > 0) { 
      secondImage.setImageBitmap(BitmapCache.get(resId)); 
     } 
    } 

Также рекомендую использовать ViewPager и настроить его для автоматического поворота, а не один из которых вы используете в настоящее время. Runnable может привести к утечке памяти, если Activity был уничтожен.

Смежные вопросы