droid_wrap::android::view

Trait SurfaceHolder

Source
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§

Source

const CLASS: &'static str = "android/view/SurfaceHolder"

android/view/SurfaceHolder

Source

const OBJECT_SIG: &'static str = "Landroid/view/SurfaceHolder;"

Landroid/view/SurfaceHolder;

Source

const DIM: u8 = 0u8

数组维度

Required Methods§

Source

fn add_callback<C: SurfaceHolder_Callback>(&self, callback: &C)

为该持有者添加一个回调接口。一个持有者可以关联多个回调接口。 callback 新的 回调接口。

Source

fn remove_callback<C: SurfaceHolder_Callback>(&self, callback: &C)

从此持有者中移除先前添加的回调接口。 callback 要移除的回调接口。

Source

fn is_creating(&self) -> bool

使用此方法可查明表面是否正在通过回调方法创建。此方法旨在与 SurfaceHolder.Callback.surfaceChanged 一起使用。 如果表面正在创建,则返回 true。

Source

fn set_type(&self, type: i32)

👎Deprecated: 此项将被忽略,需要时会自动设置此值。

设置表面的类型。

Source

fn set_fixed_size(&self, width: i32, height: i32)

使表面具有固定大小。它永远不会改变此大小。使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此方法。 width 表面的宽度。 height – 表面的高度。

Source

fn set_size_from_layout(&self)

允许表面根据其容器的布局调整大小(这是默认设置)。启用此功能后,您应该监视 SurfaceHolder.Callback.surfaceChanged 以了解表面大小的变化。 使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此功能。

Source

fn set_format(&self, format: i32)

设置表面所需的 PixelFormat。默认值为 OPAQUE。 使用 SurfaceView 时,必须从运行 SurfaceView 窗口的同一线程调用此方法。 format 来自 PixelFormat 的常量。

Source

fn set_keep_screen_on(&self, screen_on: bool)

启用或禁用选项以在显示此表面时保持屏幕打开。默认值为 false,允许其关闭。可从任何线程安全地调用此功能。 screen_on 设置为 true 以强制屏幕保持打开状态,设置为 false 以允许其关闭。

Source

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 用于绘制到表面。

Source

fn lock_canvas_dirty(&self, dirty: &Rect)

与 lockCanvas() 类似,但允许指定脏矩形。必须写入该矩形内的每个像素;但是脏矩形之外的像素将在下次调用 lockCanvas() 时保留。 返回:Canvas 用于绘制到 Surface 中。 dirty 将被修改的表面区域。

Source

fn unlock_canvas_and_post(&self, canvas: &Canvas)

完成编辑表面中的像素。调用此方法后,表面的当前像素将显示在屏幕上,但其内容将丢失,特别是无法保证再次调用 lockCanvas() 时 Surface 的内容保持不变。 canvas 先前由 lockCanvas() 返回的 Canvas。

Source

fn get_surface_frame(&self) -> Rect

查询表面的当前大小。注意:不要修改返回的 Rect。 这只能从 SurfaceView 窗口的线程或在 lockCanvas() 内部调用才安全。 返回:Rect 表面的尺寸。左侧和顶部始终为 0。

Source

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.

Implementors§