2013-08-05 16 views
1

我發現了一個示例項目,用於添加「調節旋鈕」這裏的Android項目:Android的調節旋鈕的Widget

http://go-lambda.blogspot.com/2012/02/rotary-knob-widget-on-android.html

而且,總的來說,它的工作非常好。我的項目從示例幾方面的偏差,但最顯著的是,我添加了旋鈕部件和完成按鈕顯示編程(無XML),像這樣:

activity.getWindowManager().getDefaultDisplay().getMetrics (app.metrics); 
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams 
    (300, RelativeLayout.LayoutParams.WRAP_CONTENT); 

lp.topMargin   = 100; 
lp.bottomMargin   = 598; 
lp.leftMargin   = 50; 
lp.rightMargin   = 348; 

lp.height    = 300; 
lp.width    = 300; 

activity.addView (knob, lp); 

lp = new RelativeLayout.LayoutParams (RelativeLayout.LayoutParams.WRAP_CONTENT, 
    RelativeLayout.LayoutParams.WRAP_CONTENT); 

int top = (int)(0.75 * app.metrics.heightPixels) - 40; 
lp.topMargin   = top - 100; 
lp.leftMargin   = 150; 
lp.rightMargin   = 100; 

act.addView (b1, lp); 
knob.requestFocus(); 

我喜歡的方式和地點圖形出現(大部分時間),但問題是當旋鈕旋轉時,它看起來並沒有圍繞它的中心旋轉,結果是左右擺動(以及上下襬動)如同用戶旋轉它。它不會影響重要的東西,但它看起來很有趣,我想解決它。

+0

看來,我使用的旋鈕圖像(我從我參考的網站下載)實際上是問題所在。它看起來並不是旋鈕的圖片居中在PNG文件本身。廢話。無論如何,除了只是谷歌搜索(根本沒有很好的工作 - 我不知道在這一點上我可能會搜索什麼),任何人都可以建議我以這種方式找到適合在軟件中使用的漂亮的開源圖形文件項目? – Rich

+0

我有一個撥號控制形式的開源代碼庫。這將解決您的問題,經過充分測試優化和穩定。 https://bitbucket.org/warwick/hggldial – user2288580

回答

1

最終,問題很簡單(同時真的很煩人)。示例項目提供的png文件是一個正方形,其中的旋鈕圖片未在正方形中居中。我的android應用程序顯然不旋轉旋鈕,它旋轉了方形PNG文件。真正煩人的部分是(1)找到替換文件或(2)修復原始文件有多困難。幸運的是,我發現有人爲第2項提供了適當的工具。我的建議是:如果您需要在項目中做類似的事情,我建議的網站非常有幫助,但您需要關注或修復實際圖片。

0

在示例中發佈的旋轉問題,很可能是因爲控件以不連續的步驟旋轉,而不是平滑增加/旋轉圖像。 如果要修改給定較小角度的旋轉代碼,您可以做什麼。

要做到這一點從頭開始,您需要一種方法將您的觸摸座標轉換爲極座標(具有旋轉角度)。這很容易這樣做:

private float cartesianToPolar(float x, float y) { 
    return (float) -Math.toDegrees(Math.atan2(x - 0.5f, y - 0.5f)); 
} 

要旋轉ImageView的,或者你正在使用,以顯示你的旋鈕元素,你可以使用這樣的矩陣:

Matrix matrix=new Matrix(); 
ivRotor.setScaleType(ScaleType.MATRIX); 
matrix.postRotate((float) deg, m_nWidth/2, m_nHeight/2);//getWidth()/2, getHeight()/2); 
ivRotor.setImageMatrix(matrix); 

哪裏度是角度和ivRobor是旋鈕imageview。

我也組裝了一個完整的工作示例,以防您需要進一步的幫助。你可以在這裏看到:http://www.pocketmagic.net/2013/11/custom-rotary-knob-control-for-android/

+0

真的,我不相信這些步驟是一個問題。我的具體問題確實是該旋鈕的圖片未在png文件中居中。一旦我有人(用適當的工具)爲我修復PNG文件,顯示器看起來很好。 – Rich