1. ホーム
  2. android

[解決済み] ビューを再描画する Android

2022-02-09 01:42:51

質問

私は現在、onCreateの後にプログラム的に追加されるViewを持っています(他のいくつかの変数に依存します)。すべてがその通りに動作し、円の一部が描画されます。

しかし、私の質問は、後でそれを再描画するにはどうすればよいのでしょうか?私はいくつかのデータが取得された後、円の角度を変更する必要があります。

WindRoseのコード:

    public class WindRose extends View {

    public WindRose(Context context) {
        super(context);


    }

    @Override

    protected void onDraw(Canvas canvas) {


        super.onDraw(canvas);
        canvasTest = canvas;


        float height = (float) getHeight();
        float width = (float) getWidth();

        float radius;

        if (width > height) {
            radius = height / 2;

        } else {
            radius = width / 2;
        }

        // radius = (height )/ 2;


        Path path = new Path();
        path.addCircle(width, height, radius, Path.Direction.CCW);

        // / 2

        Resources resources = getResources();
        int color = resources.getColor(R.color.green_back);



        paint.setColor(color);
        paint.setStrokeWidth(5);

        paint.setStyle(Paint.Style.FILL);
        float center_x, center_y;
        center_x = width / 2;
        center_y = height / 2;



        //Formulas :
        //SD = Start Degree
        //ED = End Degree

        //If cakepiece passes 0 (East)
        //SD, 360-(SD+ED)

        //Else :
        //SD, (ED-SD)

        oval.set(center_x - radius, center_y - radius, center_x + radius, center_y + radius);

        if (End > Start) {
            canvas.drawArc(oval, Start, (End - Start), true, paint);

        } else if (End < Start) {
            canvas.drawArc(oval, Start, ((360 - Start) + End), true, paint);
        }


    }


}

を更新すると StartEnd を呼び出そうとしたのですが、何も起こりませんでした。 invalidate をクラスで実行しても、再描画されません。

私が試したことを無効にしてください。

WindRose windrose = new WindRose(this);
windrose.invalidate();

WindRoseが所属するメインクラスから呼び出されました。

どのようにすればよいのでしょうか?

どのように解決するのですか?

おそらく invalidate() メソッドを使用すると便利です。

詳しくはこちらでどうぞ( http://developer.android.com/reference/android/view/View.html )ですが。 "ビューを強制的に描画するには、invalidate()."を呼び出します。

また、ビューの一部だけを無効にすることもできます。