gpt4 book ai didi

java - 在哪里放置 AsyncTask() 以便我可以调用它来加载图像?

转载 作者:行者123 更新时间:2023-12-01 05:39:06 26 4
gpt4 key购买 nike

下面是我的代码,当调用此 Activity 时它将加载图像。但我希望在从服务器检索图像时显示进度对话框,而不是仅向用户显示黑屏。我听说 AsyncTask 能够做到这一点,但我坚持在哪里放置 AsyncTask 函数并调用它。

public class LargeImageScroller extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SampleView(this));
}

private static class SampleView extends View {
private static Bitmap bmLargeImage; //bitmap large enough to be scrolled
private static Rect displayRect = null; //rect we display to
private Rect scrollRect = null; //rect we scroll over our bitmap with
private int scrollRectX = 0; //current left location of scroll rect
private int scrollRectY = 0; //current top location of scroll rect
private float scrollByX = 0; //x amount to scroll by
private float scrollByY = 0; //y amount to scroll by
private float startX = 0; //track x from one ACTION_MOVE to the next
private float startY = 0; //track y from one ACTION_MOVE to the next

public SampleView(Context context) {
super(context);

displayRect = new Rect(0, 0, displayWidth, displayHeight);

scrollRect = new Rect(0, 0, displayWidth, displayHeight);

bmLargeImage = Bitmap.createBitmap(1035 , 665, Config.ARGB_8888);
bmLargeImage = createMap(this.getContext());

}

public boolean onTouchEvent(MotionEvent event) {....}

protected void onDraw(Canvas canvas) {....}

private static Bitmap createMap(Context context) {...}

private static Drawable LoadImageFromWebOperations(String url) {....}

private static Bitmap decodeFile(File f, int requiredSize) {...}

}
}

我想知道我应该在哪里放置 AsyncTask 函数,以便在程序从服务器/缓存加载图像时显示进度对话框。我在互联网上找到的大多数来源并没有说太多。

最佳答案

AsyncTask 在某种程度上类似于线程。它用于处理一些耗时的操作,使主线程不会被阻塞。对于您的情况,AsyncTask 是合适的。然而,你想把它放在哪里取决于你的逻辑。

请阅读SDK:AsyncTask获取更多相关信息。还有一个代码 fragment 可以帮助您。

添加:

嗯,我理解你的担忧。如果您只是想显示一个进度条来告诉用户应用程序正在从服务器下载图像。您可以这样处理:
1. 创建一个包含ProgressBar的xml布局文件。
2. 在LargeImageScroller类的OnCreate中,调用setContentView(R.layout.that_layout)显示进度条,并启动AsyncTask下载图片。
3.在AsyncTask内部,重写onProgressUpdate(Integer...progress)来告诉ProgressBar下载进度。
4. 在 AsyncTask 中,重写 onPostExecute(Long result)。当 AsyncTask 完成时将调用此方法。在这里您可以执行以下操作:SampleView sv=new SampleView(this),然后将图像传递给 sv 对象。然后调用 setContentView(sv) 显示您的图像。

这只是我的思路。我认为您可以在 LargeImageScroller 类或 SampleView 类中使用 AsyncTask。希望此评论有所帮助。

关于java - 在哪里放置 AsyncTask() 以便我可以调用它来加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com