Java Android Studio-WindowManager中的画布交互

Java Android Studio-WindowManager中的画布交互,java,android,android-studio,canvas,seekbar,Java,Android,Android Studio,Canvas,Seekbar,我正在开发一个Android应用程序,它有一个覆盖视图,用户可以从任何地方访问。 我从以下问题中提取了代码: 简单地说,一个类“HUD”调用一个子类ViewGroup“HUDView”,包含所有必要的元素 现在我想在这个视图组中添加一个SeekBar,在进度发生变化时,每次都会绘制一个画布:例如SeekBar progress=1,绘制一个角度为10°的圆,progress=2,重新绘制角度为20°的圆,等等。。。 圆圈和搜索杆必须从任何地方覆盖实际屏幕 我已经成功地将Canvas(在View

我正在开发一个Android应用程序,它有一个覆盖视图,用户可以从任何地方访问。 我从以下问题中提取了代码:

简单地说,一个类“HUD”调用一个子类ViewGroup“HUDView”,包含所有必要的元素

现在我想在这个视图组中添加一个SeekBar,在进度发生变化时,每次都会绘制一个画布:例如SeekBar progress=1,绘制一个角度为10°的圆,progress=2,重新绘制角度为20°的圆,等等。。。 圆圈和搜索杆必须从任何地方覆盖实际屏幕

我已经成功地将Canvas(在ViewGroup的onDraw方法中创建)和seekBar(在HUD类的onCreate方法中创建,也与他的侦听器一起放置)。 在“onProgressChanged”方法中,我想重新绘制圆,但这似乎不起作用

下面是侦听器代码:

// SeekBar Change Listener
    seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

        @Override
        public void onProgressChanged(SeekBar seekBar, int progresValue, boolean fromUser) {
            mView = new HUDView(getApplicationContext());
            progress = progresValue;


            WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                    WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                    PixelFormat.TRANSLUCENT);
            params.gravity = Gravity.CENTER | Gravity.TOP;
            params.setTitle("Load Average");
            WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
            wm.addView(mView, params);




        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            //Toast.makeText(getApplicationContext(), "Started tracking seekbar", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            //textView.setText("Covered: " + progress + "/" + seekBar.getMax());
            //Toast.makeText(getApplicationContext(), "Stopped tracking seekbar", Toast.LENGTH_SHORT).show();
        }
    });
以下是HUDView的onDraw方法:

}
@Override
protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    final RectF oval = new RectF();
    oval.set(30, 30, 450, 450);
    Bitmap bg = Bitmap.createBitmap(480, 480, Bitmap.Config.ARGB_8888);
    canvas.drawArc(oval, 90, progress*10 , true, paint);
}