問題タブ [android-canvas]

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.

0 投票する
7 に答える
182095 参照

android - キャンバスに描画可能な画像

その画像に描画するために、キャンバスに画像を取得するにはどうすればよいですか?

0 投票する
1 に答える
1787 参照

android - アンドロイドのハッチブラシスタイル

キャンバスにハッチングされた四角形を描画する (斜めのストローク) のヘルプが必要です。今では手動で作成する以外に方法が見つかりません。何か案は?

0 投票する
2 に答える
959 参照

java - キャンバスの描画をSDカードに保存する

私は現在、白い色の背景( canvas.drawColor(Color.WHITE);)のキャンバスと、いくつかの色でペイントできる漫画のスケッチ画像を使用したキャンバスの描画に取り組んでいます。問題は、キャンバス画像を保存しようとすると、色が付いた黒い画面だけが保存され、キャンバスの白い背景もスケッチ画像も表示されないことです。このコードを使用してキャンバスを保存しています

、、、、Thnxを事前に助けてください

0 投票する
1 に答える
4358 参照

android - ライブ壁紙 + ビットマップ + キャンバス

みなさんこんにちは!私は魔女にこのライブ壁紙を持っています。キャンバスにビットマップを表示しようとしています (描画可能なリソースは 400k 1900x1200 jpg です)。強制終了し、理由がわかりません (これが私の最初の Android プロジェクトです)。これらは「重要な」ビットです。

そして、電話で実行しようとしたときのlogcatエラーは次のとおりです。

ありがとうございました!:)

======================= ニュース:

ビットマップがnullのようです。現在、メモリの問題がないことを確認するために、480x800 で作業しています。if ステートメントでアプリがクラッシュしなくなりました (空の黒い画面)。

0 投票する
1 に答える
4873 参照

android - キャンバスに複数のビットマップを描画する方法

キャンバス機能に問題があります。キャンバスで1つのビットマップを描画するのに問題はありませんが、2番目のビットマップを追加するとすぐに、最後のビットマップのみが描画され、両方が表示されません。助けてください。これが私のコードです。私の意図は、これら2つの異なるビットマップを画面上で個別にアニメーション化することです。

ありがとう

0 投票する
3 に答える
18522 参照

android - ビューの背景にドローアブルを設定するには? アンドロイド

EditText を拡張するカスタム ビューに次のコードがあります。

このビューの背景に何もな​​いのはなぜですか?

0 投票する
2 に答える
2179 参照

android - Android の drawBitmap(...) メソッドは遅いですか?

SurfaceView を使用して Android ゲームをプログラミングしています。

SurfaceView によって取得されたキャンバスは、サイズ 80x80 の 32 ビット PNG 画像をアルファ レイヤーで描画します。メソッド drawBitmap にかかる時間は 2 ~ 3 ミリ秒です。

このような小さな画像を描画するのは通常の時間なのでしょうか、それとも舞台裏で暗黙の変換が行われているのでしょうか?

描画する必要がある約 40 個のゲーム オブジェクト (スプライトに基づく) があり、それらすべてを 1 回のパスで描画するのに約 100 ミリ秒かかります。これは非常に遅く、動的なゲームでは 10 FPS しか提供されません。アンチエイリアシングをオフにする、アルファをオフにするなど、多くのことを試しましたが、役に立ちませんでした。

少なくとも 25FPS を得るには、描画時間を最適化するにはどうすればよいですか?

ありがとう、ズラトコ

0 投票する
1 に答える
690 参照

android - Android - キャンバスへの同時アクセスは安全ですか?

タイルをグリッド上で移動する必要があるグリッド + タイル アクティビティを作成しています。グリッド (およびタイル) は、UI とは別のスレッドで surfaceView に描画されます (UI はタッチ イベントを処理し、グリッドが処理するためにそれらをキューにプッシュします)。

これで問題ありません。タイルをドラッグできるツールバーがあります。ツールバーは、相対レイアウトに追加された (そして UI スレッドで実行される) ビューです。

何回同期を使用したり、キャンバスが同時に書き込まれないように保護しようとしても、最終的にはネイティブ SIGSEV11 が発生します。

いくつかの潜在的な解決策:

  • すべてを 1 つのスレッドに入れる - タッチとドローが原因で失敗するか、非常に遅くなる可能性があります
  • 単一のスレッドでキャンバスにアクセスするすべてのものを描画します。

これには、おそらく数日かかる大規模な変更が必要になります。

他の誰かが同様の問題を抱えているかどうか、キャンバスへのアクセスをエラーなしで同期できるかどうか疑問に思っています。

どうもありがとう。

0 投票する
2 に答える
133115 参照

android - 空のビットマップを作成し、Android でキャンバスを使用して描画する

空のビットマップを作成し、キャンバスをそのビットマップに設定してから、ビットマップに任意の形状を描画したいと思います。

0 投票する
2 に答える
740 参照

android - Android: スレッドが断続的に一時停止する

アプリケーション内のランダムなポイントで断続的に一時停止しているスレッド (CanvasThread) に問題があります。アプリ内の他のすべての機能は引き続き必要に応じて機能します。何らかの理由でランダムにブロックされ、画面に新しいものを描画しないのはこのスレッドだけです。Surface.lockCanvasNative() がブロックの前に呼び出される最後の関数のようで、最初の関数がブロックの後に返されることに気付きました。そのようなパターンで:

これは、以下の traceview で明らかです。 凍結したスレッドの traceview

CanvasThread.run()それが役立つ場合、私は以下を使用しています:

他に役立つ情報があれば教えてください。この時点でスレッドがブロックされている理由についての手がかりを探しているだけですか? 事前に助けてくれてありがとう!

それ以来、ブロックを絞り込んで、mSurfaceHolder.unlockCanvasAndPost(canvas);この呼び出しの前後にログを挿入しましたが、アプリがフリーズした後はログが記録されません。ただし、前のログは、このスレッドで最後にログに記録されたイベントです。これらのインスタンスのログも投入したため、null キャンバスを一時停止したり使用したりすることはありません。アプリが完了するまで一度もログに記録されません。