2011-12-21 78 views
5

中的按鈕(或內部文本)我必須通過編碼隨機程度旋轉按鈕(或內部文本,它是相同的)。是否有任何button.setRotate(x)在API級別低於11?旋轉代碼

+0

這個問題有什麼問題? – 2011-12-21 12:03:04

+0

它沒有顯示研究工作。打開Button類文檔,使用瀏覽器的搜索功能,並在搜索字段中輸入「rotation」,你會明白我的意思。 – 2011-12-21 12:13:13

+0

我搜索了很多,但大多數問題都是關於通過按下按鈕旋轉圖像..不旋轉按鈕本身。 在文檔中,我發現只有「setRotation(float)= VIEW的旋轉度數」.. 我不知道如何實現旋轉按鈕。 button.setRotate(x)不起作用。 – 2011-12-21 12:32:09

回答

4

好的,看一看,答案是:這很複雜。

您可以使用舊的動畫框架來旋轉按鈕,例如,像這樣:

Button button = (Button) findViewById(R.id.button); 

// rotation from 0 to 90 degrees here 
RotateAnimation a = new RotateAnimation(0, 90); 
a.setFillAfter(true); 
a.setDuration(0); 
button.startAnimation(a); 

這裏的問題是,按鈕看起來旋轉,但無法正確點擊。觸發單擊事件的座標是按鈕在旋轉前的區域的座標。

由於這不是一個很好的解決方案,所以最好的辦法是編寫一個自定義視圖來擴展Button類並旋轉onDraw()中的按鈕畫布。在這種情況下,您還必須覆蓋onMeasure()。請參閱Custom Components瞭解如何操作。

除此之外,您可以嘗試從按鈕父級佈局中截取點擊事件,並在點擊發生在按鈕當前座標內時觸發適當的事件。這雖然有些「哈克」。

+0

!我的按鈕是方形的,所以它可以工作。 – 2011-12-21 22:42:43

+1

將動畫信息添加到動畫的中心,這是完美的!謝謝 RotateAnimation a = new RotateAnimation(0,90,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f); – 2011-12-22 07:37:23

+0

請即刻新的Android開發,你能告訴我如何擴展按鈕類,其旋轉代碼? – Mehdi 2012-06-22 15:20:42