我想知道我们是否可以根据某些标志有条件地调用 Android 的 Ondraw() 方法。例如ondraw()
,仅在解码特定帧时才应调用。
考虑这种情况:
decoder(); /// @NDK
set flag;
if (Flag==set)
{
OnDraw() works and displays an image
}
else
OnDraw sleeps;
我们可以在 Android 中实现这种类型的活动,如果可以,那么如何实现?
在您的评论中,您要求提供一些示例代码。我想你的布局中有一个自定义视图,它显示解码的帧。原则上它可能看起来像这样:
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()。