[解決済み] ビューを再描画する 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);
}
}
}
を更新すると
Start
と
End
を呼び出そうとしたのですが、何も起こりませんでした。
invalidate
をクラスで実行しても、再描画されません。
私が試したことを無効にしてください。
WindRose windrose = new WindRose(this);
windrose.invalidate();
WindRoseが所属するメインクラスから呼び出されました。
どのようにすればよいのでしょうか?
どのように解決するのですか?
おそらく
invalidate()
メソッドを使用すると便利です。
詳しくはこちらでどうぞ( http://developer.android.com/reference/android/view/View.html )ですが。 "ビューを強制的に描画するには、invalidate()."を呼び出します。
また、ビューの一部だけを無効にすることもできます。
関連
-
[解決済み】Build Tools リビジョン 23.0.1 の検索に失敗しました。
-
[解決済み] 現在のアクティビティからルートビューを取得する
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] AndroidのListViewで画像を遅延ロードする方法
-
[解決済み] EclipseのAndroidプラグインで "Debug certificate expired "エラーが発生する。
-
[解決済み] Androidで画面の大きさをピクセル単位で取得する方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Android: Intent エラーを処理するアクティビティは見つかりませんでしたか?どのように解決するのか
-
[解決済み】AndroidのSSL接続でトラストアンカーが見つからない
-
[解決済み】インストールエラー。インストールエラー:install_failed_older_sdk
-
[解決済み】java.lang.RuntimeException: アクティビティを開始できない ComponentInfo
-
[解決済み】シンボル 'AppCompatActivity' を解決できない。
-
[解決済み】アンドロイドクロームブラウザのモバイルウェブアプリケーションのメニューでHTMLユニコード ☰が検出されない。
-
[解決済み] 現在のテーマでスタイル 'coordinatorLayoutStyle' を見つけることができませんでした。
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み] Xlint:deprecationを使用して再コンパイルする方法
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?