Android: увеличение изображения по клику - PullRequest
0 голосов
/ 01 ноября 2011

Я делаю приложение для Android, в котором мне нужно увеличить размер изображения при нажатии. Я получаю эти изображения, загруженные с сервера, а затем добавляю эти изображения программно в упражнение и, следовательно, устанавливаю id изображений программно. Теперь моя проблема в том, что когда я отправляю imageid или другое действие, чтобы увеличить его, он принимает только идентификатор последнего изображения.

и, следовательно, дает следующее исключение.

Unable to start activity ComponentInfo{com.emx.OnDaMove/com.emx.OnDaMove.FullImageActivity}: android.content.res.Resources$NotFoundException: Resource ID #0x5

Я использую следующий код для создания изображений и добавления их в строки таблицы.

             imageUrl = "http://ondamove.it/English/images/users/";
            imageUrl = imageUrl + listObject.get(j).getImage();

            image = new ImageView(this);
            image.setPadding(20, 10, 0, 0);
            image.setId(j+1);
            imageId=image.getId();
                            tr.addView(image);

и следующий метод для clickliastener:

     private OnClickListener clickImageListener = new OnClickListener() {
    public void onClick(View v) {
        Intent fullScreenIntent = new Intent(v.getContext(),FullImageActivity.class);
        fullScreenIntent.putExtra(ProfilePageNormalUser.class.getName(),imageId) ;
        ProfilePageNormalUser.this.startActivity(fullScreenIntent); 

    }
};

и операция, в которой изображения должны быть увеличены:

        ImageView myimage = (ImageView) findViewById(R.id.imageviewEnlarged);

    Intent intent = getIntent();


     int imageId = (Integer) intent.getExtras().get(ProfilePageNormalUser.class.getName());
      System.out.println("********"+imageId +"**********");
      InputStream is = this.getResources().openRawResource(imageId);
      Bitmap originalBitmap = BitmapFactory.decodeStream(is);
      Matrix imageMatrix = new Matrix();
      imageMatrix.postRotate(90);
      Bitmap scaledBitmap = Bitmap.createBitmap(originalBitmap, myimage.getWidth(), myimage.getHeight(), originalBitmap.getWidth(), originalBitmap.getHeight(), imageMatrix, false);
      myimage.setImageBitmap(scaledBitmap);
      myimage.setScaleType(ScaleType.FIT_XY);

1 Ответ

1 голос
/ 01 ноября 2011

Да, конечно, это даст последний Id, так как значение imageId будет обновляться в каждом цикле. Это будет хранить последнее известное значение во время цикла.

Вы должны использовать массив вместо простой переменной.

или вы можете использовать v.getId в методе onClick. (проще)

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