Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓:你如何使用搜索杆来缩放一个圆?_Android_Scale_Draw_Geometry_Seekbar - Fatal编程技术网

Android 安卓:你如何使用搜索杆来缩放一个圆?

Android 安卓:你如何使用搜索杆来缩放一个圆?,android,scale,draw,geometry,seekbar,Android,Scale,Draw,Geometry,Seekbar,我已经用编程方式画了一个圆来充当画笔,但在缩放它时遇到了问题。在seekbar方法中,我将半径的值与进度联系起来,它们以数字方式缩放,但当我触摸平板电脑时,画笔的大小仍然相同。当我滑动seekbar时,如何让笔刷不断地重新绘制自身缩放 以下是更改搜索栏上的圆半径的代码 private class test extends View { private int radius; public test(Context context) { super(context

我已经用编程方式画了一个圆来充当画笔,但在缩放它时遇到了问题。在seekbar方法中,我将半径的值与进度联系起来,它们以数字方式缩放,但当我触摸平板电脑时,画笔的大小仍然相同。当我滑动seekbar时,如何让笔刷不断地重新绘制自身缩放

以下是更改搜索栏上的圆半径的代码

private class test extends View {
    private int radius;

    public test(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        Paint paint = new Paint();
        paint.setAntiAlias(false);
        paint.setStyle(Paint.Style.FILL);
        paint.setColor(Color.RED);

        // RectF rect = new RectF(100, 100, 200, 200);
        // canvas.drawRect(rect, paint);
        canvas.drawCircle(50, 50, getRadius(), paint);
        canvas.drawLine(10, 10, 10, 10 + 15, paint);

    }

    /**
     * @param radius the radius to set
     */
    public void setRadius(int radius) {
        this.radius = radius;
    }

    /**
     * @return the radius
     */
    public int getRadius() {
        return radius;
    }
}
在你的活动中

LinearLayout layout = new LinearLayout(this);
    layout.setLayoutParams(new LayoutParams(320, 420));
    layout.setOrientation(LinearLayout.VERTICAL);
    tt = new test(this);
    tt.setLayoutParams(new LayoutParams(100, 200));
    layout.addView(tt);

    SeekBar bar = new SeekBar(this);
    bar.setMax(40);
    bar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProgressChanged(SeekBar seekBar, int progress,
                boolean fromUser) {
            // TODO Auto-generated method stub
            tt.setRadius(progress);
            tt.invalidate();
        }
    });

    layout.addView(bar);

    setContentView(layout);

希望对您有用。

我刚才试过了,我的圆圈不会显示Override public void onProgressChanged(SeekBar-SeekBar,int-progress,boolean-fromUser){currentVal=progress+brushNumSize;radius.radius=currentVal;brushSize.setText(“笔刷大小”+Integer.toString(currentVal));});你第一次能看到你的圈子吗?如果你不确定你的颜色是否与背景颜色不同,我已经修复了。我不得不对你的代码做一点小小的修改。必须创建一些变量来绕开进度值并将其传递回方法。谢谢你的帮助:)