0

onDraw()メソッドをオーバーライドして、シークバーの外観をカスタマイズしようとしています。画面上の現在の進行状況/セカンダリ進行状況を見つける必要があります。

現在の進捗状況/二次進捗状況を取得する方法を知っていますが、これは画面上の位置を反映し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
        }

しかし、私が取得した値は、画面上の位置も反映していません。誰かが私がこれらの値を取得する方法を知っていますか?

4

1 に答える 1

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);
于 2012-06-12T11:43:54.820 に答える