pub trait SurfaceHolder:
JObjRef
+ JObjNew
+ PartialEq
+ Debug {
const CLASS: &'static str = "android/view/SurfaceHolder";
const OBJECT_SIG: &'static str = "Landroid/view/SurfaceHolder;";
const DIM: u8 = 0u8;
Show 13 methods
// Required methods
fn add_callback<C: SurfaceHolder_Callback>(&self, callback: &C);
fn remove_callback<C: SurfaceHolder_Callback>(&self, callback: &C);
fn is_creating(&self) -> bool;
fn set_type(&self, type: i32);
fn set_fixed_size(&self, width: i32, height: i32);
fn set_size_from_layout(&self);
fn set_format(&self, format: i32);
fn set_keep_screen_on(&self, screen_on: bool);
fn lock_canvas(&self) -> Option<Canvas>;
fn lock_canvas_dirty(&self, dirty: &Rect);
fn unlock_canvas_and_post(&self, canvas: &Canvas);
fn get_surface_frame(&self) -> Rect;
fn get_surface(&self) -> Surface;
}
Expand description
持有显示表面的人员的抽象接口。允许您控制表面大小和格式、编辑表面中的像素以及监视表面的变化。 此接口通常可通过 SurfaceView 类获得。当从运行其 SurfaceView 的线程以外的线程使用此接口时,您需要仔细阅读 lockCanvas 和 Callback.surfaceCreated() 方法。
Provided Associated Constants§
Sourceconst OBJECT_SIG: &'static str = "Landroid/view/SurfaceHolder;"
const OBJECT_SIG: &'static str = "Landroid/view/SurfaceHolder;"
Landroid/view/SurfaceHolder;
Required Methods§
Sourcefn add_callback<C: SurfaceHolder_Callback>(&self, callback: &C)
fn add_callback<C: SurfaceHolder_Callback>(&self, callback: &C)
为该持有者添加一个回调接口。一个持有者可以关联多个回调接口。
callback
新的 回调接口。
Sourcefn remove_callback<C: SurfaceHolder_Callback>(&self, callback: &C)
fn remove_callback<C: SurfaceHolder_Callback>(&self, callback: &C)
从此持有者中移除先前添加的回调接口。
callback
要移除的回调接口。
Sourcefn is_creating(&self) -> bool
fn is_creating(&self) -> bool
使用此方法可查明表面是否正在通过回调方法创建。此方法旨在与 SurfaceHolder.Callback.surfaceChanged 一起使用。 如果表面正在创建,则返回 true。
Sourcefn set_fixed_size(&self, width: i32, height: i32)
fn set_fixed_size(&self, width: i32, height: i32)
使表面具有固定大小。它永远不会改变此大小。使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此方法。
width
表面的宽度。
height
– 表面的高度。
Sourcefn set_size_from_layout(&self)
fn set_size_from_layout(&self)
允许表面根据其容器的布局调整大小(这是默认设置)。启用此功能后,您应该监视 SurfaceHolder.Callback.surfaceChanged 以了解表面大小的变化。 使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此功能。
Sourcefn set_format(&self, format: i32)
fn set_format(&self, format: i32)
设置表面所需的 PixelFormat。默认值为 OPAQUE。
使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此方法。 format
来自 PixelFormat 的常量。
Sourcefn set_keep_screen_on(&self, screen_on: bool)
fn set_keep_screen_on(&self, screen_on: bool)
启用或禁用选项以在显示此表面时保持屏幕打开。默认值为 false,允许其关闭。可从任何线程安全地调用此功能。
screen_on
设置为 true 以强制屏幕保持打开状态,设置为 false 以允许其关闭。
Sourcefn lock_canvas(&self) -> Option<Canvas>
fn lock_canvas(&self) -> Option<Canvas>
开始编辑表面中的像素。返回的 Canvas 可用于绘制到表面的位图中。如果表面尚未创建或无法编辑,则返回 null。 您通常需要实现 Callback.surfaceCreated 以查明 Surface 何时可用。 Surface 的内容永远不会在 unlockCanvas() 和 lockCanvas() 之间保留,因此,必须写入 Surface 区域内的每个像素。 此规则的唯一例外是指定脏矩形时,在这种情况下,将保留非脏像素。如果在 Surface 未准备好时(在 Callback.surfaceCreated 之前或 Callback.surfaceDestroyed 之后)反复调用此函数,您的调用将被限制到较慢的速率,以避免消耗 CPU。 如果没有返回 null,此函数会在内部保持锁定,直到相应的 unlockCanvasAndPost 调用,从而防止 SurfaceView 在绘制表面时创建、销毁或修改表面。 这比直接访问 Surface 更方便,因为您不需要在 Callback.surfaceDestroyed 中与绘图线程进行特殊同步。 返回:Canvas 用于绘制到表面。
Sourcefn lock_canvas_dirty(&self, dirty: &Rect)
fn lock_canvas_dirty(&self, dirty: &Rect)
与 lockCanvas() 类似,但允许指定脏矩形。必须写入该矩形内的每个像素;但是脏矩形之外的像素将在下次调用 lockCanvas() 时保留。
返回:Canvas 用于绘制到 Surface 中。
dirty
将被修改的表面区域。
Sourcefn unlock_canvas_and_post(&self, canvas: &Canvas)
fn unlock_canvas_and_post(&self, canvas: &Canvas)
完成编辑表面中的像素。调用此方法后,表面的当前像素将显示在屏幕上,但其内容将丢失,特别是无法保证再次调用 lockCanvas() 时 Surface 的内容保持不变。
canvas
先前由 lockCanvas() 返回的 Canvas。
Sourcefn get_surface_frame(&self) -> Rect
fn get_surface_frame(&self) -> Rect
查询表面的当前大小。注意:不要修改返回的 Rect。 这只能从 SurfaceView 窗口的线程或在 lockCanvas() 内部调用才安全。 返回:Rect 表面的尺寸。左侧和顶部始终为 0。
Sourcefn get_surface(&self) -> Surface
fn get_surface(&self) -> Surface
直接访问表面对象。Surface 可能并非始终可用 - 例如,当使用 SurfaceView 时,持有者的 Surface 直到视图连接到窗口管理器并执行布局以确定 Surface 的尺寸和屏幕位置时才会创建。 因此,您通常需要实现 Callback.surfaceCreated 以查明 Surface 何时可用。 请注意,如果您直接从另一个线程访问 Surface,则必须正确实现 Callback.surfaceCreated 和 Callback.surfaceDestroyed 以确保线程仅在 Surface 有效时访问它,并且 Surface 不会在线程使用时被破坏。此方法旨在供经常需要直接访问 Surface 对象(通常将其传递给本机代码)的框架使用。 返回:Surface 表面。
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.