問題タブ [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.

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

android - Android カスタム ビュー ビットマップ メモリ リーク

2 つのビットマップを描画する必要があるカスタム ビューがあります。1 つはマップのイメージを表す背景で、もう 1 つはキャンバスの上部/左側の位置に描画されるピンです。

両方の画像は onDraw で描画され、ビューを含むアクティビティのライブ中は同じままです。しばらくすると、

OutOfMemoryError: ビットマップ サイズが VM の予算を超えています

これは、リークがあり、ビットマップのガベージ コレクションが行われないことを意味します。以前も質問しましたが、状況が少し変わりました。使用したいビットマップを設定する init メソッドを作成しましたが、これはまだ良い方法ではありません。後でエラーが表示されますが、まだ残っています。

ここにコードがあります

ビューを含むアクティビティの onCreate で setMapBitmap() と init() を呼び出します。そこでは、どのビットマップがマップとして使用されるかを知っています。アクティビティの onPause ビューの destroy() を呼び出します。それでもエラーが発生します。これを読んだことがありますが、自分のケースに適応させる方法がわかりません

私は他の解決策を受け入れます。マップ ビットマップのサイズを変更し (マイ アクティビティに含まれるレイアウトの高さに基づいて)、正しい場所に位置を描画できるようにする必要があることに注意してください。

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

android - Android - 動的に挿入されたカスタム ビューで onDraw が呼び出されない

カスタム ビューが動的に挿入されていますonDrawが、呼び出されていません。最初に動的挿入なしでカスタムビューを作成しましたが、正常に機能しましたが、それを作業中のコードベースに移動するとonDraw、ビューコンストラクターが呼び出され、onMeasureも呼び出されますが、呼び出されません。私はその場所に置いinvalidate()postInvalidate()呼び出してみましたが、ビューを強制的に描画するようには見えません。ビュー階層は両方のバージョンで同じように見え、迷っています。

誰でも助けることができますか?

編集: もう少しテストonDrawしたところ、エミュレーターで呼び出されていることが示されていますが、ハンドセットでは呼び出されていません。またonSizeChanged、ハンドセットでは正しい値が送信されますが、エミュレータでは値はすべて 0 です。

編集:私はそれで遊んでいますが、まだどこにも行けないので、賞金をかけました. さらにコード / xml / 情報が必要な場合は、お知らせください。

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

android - View の onDraw メソッドが Android 2.2 で何度も呼び出される

私は Android 開発に不慣れで、ビューにグラフィック描画を実装しようとすると難しい問題に遭遇します。

私がやりたいのは、ビューにグラフを描くことです。View を ScrollView に配置し、View の onDraw メソッドをオーバーライドして、onDraw で描画を行います。最も重要なことは、チャートにスクロール機能が必要なことです。私がオーバーライドするビューの onDraw メソッドには、チャート内の座標計算と多くの必要な要素 (線、点、軸、ラベルなど) の描画が含まれます。ご想像のとおり、可視領域だけでなく、画面外も含めた全体のグラフを計算して描画します。問題は、ScrollView をスクロールするときに onDraw メソッドが何度も呼び出されるため、パフォーマンスの問題が発生し、スクロール ビューの実行が非常に遅くなることです。最初の呼び出し後に onDraw の呼び出しを防ぐ方法を見つけようとしていましたが、運が悪かったです。onDraw が呼び出されると、同じことを何度も計算する必要がありますが、これは必要ありません。

皆さん、何か答えはありますか?ありがとう。

0 投票する
4 に答える
25546 参照

android - Canvas.drawColor()を使用してキャンバスをクリアする

カスタムビューの背景画像を変更しようとしていますが、成功しています。画像は変更されますが、問題は、古い画像の痕跡がまだ表示されていることです。新しい画像を描画する前にキャンバスをクリアしようとすると、機能していないように見えます。画像を保存するためのビットマップを作成します。画像を変更するときは、新しい画像を描画する前にCanvas.drawColor()を呼び出しますが、古い画像は保持されます。drawColor(0)、drawColor(Color.BLACK)、c.drawColor(0、PorterDuff.Mode.CLEAR)を試しましたが、上記のいずれも機能しません。そういうものとして、私は私よりも経験豊富な心からのレビューのためにこれを投稿しなければなりませんでした。

実際のコードは次のとおりです。

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

android - カスタムフォントを使用したカスタムテキストビュー

独自のカスタムフォントを使用するカスタムテキストビューを実装しようとしています。

Super.onDraw()を実行する前に書体を設定する方法はありますか?

通常のフォントを使用したいカスタムフォントに置き換えるためです。

何かのようなもの:

上記のコードが機能しないことはわかっています。

または、drawText()を使用する以外に選択肢はありませんか?

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

android - AndroidでonClickを描画する

2つのEditTextフィールドからのユーザー入力値を使用してグラフを作成するプログラムを作成しようとしています。プログラムは、この入力を使用して、軸の中心から情報で指定された点まで線を引く必要があります。クリックするたびに指定したポイントに新しい線を作成するボタンがあります(複数の線が存在する可能性があります)。軸を保持するカスタムビューを作成しましたが、これは明らかにonDrawメソッドを利用しています。新しい線を引くのにも使えません。

カスタムビューのコードは次のとおりです。

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

android - クラス間でキャンバスを共有しますか?

私は Android 用のアプリを作成しており、View を拡張するクラスをセットアップしています。そのクラス内で onDraw を上書きしています。

私は多くの処理を行っている別のクラスを持っています。2番目のクラス内でもonDrawメソッドを使用できる方法があるかどうか疑問に思っていましたか? 2 番目のクラスは何も拡張していません。

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

android - onDraw()on Viewは、レイアウトの背後に描画します

わかりました、これが取引です。拡張ギャラリークラスのアイテムを移動して、画像の順序を変更したい。私が今それをしている方法:

  • 長押しすると、現在選択されているアイテムが削除されます。
  • onDraw()同じ画像を描画するために使用して、を使用して画像を移動できるようにしますonTouchEvent()
  • リリース時にアイテムを再度追加します

これは正常に機能しますが、問題は、このonDraw()メソッドを使用すると、ギャラリーアイテムの背後に画像が描画されることです。描かれるものの優先順位を変更する方法はありますか?

0 投票する
0 に答える
679 参照

android - 拡張ギャラリーでの getSelectedItem() の問題

拡張クラスgetSelectedItem()で自分の関数を呼び出すときに奇妙な問題が発生しています。何らかの理由で、自分のオブジェクトを期待しているときに戻ってきます。アダプタをデバッグして調べると、オブジェクトでいっぱいになっていることがわかります。私が期待するものを返さない理由は何ですか?onDraw()GalleryInteger

編集: インデックスを返しているようです。

編集: 図を見てください、私の側の悪いコード。私のアダプターでは、次のことを行いました。

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

android - onDraw塗りつぶし図形はcanvas.drawLineで作成します

長方形を描くために4本の線(canvas.drawLine)を描きます。長方形の領域を埋める可能性はありますか?(私はアンドロイドがrectDrawを持っていることを知っています。私のものは好奇心だけです)

前もって感謝します。


わかりました。パスセグメントを作成したパスもあります。コードに従って..内部領域を埋める方法を説明できますか?