0

我有一个运行几个线程的表面视图。其中一个线程是在surfaceview 画布上绘图——一种动画。现在我想“覆盖”一个图像(透明) - 出现在表面视图上方。这看起来类似于 HTC 帮助 - 覆盖帮助文本。其中一个线程将在请求时设置此覆盖(并在请求时清除它)。最简单的方法是什么?我应该将surfaceview与另一个ImageView放在一个框架布局中吗?我必须以编程方式执行此操作。

4

2 回答 2

0

我添加了一个 ImageView 组件并根据需要从表面线程中设置/删除“覆盖”图像。它可以工作,但我不喜欢“定时”解决方案——这个叠加层应该会延迟弹出并在一段时间后自动将其删除。

我所做的是:

表面螺纹中的某处:

if (condition) {
    postDelayed(new Runnable() {

        // set overlay image

        postDelayed(new Runnable(){

            // remove overlay image

        }, hideDelay);

    }, showDelay);
}

我不喜欢这个嵌套的 postDelayed。我尝试使用睡眠,但它不起作用,因为我会预期 => 覆盖图像视图在睡眠用完之前不会失效(也尝试手动调用无效)。

对这个有什么想法吗?

于 2013-03-21T13:03:14.363 回答
0

检查这个链接上的答案..我希望这会有所帮助。另一种方法是创建自己的组件,可以基于 View 或基于 SurfaceView 但它更高级。

于 2013-03-20T16:00:52.310 回答