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
基础教程推荐
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01