gpt4 book ai didi

java - 多线程将图像添加到表面 View 中

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

现在我有一个线程填充我的 Activity View 。但我希望另一个线程在同一 Activity 中添加一些 TextView 和 ImageView 。我正在使用 SurfaceView,在其中创建了这个线程,但我不知道如何添加另一个线程,以便它可以为当前 Activity 的 View 做出贡献。

帮帮我..

MyView view;
protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
view = new MyView(this);

setContentView(view);
}

@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
view.pause();
}

@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
view.resume();
}

public class MyView extends SurfaceView implements Runnable {

Thread threadstill = null;
boolean isitok = false;
SurfaceHolder holder;

public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
holder = getHolder();

}

@Override
public void run() {
// TODO Auto-generated method stub
while (isitok == true) {
if (!holder.getSurface().isValid()) {
continue;
}
canvas = holder.lockCanvas();
canvas.drawARGB(255, 255, 255, 255);
canvas.drawBitmap(<bitmapimage>, x, y, null);
holder.unlockCanvasAndPost(canvas);
}

}


public void pause() {
isitok = false;
while (true) {
try {
threadstill.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
break;
}
threadstill = null;
}

public void resume() {
isitok = true;
threadstill = new Thread(this);
threadstill.start();
}
}

最佳答案

您无法从另一个线程直接操作用户界面。主线程负责所有 UI 更改。但是,如果您想在后台执行一些昂贵的工作(例如加载图片),您可以将结果发送到 UI 线程。

哈瓦看一下官方文档:https://developer.android.com/training/multiple-threads/communicate-ui.html

或者类似的问题:How can I manipulate main thread UI elements from another thread in Android?

关于java - 多线程将图像添加到表面 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27711453/

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