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。如果从 UI 线程外部调用 setFrame,请注意使用 postInvalidate()。

于 2012-05-08T18:47:14.807 回答