0

いくつかのフラグに基づいて、AndroidのOndraw()メソッドを条件付きで呼び出すことができるかどうかを知りたいです。たとえばondraw()、特定のフレームがデコードされたときにのみ呼び出す必要があります。

この状況を考えてみましょう。

decoder();  /// @NDK 

set flag;   

if (Flag==set)

{

OnDraw() works and displays an image

}       

else

OnDraw sleeps;

そのようなタイプのアクティビティをAndroidに実装できますか?はいの場合、どのように実装できますか?

4

1 に答える 1

0

コメントで、サンプルコードをリクエストしました。デコードされたフレームを表示するカスタムビューがレイアウトにあると思います。原則として、次のようになります。

class FrameView extends View {

    private Bitmap mBitmap;

    public FrameView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        //Your drawing logic
        canvas.drawBitmap(mBitmap,0,0, null);
    }

    private void setFrame(final Bitmap b){
        if (mBitmap!=null){
            mBitmap.recycle();
        }
        mBitmap = b;
        //trigger onDraw, if this method is not called from a ui thread switch to postInvalidate()
        this.invalidate();
    }
}

アクティビティでfindViewById()を呼び出すことにより、このビューへのハンドルを取得します。次に、デコードスレッドで、ビューでsetFrameを呼び出します。setFrameがUIスレッドの外部から呼び出される場合は、postInvalidate()を使用するように注意してください。

于 2012-05-08T18:47:14.807 に答える