日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

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

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

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 }

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

第二種:

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

這里寫一下音量條的聯動:

? ? ??

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這個函數只加載一次,slotSpeakeMUteBtn是要初始化一次,這個函數的實現是:

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 };

? ?判斷當前是否靜音,設置圖標狀態。

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 };

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

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

調用靜音接口函數。

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 };

根據滾動條的變化來設置音量。

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

總結

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

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