android求助:關於播放器中的“播放/暫停”鍵: 用ImageButton來設定點擊效果時的問題

來源:互聯網
上載者:User

標籤:android   blog   http   io   使用   java   sp   檔案   on   

============問題描述============


大家好,我最近遇到個問題:
   大家都知道,播放器中的播放/暫停鍵是這樣的邏輯:當使用者點擊了這個鍵,如果當前顯示的是“播放”圖案,會變為“暫停”圖案;反之,如果當前是“暫停”圖案,會變為“播放”圖案 , 如此反覆。。。
現在我正在實現這個效果,我是這樣做的:
   在以上的基本效果的基礎上,我還添加了點擊過程中的效果,就是當點下還木有鬆開時,會有一個點擊效果(比如給當前圖片加個光暈效果什麼的),這種效果我是在xml中用selector標籤實現的,上代碼:
按play時:(xml_player_play.xml)
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:state_pressed="false"android:drawable="@drawable/player_play_default" /><itemandroid:state_pressed="true"android:drawable="@drawable/player_play_pressed" /> <itemandroid:state_window_focused="false"android:drawable="@drawable/player_play_default" /></selector>


按pause時:(xml_player_pause.xml)
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" ><itemandroid:state_pressed="false"android:drawable="@drawable/player_pause_default" /><itemandroid:state_pressed="true"android:drawable="@drawable/player_pause_pressed" /> <itemandroid:state_window_focused="false"android:drawable="@drawable/player_pause_default" /></selector>


ImageButton的xml檔案(略去了id、寬高之類的代碼):
<ImageButton            android:background="#0000"            android:src="@drawable/xml_player_play"            android:scaleType="centerCrop" />


然後在代碼中實現了onClick()方法,用來判斷該怎麼變化圖片:
if( Global.bt_play_play == true ){play.setBackgroundResource(R.drawable.xml_player_pause);Global.bt_play_play = false;}else if( Global.bt_play_play == false ){play.setBackgroundResource(R.drawable.xml_player_play);Global.bt_play_play = true;}

其中的Global.bt_play_play是個boolean靜態變數,預設是true,用來判斷當前是神馬圖案,也就是說是否應該變換圖案。

貌似看起來木有問題,但是運行起來後是這樣:
剛運行起來:
點擊一下後:
再點擊一下後:

這是為什麼呢,為什麼會出現一個橢圓圈在裡面?而且圖片變化後,之前的圖片沒消失,重合在一起了?

============解決方案1============


設定圖片之前。先把圖片清空一下嘛。。
為什麼橢圓?不清楚。
是不是兩張圖片。size(height*width)不一樣。但是使用的是同一種布局。比如。自動擴充。
然後導致了。會有橢圓?

============解決方案2============


<ImageButton
            android:background="#0000"
            android:src="@drawable/xml_player_play"
            android:scaleType="centerCrop" />

有src就不要設定background ,把background或者src刪掉試試 
按邏輯你的java代碼是沒錯的。。。

============解決方案3============


把selector中的 

  <item
        android:state_window_focused="false"
        android:drawable="@drawable/player_pause_default" />

這些都去掉。

寫成如下模式 414

<?xml version="1.0" encoding="UTF-8"?>    
<selector xmlns:android="http://schemas.android.com/apk/res/android">    
    <item           android:state_pressed="false"  android:drawable="@drawable/button_add" />    
    <item           android:state_pressed="true"   android:drawable="@drawable/button_add_pressed" />    
   <item           android:state_focused="true"    android:drawable="@drawable/button_add_pressed" />    
<item           android:drawable="@drawable/button_add" />    
</selector>    

============解決方案4============


if( Global.bt_play_play == true )
{
      play.setImageResource(R.drawable.xml_player_pause);
      Global.bt_play_play = false;
}
else
{
      play.setImageResource(R.drawable.xml_player_play);
      Global.bt_play_play = true;
}

android求助:關於播放器中的“播放/暫停”鍵: 用ImageButton來設定點擊效果時的問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.