如何为imageview设置onclick以显示完整图像?

时间:2014-05-14 14:16:11

标签: android image bitmap imageview

我有一个代码可以动态地将图片和图片视图添加到我的应用中。我想为所有图像视图设置一个onClick,以便在单击每个图像时,图像显示完整,就像当你点击它打开的Facebook图像时,你可以点击下一个和上一个。我已经看到了很多其他的问题和答案,但没有一个适合我想要的。

 final int[] images = { R.drawable.abi1, R.drawable.abi2, R.drawable.abi3,
            R.drawable.abi4 };

    LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.bottomView);

    for (int x = 0; x < images.length; x++) {
        final Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),
                images[x]);

        int width = bitmapOrg.getWidth();
        int height = bitmapOrg.getHeight();
        int newWidth = 200;
        int newHeight = 200;

        float scaleWidth = ((float) newWidth) / width;
        float scaleHeight = ((float) newHeight) / height;

        Matrix matrix = new Matrix();

        matrix.postScale(scaleWidth, scaleHeight);
        matrix.postRotate(0);

        Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0, width,
                height, matrix, true);
        BitmapDrawable bmd = new BitmapDrawable(getResources(),
                resizedBitmap);

        ImageView imageView = new ImageView(this);
        imageView.setPadding(2, 0, 9, 5);
        imageView.setImageDrawable(bmd);
        imageView.setTag(x);

        imageView.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

            }
        });

        linearLayout1.addView(imageView);
    }

1 个答案:

答案 0 :(得分:0)

onClick()方法开始新活动

Intent intent = new Intent(YourActivity.this, YourFullScreenActivity.class);
intent.putExtra("selected_image", int imageResourceId);
startActivity(intent);

在您的新活动中,使用ViewPager以全屏显示图像。 ViewPager将允许您切换到下一个图像。有很多关于实现ViewPager的教程。 请注意,在意图中我正在通过&#34; selected_image&#34;额外。您的新活动可以使用它来显示所选图像。

顺便说一句,如果你的代码分辨率非常高,你的代码可能会出现内存不足错误。该网站http://developer.android.com/training/displaying-bitmaps/load-bitmap.html解释了如何有效加载位图。如果您只显示应用资源文件夹中的图像,则可以跳过加载位图。只需致电setImageResource(),根据需要设置setLayoutParams()setScaleType()的尺寸。 Android系统会为您缩放它们。