如何使用ClipDrawable以编程方式显示部分Bitmap?

时间:2015-06-27 03:54:19

标签: android image bitmap

我试图展示图片的某个部分。

例如:
70% of Android icon

我尝试使用下面的代码从ClipDrawable设置ImageView Bitmap,但它没有显示。

BitmapDrawable bitmapDrawable = new BitmapDrawable(getResources(), bitmap);
ClipDrawable clipDrawable = new ClipDrawable(bitmapDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
clipDrawable.setBounds(0, 0, bitmap.getWidth(), bitmap.getHeight());
clipDrawable.setLevel(5000);
imageView.setImageDrawable(clipDrawable);

我还通过查看BitmapDrawable是否会显示完整图片并确实正确显示问题来测试以确保问题与imageView.setImageDrawable(bitmapDrawable)无关。

如何使用Bitmap显示ClipDrawable的一小部分?

为什么图像没有显示?

我查看了this post,但接受的答案假定可以从资源中检索图像,而我会动态加载我的图像。

帖子android - How to cut some part of image and show it in imageview的答案不会使用ClipDrawable回答我的问题,只需使用幻数来创建新的Bitmap

如果您在XML中设置Drawable,则Android docs on ClipDrawable仅解释如何解决此问题。

1 个答案:

答案 0 :(得分:3)

您需要在设置关卡后调用clipdrawable上的invalidateSelf,或者您应该尝试这样做:

imageView.setBackground(clipDrawable);
imageView.setImageResource(android.R.color.transparent);

礼貌:Using ClipDrawable to hide a part of and ImageView