我生成一个椭圆,并尝试根据您可以在下面看到的sweepAngle_speed进行重塑。这个sweepAngle_speed来自Mainactivity.java。在Mainactivity.java中,我创建了一个搜索栏,并且我在seekbar的值和sweepAngle_speed的值之间使用了一种算法,因此我希望椭圆中的填充区域发生变化。 onDraw函数没有直接调用,因此我在我创建的getLog函数中使用了invalidate函数。但是我还是不能调用onDraw函数。运行代码时,系统会直接调用onDraw函数3次,但是,当我更改seekbar值时,无论如何我不会调用onDraw函数。我的第一个问题是,系统如何直接调用onDraw函数?第二个是如何在系统工作期间调用onDraw函数。谢谢。
CustomView.java
public CustomView(Context context,@Nullable AttributeSet attrs) {
super(context);
m_Context = context;
getLog();
// create the Paint and set its color
}``
@Override
protected void onDraw(Canvas canvas) {
//c=canvas;
//super.onDraw(c);
Paint p1 = new Paint();
RectF rectF = new RectF(-750,750,720);
//p1.setColor(Color.parseColor("#34ebe2"));
p1.setShader(new LinearGradient(0,-360,getHeight(),Color.CYAN,Color.BLUE,Shader.TileMode.MIRROR));
Log.d(TAG,"CANVAS: onDraw içine girdi ve Speed angle: " + sweepAngle_speed);
canvas.drawArc(rectF,90,-sweepAngle_speed,true,p1);
}
public void getLog () {
paint = new Paint();
paint.setColor(Color.BLUE);
Log.d(TAG,"Speed geldi buraya ve invalidate yaptı");
setWillNotDraw(false);
//this.invalidate();
this.invalidate();
}
}