使用ClipDrawable隐藏ImageView的一部分

时间:2015-05-22 11:45:17

标签: android image bitmap imageview android-imageview

我试图隐藏图像的一部分,以便用户看不到它。最初我将Bitmap像素复制到另一个Bitmap上,而不复制我需要的像素,并在创建时使第二个位图的大小正确。这很有效,但我有很多大图像,不幸的是会导致OOM。因此,我没有这样做,而是考虑使用ClipDrawable绘制图像,并制作我不需要看不见的像素。

代码如下

ClipDrawable clipDrawable = new ClipDrawable(new BitmapDrawable(resources, bitmap), gravity, orientation);
clipDrawable.setLevel(level);

// Cannot use as the imageview source. Must use background or else we don't get anything on the screen.
picture.setBackground(clipDrawable);
// This is super important. Do not modify this! Without it you will not get the fullscreen image working and the ImageView will be deleted
// from the parent layout.
picture.setImageResource(android.R.color.transparent);

我的想法是根据图像大小计算水平,以便隐藏我不需要的像素。而且它正在发挥作用。除非我不明白为什么我需要使用

picture.setBackground(clipDrawable);

picture.setImageResource(android.R.color.transparent);

而不是更正常:

picture.setImageDrawable(clipDrawable);

如果我做了第二个更正常的例子,那么我在ImageView中没有得到任何东西,但是如果我将它设置为背景并在其上放置透明图像,那么它可以工作。由于我想使用需要将图片设置为src而不是背景的缩放类来进一步操作ImageView,我不能同时使用两者,要么我得到了ClipDrawable,要么我可以放大图像。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

Intent intent = new Intent(this, NextActivity.class);
intent.putExtra("BitmapImg", bitmap);