How to get when an ImageView is completely loaded in Android(如何在 Android 中完全加载 ImageView)
问题描述
我正在开发一个在一堆图像上画线的应用程序.为了选择这些图像,我有一个单选组,每当用户单击单选按钮时,图像都会加载所有自己的绘图.
I'm developing an App which draws lines over a bunch of Images. To choose these images, I have a radio group and, whenever the user clicks in a radio button, the image is load with all its own drawings.
在我的收音机监听器中,我有以下代码:
In my radio listenner I have the following code:
bitmap = BitmapUtils.decodeSampledBitmapFromResource(root + DefinesAndroid.CAMINHO_SHOPPINGS_SDCARD + nomeImagemAtual, size.x, size.y);
mImage.setImageBitmap(bitmap);
mImage.setDrawLines(true);
mImage.setImageBitmap(loadBitmapFromView(mImage));
decodeSampledBitmapFromResource
方法我从这个关于 android 开发者的链接获得(它更有效地加载位图)http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
the decodeSampledBitmapFromResource
method I got from this link on android developers (it loads bitmaps more effitiently) http://developer.android.com/training/displaying-bitmaps/load-bitmap.html
这是我用来获取视图位图的方法
And here's the method I call to get a Bitmap of a View
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
我正在设置 mImage
的图像位图,因为我正在使用 ImageViewTouch 库(它可以在 ImageView 上进行缩放),如果我不这样做,所有的画布绘图都会被删除与图像的任何交互(如放大/缩小).
I'm setting the image Bitmap of mImage
because I'm using ImageViewTouch library (which enables pinch zooming over an ImageView) and if I don't do it, all the canvas drawing is deleted with any interaction over the image (like zooming in/out).
错误日志如下
07-11 21:13:41.567: E/AndroidRuntime(20056): java.lang.IllegalArgumentException: width and height must be > 0
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:638)
07-11 21:13:41.567: E/AndroidRuntime(20056): at android.graphics.Bitmap.createBitmap(Bitmap.java:620)
我几乎可以肯定这个错误的发生是因为当我调用 getBitmapFromView
方法时图像位图没有完全加载.
I'm almost sure that this error is occuring cause the image bitmap is not completely loaded when I call getBitmapFromView
method.
我如何知道视图何时完全加载?
How can I know when the view is loaded completely?
推荐答案
这样调用loadBitmapFromView
:
mImage.post(new Runnable() {
@Override
public void run() {
loadBitmapFromView(mImage);
}
});
Runnable
提供给 post()
方法将在视图测量和布局后执行,因此 getWidth()
和 getHeight()
将返回实际的宽度和高度.
Runnable
provided to post()
method will be executed after view measuring and layouting, so getWidth()
and getHeight()
will return actual width and height.
您还能做什么,通过调用 measure
手动测量 View
,然后从 getMeasuredWidth()
和 获取结果>getMeasuredHeight()
.但我不推荐这种方式.
What else can you do, is measuring View
manually, by invoking measure
, and then taking result from getMeasuredWidth()
and getMeasuredHeight()
. But I do not recommend this way.
这篇关于如何在 Android 中完全加载 ImageView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 Android 中完全加载 ImageView
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01