Android 安卓:你如何使用搜索杆来缩放一个圆?
我已经用编程方式画了一个圆来充当画笔,但在缩放它时遇到了问题。在seekbar方法中,我将半径的值与进度联系起来,它们以数字方式缩放,但当我触摸平板电脑时,画笔的大小仍然相同。当我滑动seekbar时,如何让笔刷不断地重新绘制自身缩放 以下是更改搜索栏上的圆半径的代码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
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));});你第一次能看到你的圈子吗?如果你不确定你的颜色是否与背景颜色不同,我已经修复了。我不得不对你的代码做一点小小的修改。必须创建一些变量来绕开进度值并将其传递回方法。谢谢你的帮助:)