日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

xml布局显示需要预判断,可是还没有show出来,怎么办?

發(fā)布時間:2025/7/14 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 xml布局显示需要预判断,可是还没有show出来,怎么办? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近在實際工作中遇到了一種情況,寫一個音量條,音量條顯示出來之前要判斷系統(tǒng)的音量大小,然后給音量條設置顯示的位置。解決辦法有兩種,

第一種: ? ?m_pHostThread>MsgAsyncCall(MSG_METHOD(this,speakeMuteBtnHandler::onVolumeBarChanged));在onVolumeBarChanged函數(shù)中,把你當前的音量設置到系統(tǒng)中,實現(xiàn)onVolumeBarChanged函數(shù)。

1 BOOL speakeMuteBtnHandler::onVolumeBarChanged(msgObject&) 2 { 3 xSliderHandler* sliderHandler = m_pHostView->viewAt<xView>("volumeBar").findHandler<xSliderHandler>(); 4 chASSERT(sliderHandler != NULL); 5 int volume = devGetTalkVolume(); 6 sliderHandler->setValue(toString(volume)); 7 return TRUE; 8 }

? ? 在這個函數(shù)中,先將布局取到,m_pHostView指的是當前整個的布局,通過m_pHostView拿到 id為volumebar的音量條布局,在這個里面取出SliderHandler,判斷當前音量條的位置,設置音量。

第二種:

把整個的次級菜單,封裝進一個sliderHandler的類,這類可以繼承xLinearLayout或者其他布局中需要的類,在類內,將這個布局文件加載出來,加載出來以后,取出對象,設置音量。

這里寫一下音量條的聯(lián)動:

? ? ??

1 void speakeMuteBtnHandler::onViewConnected() 2 { 3 m_pSpeakeMuteBtn = &m_pHostView->viewAt<xView>("speakeMuteBtn"); 4 slotSpeakeMuteBtn(); 5 msgJoinMessageGroup(szVolumeGroupName, MSG_METHOD(this, speakeMuteBtnHandler::onSpeakeMuteChanged)); 6 SLOT_CONNECT(m_pSpeakeMuteBtn, signalClicked, this, speakeMuteBtnHandler::slotSpeakeMuteBtnClicked); 7 xSliderHandler* sliderHandler = m_pHostView->viewAt<xView>("volumeBar").findHandler<xSliderHandler>(); 8 chASSERT(sliderHandler != NULL); 9 SLOT_CONNECT(sliderHandler, signalValueChanged, this, speakeMuteBtnHandler::slotVolumeBarChanged); 10 m_pHostThread->MsgAsyncCall(MSG_METHOD(this, speakeMuteBtnHandler::onVolumeBarChanged)); 11 };

? ? ?onViewConnected這個函數(shù)只加載一次,slotSpeakeMUteBtn是要初始化一次,這個函數(shù)的實現(xiàn)是:

1 void speakeMuteBtnHandler::slotSpeakeMuteBtn() 2 { 3 xImageView& icon = m_pSpeakeMuteBtn->viewAt<xImageView>("icon"); 4 if (devGetOutputSilence()) 5 { 6 icon.setPixmap("talk/softkey/silence.png"); 7 } 8 else 9 { 10 icon.setPixmap("talk/softkey/volume-mute-btn-normal.png"); 11 } 12 };

? ?判斷當前是否靜音,設置圖標狀態(tài)。

1 BOOL speakeMuteBtnHandler::onSpeakeMuteChanged(msgObject& msgObj) 2 { 3 xImageView& icon = m_pSpeakeMuteBtn->viewAt<xImageView>("icon"); 4 switch (msgObj.message) 5 { 6 case VOLUME_OUTPUT_MUTE_CHANGED: 7 slotSpeakeMuteBtn(); 8 break; 9 default: 10 return FALSE; 11 } 12 return TRUE; 13 };

?監(jiān)聽組播消息,這里的組播是線程通信的一種,其他地方有設置靜音,這里進行監(jiān)聽,進行相應的UI修改。

1 void speakeMuteBtnHandler::slotSpeakeMuteBtnClicked(chSignal* /*sender*/, WPARAM /*wParam*/, LPARAM /*lParam*/, int /*nDataBytes*/, LPVOID /*pData*/) 2 { 3 devSetOutputSilence(!devGetOutputSilence()); 4 };

調用靜音接口函數(shù)。

1 void speakeMuteBtnHandler::slotVolumeBarChanged(chSignal* /*sender*/, WPARAM wParam, LPARAM /*lParam*/, int /*nDataBytes*/, LPVOID /*pData*/) 2 { 3 xSliderHandler* sliderHandler = m_pHostView->viewAt<xView>("volumeBar").findHandler<xSliderHandler>(); 4 int volume = 0; 5 toValue(sliderHandler->value, volume); 6 devSetTalkVolume(volume); 7 };

根據(jù)滾動條的變化來設置音量。

轉載于:https://www.cnblogs.com/132818Creator/p/7200659.html

總結

以上是生活随笔為你收集整理的xml布局显示需要预判断,可是还没有show出来,怎么办?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。