0

いくつかのスレッドを実行しているサーフェスビューがあります。それらのスレッドの 1 つは、サーフェスビュー キャンバス (一種のアニメーション) に描画しています。ここで、1 つの画像 (透明) を「オーバーレイ」して、表面ビューの上に表示したいと思います。これは、HTC ヘルプ (オーバーレイ ヘルプ テキスト) に似たものになります。スレッドの 1 つは、要求されたときにこのオーバーレイを設定します (また、要求されたときにクリアします)。これを行う最も簡単な方法は何ですか?別の ImageView を使用してフレームレイアウトに surfaceview を配置する必要がありますか? これをプログラムで行う必要があります。

4

2 に答える 2

0

ImageViewコンポーネントを追加し、必要に応じてサーフェススレッドから「オーバーレイ」画像を設定/削除しました。それは機能しますが、「タイミング」ソリューションは好きではありません。このオーバーレイは遅れてポップアップし、しばらくすると自動的に削除されます。

私がしたことは:

表面の糸のどこか:

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

        // set overlay image

        postDelayed(new Runnable(){

            // remove overlay image

        }, hideDelay);

    }, showDelay);
}

このネストされたpostDelayedは好きではありません。スリープを使用してみましたが、期待どおりに機能しません=>オーバーレイimageviewは、スリープがなくなるまで無効になりません(手動でinvalideを呼び出してみました)。

これについて何か考えはありますか?

于 2013-03-21T13:03:14.363 に答える
0

この1つのリンクの回答を確認してください..これがお役に立てば幸いです。もう 1 つの方法は、ビューまたは SurfaceView に基づいて独自のコンポーネントを作成することですが、より高度です。

于 2013-03-20T16:00:52.310 に答える