supernova-SN_TV MUF简介

Muf是mstar用来快速开发Ui的一个接口层,这部分code是封装起来的,在libmuf.so里,因为我们

不需要直接使用DFB接口去绘制UI,只需要会用MUF提供的接口即可,这部分的架构如下:

 

 

 

 

 

 如上架构所示,UI的组成成分一般是widget和container,调用的一般是msrv层的接口.

同时msrv层也可以通过postEvent的形式向UI层传递消息.

 

每个Applet都会由一个App和一个Frame组成,App负责管控生命周期,如app->run,

app->kill等.

Frame负责绘制UI和实现与MSRV层的链接,如下:

 

 

 上面提到了Frame,widget和container的概念,它们共同组成了我们看得到的UI,下面介绍它们的常用接口:

1.Frame常用成员

 

root_cntr           ==Frame root control 新创建的container和widget都隶属于这个root control

pFocusedWdg  ==焦点widget的指针,有些时候此指针为空,使用时请慎重

SetInitialFocus()  ==初始化焦点,先清除所有focus的widget,然后参数如果是一个widget,焦点就会移到这个widget上面,如果是一个container,那么焦点就会移动第一个子widget上面,如果找不到第一个子widget,焦点就丢失了.这个时候pFocusedWdg就为空了,要避免.

SwitchFocusTo()    ==将焦点移动到一个widget上面,与SetInitialFocus()的区别是没有清楚所有的focus的widget的功能,且参数一般只为widget

 

Invalidata()       ==刷新这个Frame的UI,包括这个Frame的全部内容.

 

2.Container 常用成员

Invalidate()   ==刷新这个container的UI,包括这个container内部所有widget

AddChild()    ==增加一个child,可以是一个widget,也可以是一个container

RemoveChild()  ==remove 一个Child

Getchild()     ==通过index获取child的指针

GetChilddx()   ==通过child指针获取index值

GetChildCount()   == 获取child总数量

 

3.widget常用成员

Invalidate()   ==刷新widget UI

SetFlag()    ==设置标志位属性

QueryFlag()  ==查询标志位属性

GetAbsRect()  ==获取绝对坐标值

GetID()   ==获取widget的ID

Move()    ==移动widget的位置

Resize()  ==修改widget的size,即宽度和高度

Hide()  ==隐藏widget

Show()  == 显示widget

ReSetRect()   == reset坐标值和宽度高度

 

posted @ 2021-04-07 11:31  另一个起点  阅读(147)  评论(0编辑  收藏  举报