2012-05-04 77 views
0

我試圖通過覆蓋onDraw()方法來自定義seekbar的外觀 - 我需要在屏幕上找到當前的進度/二級進度位置。獲取當前seekbar進度/二級進度的屏幕位置?

我知道如何通過getProgress()getSecondaryProgress()獲得當前進度/二級進度,但這並不反映屏幕上的位置。我想我能得到進步繪製並獲得可繪製的邊界,或使用clipDrawable的水平進步,像這樣:

Drawable progress = getProgressDrawable(); 
     if (progress instanceof LayerDrawable) 
     { 
      Drawable primaryProgress = ((LayerDrawable)progress).findDrawableByLayerId(android.R.id.progress); 
      Rect bounds= primaryProgress.copyBounds();//bounds.left is 0, bounds.right is the screen width 
      ((ClipDrawable)primaryProgress).getLevel();//just gives a value between 0 and 10,000 
     } 

,但我得到的數值做沒有任何反映屏幕上的位置!有誰知道我如何獲得這些價值?

回答

0

我解決這個必須到最大進步設置爲屏幕的寬度:

WindowManager wm = (WindowManager) myAppContext.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay(); 
    Point size = new Point(); 
    try{ 
     display.getSize(size);//only works on later versions of android 
    } 
    catch (Exception e) { 

     int width = display.getWidth(); // deprecated 
     int height = display.getHeight(); // deprecated 
     size = new Point(width, height); 
    } 
myProgressBar.setMax(size.x); 
相關問題