97干视频,99国产精品懂色,亚洲精品99久久久久中文字幕,伊人五月丁香综合AⅤ,国产精品成人免费999

  您的位置:華清遠(yuǎn)見(jiàn)教育科技集團(tuán) >> 新聞動(dòng)態(tài) >> Android資料 >> Android Skia UI控件架構(gòu)  
 
Android Skia UI控件架構(gòu)
分享到:

Skia的UI控件的基類為SkNoncopyable,擴(kuò)展類包括SkImageView、SkStaticView、SkAnimatorView、SkBorderView、SkButtonView、SkListView、SkProgressBarView、SkScrollbarView等UI控件視圖。Skia的顯示類型定義在SkDisplayType.h中。Skia引擎的UI控件架構(gòu)如下圖所示。


Skia引擎的UI控件架構(gòu)

但就目前而言,Skia的UI控件并沒(méi)被編譯到當(dāng)前的工程中,這里就只做一些簡(jiǎn)單的介紹。

SkView是屏幕管理的基類,支持視圖的kVisible_Mask、kEnabled_Mask、kFocusable_Mask、kFlexH_Mask、kFlexV_Mask等標(biāo)志位操作。對(duì)視圖的大小、寬高、焦點(diǎn)等進(jìn)行處理。其擴(kuò)展類包括SkStaticTextView、SkBitmapView、SkWidgetView(已棄用)、SkSliderView(已棄用)、SkHasLabelView、SkPushButtonView、SkCheckBoxView、SkProgressView、SkTextView(已棄用)、SkListView、SkGridView、SkWindow等。

SkWidget為UI控件的基類,在SkView的基礎(chǔ)上增加了對(duì)控件事件的處理能力,相關(guān)的擴(kuò)展類包括SkHasLabelWidget、SkButtonWidget、SkPushButtonWidget、SkCheckBoxWidget等。

Skia的事件處理是通過(guò)SkEventSink、SkEvent等來(lái)進(jìn)行的,其中SkEvent是Skia事件的攜帶者,SkEventSink是Skia事件的接收者。Skia通過(guò)一個(gè)32位的UUID即SkEventSinkID來(lái)標(biāo)識(shí)SkEventSink對(duì)象,當(dāng)有Skia事件被推送時(shí),Skia會(huì)根據(jù)SkEvent對(duì)象攜帶的SkEventSinkID值將Skia事件分發(fā)給對(duì)應(yīng)的SkEventSink。Skia事件的數(shù)據(jù)被封裝在SkMetaData中。

Skia根據(jù)SkEventSinkID來(lái)查詢相關(guān)的SkEventSink的過(guò)程如下:

代碼:SkEventSink::FindSink()的實(shí)現(xiàn)

SkEventSink* SkEventSink::FindSink(SkEventSinkID sinkID)
    {
    if (sinkID==0)
        return 0;
    SkEventSink_Globals& globals=*(SkEventSink_Globals*)SkGlobals::Find(SK_EventSink_GlobalsTag, create_globals);
    SkAutoMutexAcquire ac(globals.fSinkMutex);
    SkEventSink* sink=globals.fSinkHead;
    while (sink)
      {
        if (sink->getSinkID()==sinkID)
          return sink;
        sink=sink->fNextSink;
      }
    return NULL;
    }

Skia事件的處理在SkEventSink::DoEvent()中進(jìn)行。

 更多相關(guān)文章

·Android Skia圖形渲染
·Android Skia 渲染概述
·Android Surface渲染管理
·Android LayerBuffer模式的layer渲染
·Android應(yīng)用程序之WebApp開(kāi)發(fā)實(shí)戰(zhàn)