問題タブ [android-view-invalidate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - ListView フッターを更新する
選択した言語に応じて動的に変更できるを含むListView
フッターがあります。別の言語を選択すると、アイテム
が更新されます。View
TextView
ListView
BaseAdapter :
フッターを更新するために、私はこれを行っていました:
これは機能しませんでした。テキストは変更されませんでした。ただし、を次のものに置き換えると機能invalidate();
します。
注: 私のListView
要素はTextViews
、選択した言語に従って翻訳されたものであり、数を増減することもできます。View
フッターが変更されることはありません。テキストが翻訳されるように更新したいだけです(正しいvalue-(lang)/strings.xmlが選択されます)。
私の質問は、最初のアプローチが機能しないのはなぜですか? 私が考えることができる唯一の説明は、 は再度invalidate();
呼び出さずsetText()
、 を再描画するだけだということView
です。ListView
アダプターが再度読み込まgetView()
れる場所で再度呼び出すため、で機能しましTextViews
た。この仮定は正しいですか?
ありがとう。
android - 部分的な無効化がビュー全体に及ぶのはなぜですか?
Android ビューを部分的に無効にしようとしています。View.invalidate( l, t, b, r ) を使用すると、垂直方向 (上と下) の値が正しく無効化されているように見えますが、使用する左右の値に関係なく、ビュー全体が無効になります。
たとえば、私のビューは灰色です。緑色の領域を無効にしたいのですが、緑色と赤色の領域が無効になります。これは常に、ビューを完全に横切る水平方向全体に及びます。View.invalidate( 0, 0, 50, 50 ) などの小さな値を設定しようとしましたが、それでもこの動作が発生します。
なぜこうなった?
android - ListViewのinvalidate()とinvalidateViews()の違いは?
ListView.invalidate() と ListView.invalidateViews() の違いは何ですか?
私にとっては、invalidate() だけでは機能しませんでした。一方、invalidateViews() は思いどおりに機能しました。つまり、リスト項目を再描画しました。
android - Android の invalidateDrawable() が機能しない
カスタムビューにドローアブルがたくさんあります。ユーザーが 1 つまたは複数のドローアブルを押すと、色が変わるようにしたいと考えています。現在、各ドローアブルはStateListDrawable
2 つの状態 (state_pressed
押されていない) のみです。ドローアブルを押すたびにsetState
trueが返されるので、実際に変更されていると想定していますが、ドローアブルの画像が変化することはありません。invalidateDrawable
何もしていませんか?私は何を間違っていますか?customView.invalidate()
呼び出しを必要とせずに毎回すべてを再描画することなく、押されたときに1つのドローアブルを再描画するにはどうすればよいですか? 私はもともとそれを行っていましたが、アプリの実行が非常に遅い/非効率的であることがわかりました。ありがとう!
流れ:
クラス内のボタン タッチのコードを次に示しますTouchKey
(MyTouch は、Android デバイス上のすべてのタッチを追跡するカスタム クラスです)。
StateListDrawable
カスタム ビューでの描画方法:
java - Android キャンバスの遅れ
クラスのプロジェクトを作成していますが、遅延の問題が発生しています。マップがロードされると、何も起こらないので、戻って再ロードする必要があり、しばらくの間は機能するか、いくつかの移動を行った後、次の移動が可能になるまで携帯電話/エミュレーターが数秒かかります. これが私のクラスのセットアップ方法です。
メインコントローラーとしてマップクラスがあります。マップは異なりますが、すべて同じように機能します。マップ クラスは、空の相対レイアウトを使用して通常のようにレイアウトからコンテンツ ビューを設定し、ノード、ラインを作成し、プレイヤーが実行するさまざまな動きをチェックするゲーム ルール クラスを持ちます。ノード、ライン、およびゲーム ルールのクラスは View を拡張するため、onDraw() で、定義された座標で四角形を描画し、それらをマップ クラスのビューに追加します。プレーヤーの操作に応じて、ラインとノードは postInvalidate() を呼び出して数値または色を更新します。ゲームルールクラス内では、勝者または敗者を常にチェックし、誰のターンであるかを示しますが、 onDraw() 内に無効化()があるため、常に再描画されます。描画される 6 つ以上のノードと 10 以上の線があり、ゲーム ルールがすべてをオーバーレイします。
sleep() の使用が理想的ではないことはわかっていますが、ゲーム ルール クラスが作成されてから onDraw() 内で無効化を使用して以来、私はこれを経験しています。私は外出中ですが、後でコードを投稿できます。このプロジェクトに取り組んでいる他の人が Android に触れたことがないので、私もこのプロジェクトでキャンバスを使用して立ち往生しています。
前もって感謝します!
TL;DR: canvas を使用して最適化するにはどうすればよいですか?
android - invalidate() を呼び出すときにタイマーが Android で機能しない
グレー、白 (背景に合わせて)、そして再びグレーのパスを描画して、点滅効果を作成したいと考えています。3回点滅して、1秒間灰色を表示し、1秒間白を1秒間灰色で表示したい.
Handler
forを作成したときpostDelayed()
、プログラムは run() をスキップし、タイミング セットで実行せず、点滅も発生しませんでした。
このようなフラッシュ機能をタイマーで実装し、3 回フラッシュするにはどうすればよいですか?
ありがとう!
java - カスタム ビュー クラスの onDraw が Invalidate によって呼び出されない
画面は白く、onDraw 内の System.out.println() は呼び出されません。
これは私の activity_main.xml です
カスタム ビュー クラス:
主な活動: