問題タブ [ondraw]
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 - onDraw()内でinvalidate()を呼び出すのは良いプログラミング手法ですか?
invalidate()
内部を呼び出すことは良いプログラミング慣行onDraw()
ですか?
invalidate()
私の理解によると、内部に電話をかけるのonDraw()
は費用がかかり、キャンバスに変更がなければ必要ありません。
invalidate()
の非同期バージョンと同等ですかonDraw()
?
私の理解によると、それらは同等です。私が間違っている場合は私を訂正してください。ありがとうございました。
android - Android で画面上の 2 点間のパスを計算する
問題は最初は非常に単純に思えましたが、今は行き詰まっています。
シナリオ 私が作成した特定のパス上で、画面上の画像を移動したいと考えています。この画像の移動は、次のようなスレッドで行われています。
移動したい画像の場合、移動先の主要なポイントを含むリストがあります。各座標には次のものがあります。
たとえば、最初のポイントは -5;-30 で、2 番目のポイント 50.50 に到達する必要があります。画像を描画するための次の座標の計算は updateImageCoordinates() で行われます。私の問題は、点 A から点 B に直線で到達するように、speedX と speedY を計算する方法がわからないことです。基本的に updateImageCoorindates() を実行するたびに、次のことを行う必要があります。
座標を知っていても、x 方向と Y 方向の速度を計算する方法がわかりません。
例として画像を添付します。どんな助けでも大歓迎です。
android - (Android) ビュークラスの外に画像を描画 (キャンバスアクセス?)
View のオーバーライド クラス (例: MyView extends View) を含むライブラリを作成し、メソッド "Draw(String FileName)" を作成したいと考えています。
したがって、最終的にやりたいことは、このライブラリをインポートし、この「Draw(String FileName)」メソッドを呼び出して、他のアクティビティから画像を描画することです。
私は自分で試しましたが、onDraw() メソッドが実際に持っているメイン Canvas へのアクセスで問題が発生しました。
onDraw() メソッド関数ですべての画像を描画すれば簡単ですが、クラス外からのものを配置する方法がわかりません。
この構造のアイデアはありますか?
android - カスタムビューの描画可能領域は他のフィールドをカバーします
垂直方向のプログレスバーのようなカスタムビューがあります。これは単なるカスタムビューであり、キャンバスに描画して下から上に完了率で塗りつぶします。私のxmlには、カスタムコントロールの上にテキストがあり、下にテキストがあります(これらのうち、左側に1つ、右側に1つ、右側に1つあります)。
カスタムビューでは、考えられるあらゆる方法で高さをチェックしますが、常に画面の下部までの高さを取得します
これまで、レイアウトのビューを反転させてみたので、上部のテキストが最初(上に配置)、下部のテキストが2番目(下部に配置)、カスタムコントロールが最後(レイアウト_下部のテキストの上)になり、両方がmatch_parentになります。とwrap_content、無駄に。線形レイアウトに変更しようとしましたが、それでも良い結果は得られませんでした。
コードで示されている場合、上部のテキストは表示されますが、下部のテキストは表示されません。カスタムビューが下部のテキストの上にlayout_aboveになるように順序を変更すると、下部のテキストが表示されるように描画領域が上に移動しましたが、上部のテキストは覆われていました。私が一番下のテキストがなくなったと言うとき、私は単に覆われただけでなく、なくなったことを意味することに注意してください。私の最後のテストは、layout_heightをレイアウトの「350dp」にハードコーディングすることでした。
すべての場合において、高さがハードコーディングされている場合でも、この特定のデバイスでは常に489の高さが得られます。画面の中央部分を描画して残りをそのままにしておくために何をする必要があるのか理解できません。カスタムビューはレイアウトの最後のものと見なされますか?これを機能させる唯一の方法は、カスタムビューがレイアウトの最後になるように順序を変更して、カスタム領域の下部が下部のテキストの上に表示され、下部のテキストが引き続き表示されるようにしてから、手動で追加することです。上部に約150(つまり、onDraw()に提供されるキャンバスにゼロを書き込まないでください)なので、上部のテキストはカバーされません。幸い、私が描いているグラフィックは半透明なので、テキストが覆われているか、なくなったかを確認できます。
誰かがこれがどのように機能することになっているのかについてもっと情報を持っていますか?実際の問題よりも混乱したことを説明することができましたか?
ありがとう、gb
android - Android: postInvalidate() を無視する SurfaceView?
これを使用するのは初めてなので、コードのバグなのか、許可されていないことをしようとしているのかわからない.
現在、run メソッドでこれを行う DrawThread() があります。
この描画スレッド (非 UI スレッド) では、onDraw() メソッドがキャンバスを drawScoreboard() という別のメソッドに渡します。このメソッドがスコアボードの各行を表示する間に短い遅延を持たせたかったので、onDraw() が再度トリガーされることを期待して postInvalidateDelay(x) を追加しました。
コードは正しく実行され、postInvalidateDelayed() IS が呼び出されますが、onDraw() が呼び出されない理由に困惑しています。これを機能させるために必要なフラグや初期化はありますか?
アドバイスや理論は大歓迎です。ありがとう!
android - Android 用のカスタム ウィジェットを作成する
回転するimageViewを作成しようとしています。これ (http://stackoverflow.com/questions/1930963/rotating-a-view-in-android) を見ると、onDraw をオーバーライドする必要があることがわかります。
しかし、独自の派生 TextView クラスを作成する場合、それを xml レイアウトでどのように使用すればよいでしょうか?
android - OnDraw() メソッドが呼び出されない
したがって、私のクエリは、ボタンをクリックすると、ビュー内のオブジェクトの正確な位置が (x,y) の形式で表示されますが、その x,y をコンテキストと共にビューに渡そうとしました。その x,y にオブジェクトを配置し、終了するまでプロセスを繰り返す必要があります。
したがって、コントロールはビューに移動していますが、問題は、指定された x、y でオブジェクトを描画する責任がある OnDraw() メソッドが呼び出されないことです。
android - AndroidSurfaceViewがonDrawを表示しない
質問を簡単にするために、SurfaceViewに整数を描画しています。整数は描画ごとに1ずつ増加します。System.outで確認できるように、実際には増加が発生します。画面上のテキストは「0」のままです。私が間違っていることを誰が教えてくれますか?
SurfaceViewTest.java
StatusView.java
main.xml
android - Android WebView での Flash - レイヤの問題
フラッシュを含む Android WebView にインタラクティブ ボタンを配置しようとしています。テストとして、設定された x/y サイズを使用して HTML をフラッシュでロードするように設定しました。
}
フラッシュの上半分、未使用のキャンバスの上半分にオーバーレイするテスト画像をセットアップしました。ロードされると、Flash はキャンバス ドロー上にロードされ、HTML 上の部分だけが残ります。
この質問に対する答えは、adobe のフラッシュ プレーヤーが webview 内に surfaceview を作成すると述べています。これがレイヤリングの問題の原因だと思いますが、それを克服する方法がわかりません。
誰かがこれをオーバーライドする方法を知っていますか? ボタンはキーイベントもフラッシュに送信する必要があります(オンスクリーンボタンを押してAキーをフラッシュに送信するなど)。これもやり方が分かればとても助かります
android - Android の複数の SurfaceView
1つの画面で3つのSurfaceViewを操作しようとしています.1つは上半分(BoardView)、もう1つは下半分(StatusView)、最後の1つは上半分の上の追加レイヤー(TileView)です(main.xmlを参照)。 .
BoardView、StatusView、および TileView によって拡張されるクラス MySurfaceView を作成しました。
これには複数の問題があります。
まずコードを教えてください。
main.xml:
MainActivity.java:
MySurfaceView.java
これら 3 つのクラスは MySurfaceView を拡張します。
BoardView.java
StatusView.java
TileView.java
今、私の問題は何ですか?
まず、MySurfaceView でわかるように、私はこれを持っています:
onDraw(c) のみを使用すると、BoardView のみが描画され、StatusView は描画されませんが、StatusView の onDraw で tmp のインクリメントが実行されています。postInvalidate() のみを使用すると、同じ話ですが、StatusView のみが描画され、BoardView は描画されません。そのため、両方の方法を使用し、両方のビューが描画されます。
次に、TileView があり、System.out(2) が logcat に表示されていますが、ビューは描画されません。赤い四角ではなく、黒い四角です。onDraw メソッドで指定します。
画面をオフにしてから再度オンにすると、TileView が描画され、tmp の増分が表示されます。
誰が私を助けることができます?
わかりやすくするために、このチュートリアルに基づいてこれを作成しました。