問題タブ [surfaceview]
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 - SurfaceViewの寸法を取得する
ダミーの質問をするかもしれないと思いますが、私はまだAndroidプログラミングに慣れておらず、(すべての努力にもかかわらず)Googleで答えを見つけることができませんでした。
問題は、2Dグラフィックスを使った小さなゲームを開発しようとしているということです。ボックスの上下にゲーム内の情報を表示できるように、「ゲームボード」を画面の特定の位置に配置したいと思います。しかし、Androidスマートフォンがたくさん出始めているので、フォントサイズをすべてのデバイスに適応させるために、「動的」な値を取得することを考えていました。
私のゲームはフルスクリーンではありませんが(大したことではないかもしれませんが)、タイトルバーのないウィンドウにあります。
SurfaceView
デフォルトクラスの拡張機能を使用して、を実装していますSurfaceHolder.Callback
。私は次のメソッドを書いてみました:
ただし、返される値はゼロです。
誰かがアイデアを思いついた(それが表示戦略を変更することを意味するとしても)?どうもありがとう。
android - SurfaceViewをサブクラス化し、onDraw()をオーバーライドして、SurfaceViewパラメーターを変更し、目的のサイズのプレビューを生成します
SurfaceViewをサブクラス化し、アクティビティのonCreateでインスタンス化しました。プレビューは生成されますが、SurfaceViewのサブクラスでオーバーライドされるonDraw()にコントロールが入ることはありません。何故ですか?
Surfaceにプレビューを描画する前に、実装されている場合、onDrawコールバックにコントロールを与えるべきではありませんか?
onDrawコールバックはAndroidフレームワークに'と言っているので、ビューを描画しません。実装してから描きます」私は正しいですか?
それでは、なぜコントロールはonDraw()に入ることができないのですか?助けてください。
android - Android ビューまたは surfaceView、どちらを使用すればよいですか?
スクロール可能/ズーム可能なアプリを作ろうとしてきましたが、ビットマップの描画以外はすべてうまくいきました。タイルに分割したのは非常に大きな画像 (6656 x 4096) です。ビットマップが描画される長方形配列があり、左上隅にある長方形を検出して、ユーザーの表示可能な画面を覆うビットマップを描画できるようにします。私の問題は、アプリがビットマップをメモリにロードする必要があるときに、これがすべて遅れることです。それらがロードされると、それは問題ではありません。512 x 512 のタイルから始めて、128 x 128 に減らしました。これは役に立ちましたが、まだ顕著な遅延が残っています。私は SurfaceView を調べていて、View を使い続けるか、それとも SurfaceView を使用してラグを解決するかについて意見を求めました。
android - SurfaceとCanvasの関係:Android
SurfaceとCanvasの関係は正確には何ですか。
説明してください。
android - GestureOverlayView を SurfaceView クラスに追加します。ビュー階層に追加するにはどうすればよいですか?
後の回答で、コードで作成した GestureOverlayView をビュー階層に追加する必要があると通知されましたが、その方法は 100% ではありません。以下は、完全を期すための元の質問です。
ゲームでジェスチャーを認識できるようにしたい。スプライトを描画するために onDraw を実行するこの素敵な SurfaceView クラスがあり、それを実行して onDraw などを呼び出すスレッドがあります。
これはすべてうまくいきます。
これに GestureOverlayView を追加しようとしていますが、うまくいきません。最後にクラッシュしないところまでハッキングしましたが、これが私が持っているものです
onGesturePerformed は呼び出されません。彼らの例では、xml に GestureOverlay が含まれています。私はそれを使用していません。私のアクティビティは単純です。
したがって、ここで欠落している情報が少し失われています。onGesturePerformed は呼び出されず、きれいな黄色の「ジェスチャーを描いています」は表示されません。
android - GLSurfaceView の null ポインター例外を拡張する Android OpenGL
OpenGLビューの上にレイヤー化された追加のビューを持つAndroid用のシンプルな3-Dアプリを作成しようとしています(APIデモのSurfaceViewOverlayの例によく似ています)。拡張された GLSurfaceView クラスを使用してそのメソッドを実装しようとすると、問題が発生します。このデモと API Oerlay デモを組み合わせて実行しようとしている例を設定しました。このように Martin の VortexView オブジェクトにキャストしようとすると (API デモの 44 ~ 46 行を置き換えます)
ClassCastException エラーが発生するので (キャストはかなり具体的であると想定しているため、理解できます)、ビューを GLSurfaceView インスタンスから新しいサブクラスに転送する方法、またはレンダリング サーフェスを作成後のサブクラスの XML 定義ビュー。
編集:これを機能させるためにいくつかの進歩を遂げました-ビューXMLが使用するAPIの例(ApiDemos/res/layout/surface_view_overlay.xmlから)
その要素を
com.domain.project.VortexView に変更すると、上記のコードでキャストが正しく行われますが、surfaceCreated および surfaceChanged ルーチンにヒットすると Null Pointer Exceptions が生成されます (これは、GLThread クラスに基づいて呼び出されたメソッドだと思います)。行番号) GLSurfaceView クラス内。したがって、質問を変更する必要があるかもしれません- surfaceCreated および surfaceChanged で NullPointerExceptions を生成せずに GLSurfaceView の拡張機能を実装するにはどうすればよいですか、または GLSurfaceView.java のソースがなくてもそれらをデバッグするにはどうすればよいですか?
android - 透明なImageButtonを作成する方法:Android
これは、SurfaceViewにこれらのボタンを配置するために透明なImageButtonを取得しようとしたものです。しかし、Eclipseでは、xmlに透明な行を含めるとすぐに、プロジェクトでエラーが発生します。
助けてください。
android - ViewGroup.addView() を使用して GestureOverlayView を SurfaceView ゲーム パネルに追加する
ここの善良な人々からの多くの助けの後、GestureOverlayView を使用して、小さなゲーム パネル (サーフェスビュー クラス) をほぼ実行できるようになりました。addView を使用することで、最終的に GestureOverlayView を追加して動作させることができました。問題は、これを呼び出すことです。
私が与えるインデックスに応じて、どのビューが優先されます。これにより、ゲーム パネルを子ビューとして GestureOverlayView に追加する必要があると思われますが、これは正しいですか? もしそうなら、GestureOverlayView の子ビューを取得するにはどうすればよいですか? それとも逆で、GestureOverlayView はメイン ビューの子になりますか?
java - 新しい要素でAndroidSurfaceViewをオンザフライで更新します
次の形式のレコードで満たされたデータベースがあります。私のアプリケーションに実行させたいのは、外部データベースからレコードを選択し、SurfaceViewを使用してそれらのレコードを電話の画面に表示することです。
現在、アプリケーションの記録収集部分を担当するアクティビティとサービスがあります。アクティビティはインテントをサービスに渡し、サービスは表示する必要のあるレコードを返すことで応答します。レコードはDataクラスのインスタンスとしてプログラムに保存され、ビュー内の要素を描画する場所の画面座標を持っているだけです(DB内のすべてのレコードに円を描画しているだけです)。
簡潔にするために、サービスは含めませんが、Activityクラスのスケルトンと表示したいデータを含めます。
私が抱えている問題はSurfaceViewに関係しています。多くの人が私が通常のビューだけを使用することを提案することを理解していますが、私のアプリケーションには多くの要素が含まれているため、SurfaceViewは私のニーズにはるかに適しています。以下は、スレッドを管理するためのネストされたクラスを含む、SurfaceViewクラスのスケルトンです。
私が抱えている問題は、Panelクラスを最初に呼び出すと、サービスから新しいレコードを取得することになり、その結果、InfoMapのデータ構造が更新されることです。ただし、私のPanelクラスはループに陥り、新しいDataオブジェクトを受け取ることはありません。私が見つけたSurfaceViewのすべての例には、SurfaceViewクラス自体のメソッドの更新が含まれています(たとえば、画面に触れて新しい画像を作成するなど)。悲しいことに、私はこの特定の問題に困惑しています。Activity / SurfaceViewインタラクションを設計するためのより良いアプローチはありますか?追加のビューが必要ですか?
android - プログラムの起動時以外にいつでもゲーム スレッドで SurfaceView を起動できますか?
私の問題を解決するためにいくつかのサンプルプログラムとチュートリアルを読みましたが、それらはすべて同じように進んでいるようです。いくつかのアクティビティと xml ドキュメントを使用して、ゲームの開始時に読み込まれるメニューを作成しました。ユーザーが [ゲームを開始] ボタンをクリックすると、ゲーム スレッドとすべてのゲーム プロパティでビューを設定する新しいアクティビティが読み込まれます。独自のプロジェクトとして単独で実行したため、このアクティビティが機能することはわかっていますが、メニューの後に開始しようとするたびに、nullPointerException が発生し、強制終了します。SurfaceViewOverlay チュートリアルを読み、その実装を使用しようとしましたが、GLSurfaceView ではなく SurfaceView を使用しています。OpenGL を使用するようにプログラム全体を書き直すことについて議論していますが、ここで私が間違っていることを誰かが知っているかどうかを確認できると考えました。
助けてくれてありがとう、アーロン