問題タブ [android-custom-view]

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 投票する
1 に答える
1892 参照

android - コードで FrameLayout を拡張する Android カスタム コンポーネント

ゲーム用の Android カスタム コンポーネントを作成したいと考えています。基本的な考え方は、カスタム コンポーネントの形状が正方形で、その中に他の正方形の ImageView コンポーネントが含まれているというものです。内部の ImageView コンポーネントは、必要に応じて拡大または縮小できますが、正方形のままにする必要があります。行数 == 列、常に。難易度によって、実行時の行と列の正確な値が決まります。ゲームが難しくなるにつれて、行と列の数は等しく増加しますが、各 ImageView のスケーリングされたサイズはそれに応じて縮小します。ほとんどの場合、見栄えがよくなるように、コンポーネント間に一定の小さな間隔を置きたいと思います。ディスプレイはスクロールできません。すべてのアイテムが同時にディスプレイに収まる必要があります。

何度も失敗した後、私はイライラしてきており、このカスタム コンポーネントを作成するのが最善の方法であることがわかりません。

私の最新のアイデアは、おおよそ次のことを行うことです。

「FrameLayout を拡張」して、カスタム コンポーネント クラスを作成します。私のコンストラクターでは、任意の小さな正方形の ImageView オブジェクトをコードで作成します。いつか私のカスタム コンポーネントを他の人に再利用してもらいたいので、カスタム コンポーネントが外部 XML ドローアブルの定義に依存しないように、XML ではなくコードでそれを行います。ImageView が「直角」を維持するようにスケール タイプを設定します (fitStart が必要だと思いますか?)。正方形の ImageView の layout_width と layout_height を「fill_parent」に設定したため、ImageView は、含まれている FrameLayout で利用可能なスペースをできるだけ大きく埋めます。addView() を使用して、大きくて正方形の ImageView をレイアウトに追加します。

次に、RelativeLayout オブジェクトを作成し、addView() を使用してプログラムで自分自身に追加します。私の基本クラスは FrameLayout であるため、これにより RelativeLayout のサイズが以前に追加した正方形の ImageView と同じになると思います。少なくとも私はそのようにドキュメントを読みました。

次に、ImageView を測定して、その大きさを確認します。以前の試みがこれで失敗したため、自分自身を測定できるとは思いません。私は自分のサイズで0を取得し続けました。私の調査によると、これは建設中に自分自身を測定できないためです。これがCatch-22になりました。使用可能なスペースに合わせて画像を拡大しようとしたとき、まだ使用可能なスペースがなかったためできませんでした。私の希望は、FrameLayout を基本クラスとして使用するように変更し、そこに ImageView を追加したため、新しく作成され、正しくスケーリングされた大きな正方形の ImageView を測定できるようになることです。

すべてが計画どおりに進むと、ImageView と同じであるため、ユーザーのデバイスで RelativeLayout に使用できるスペースの大きさがわかります。使用可能なスペースの量と、表示する必要がある行と列の数を把握することで、追加する ImageView 間の間隔を考慮することを覚えていると仮定して、追加する各 ImageView を適切にスケーリングできます。これで、正方形の ImageView は不要になり、必要に応じて削除できます。

合理的であれば、大きな ImageView の角を丸くし、追加された各 ImageView も角を丸くしたいと思います。ImageViews の間に小さなギャップを追加すると、これはゲームプレイにとってクールに見えます。このように、背景として残すことができます。

これは良い解決策のようで、うまくいかなかった私の以前の試みよりも優れていますが、もっと良い方法があれば...、私は聞いています.

私の理解の範囲内で、上記とほとんど同じことを言っている疑似コードを次に示します。

私の最も基本的な質問は、これが合理的な解決策のように見えるかどうかです。もしそうなら、疑似コードには(まだ)やり方がわからないことがたくさんあります。

  • コードで小さな正方形の ImageView を作成するにはどうすればよいですか?
  • コードで scaleType を設定するにはどうすればよいですか?
  • 正方形の ImageView を測定して正しいサイズを取得できますか?
  • 非表示にする以外に、正方形の ImageView を削除するより良い方法はありますか?
  • 正方形の ImageView を非表示にすると測定不能になりますか?
  • ShapeDrawable と呼ばれるものがありますが、これは正方形を作成するための ImageView よりも優れていますか?
  • ImageView を正方形にトリミングして、損失を両側に均等に分配するにはどうすればよいですか?

もちろん、これらすべての回答を知っている人はいないと思いますが、共有できる回答があれば教えていただければ幸いです。

ありがとう。

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

android - カスタムビューでTextViewを更新します

アクティビティにハーフスクリーンのカスタムビューとTextViewがあります。

カスタムビューをクリックしたときに、アクティビティのTextViewを更新するにはどうすればよいですか?

現在、カスタムビューにこのコーディングがありますが、その部分onTouchEvent()でNullPointerExceptionが発生します。setText()カスタムビューでTextViewを更新しないでください。

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

android - SurfaceViewがビューをクリッピングしています

独自のカスタムViewGroupをプログラムして、複数の子ビューを表示したり、動的に移動したり回転させたりできるようにしました。また、このカスタムViewGroupを、カメラプレビューを常に背景として持つために、カメラプレビューを表示している背景SurfaceViewと組み合わせます。

Camera SurfaceViewなしでViewGroupを使用するだけですべてが正常に機能しますが、Camera SurfaceViewを追加すると、画像に示されているように、この奇妙なクリッピング動作が発生します。ビューを移動または回転した場合にのみクリッピングが発生することに注意してください。元の場所ではクリップが解除されているように見えます。

次の画像では、青い線は、カスタムViewGroupのすべての子ビューで呼び出すlayoutメソッドに渡される子ビューの囲み長方形であると想定されています。

public void layout(int l、int t、int r、int b)

http://developer.android.com/reference/android/view/View.html#layout(int、int、int、int

赤い線は気にしないでください。

私の仮説は、ViewGroupが最初に作成されたとき、元の子ビューの位置のみが考慮され、これがそれらのために予約されているスペースであるというものです。そして、私がそれらを回転させるとすぐに、それらは元の長方形にクリップされます。

270度回転:

カメラの背景なしで270度回転

カメラの背景についても同じです(カメラはスクリーンキャプチャに表示されないため、黒でもあります):

カメラの背景で270度回転

320度回転:

カメラの背景なしで320度回転

カメラも同じ

カメラの背景で320度回転

0度回転:

カメラの背景なしで0度の回転

カメラも同じ

カメラの背景で0度回転

これがコードの断片です。私はたくさんのものを切り取りましたが、これは非常に基本的な機能です(mLayoutは私のカスタムViewGroupです):

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

android - xml からのカスタム ビューの使用。クラスキャストエラーを表示

コードを実行すると、ビューの XML レイアウトを初期化するときに java.lang.ClassCastException: android.view.View が発生します。

なんで?

アップデート

問題は、ビュー要素内にボタンを追加していたためです。この配置を修正し、再び機能しました

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

android - カスタム ビューを XML レイアウトに追加すると例外がスローされる

GraphView最初のカスタム View サブクラスを作成し、それをレイアウト XML ファイルに追加しようとしています。

私はこのSOの質問を見つけて、それを自分のプロジェクトに適用しようとしましたが、Eclipse IDEが教えてくれるので、何かが間違っているようです:

そして例外をスローします:

これが私のレイアウトです:

そして私のコード:

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

android - インフレートxmlと子ノードを使用したカスタムLinearLayout

私は共通のビューがあるカスタムナビゲーションクラスを持っているので、カスタムクラスによって膨らませられる1つのレイアウトにそれらを配置し、メインレイアウトにいくつかのナビゲーションアイテムを置くことを考えていました。

現在、linearlayout を拡張すると、xml 内のビューが膨張したビュー内のすべてのビューを置き換えます (このコードをコンストラクターに配置します)

レイアウトを膨らませて xml 実装の子を取得し、それを 1 つのビューに配置する方法はありますか? お気に入り

膨らませるレイアウト

メインレイアウトで使用

私の質問は、メニュー 1 とメニュー 2 を navigationItemHolder 内に配置するにはどうすればよいですか? ありがとう

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

android - Androidカスタムビューを作成するには?

ユーザーの選択に応じて、6 x 6 または 5 x 5 または 4 x 4 のグリブに分割できる写真がアプリにあります。

ピースを収容するタイルビューを作成する方法を誰かに教えてもらえますか?ユーザーはピースをビュー内で移動できるはずです。

どんな助けでも大歓迎です。

ありがとう。

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

android - カスタムビューのスタイリング

Androidプロジェクトにいくつかのカスタムビューがあり、関連する詳細をattrs.xmlファイルに追加しました。これで、XMLを介してオブジェクトを実装できます。これは正常に機能します。

これらの要素のスタイルを設定するにはどうすればよいですか?styles.xmlでカスタム属性を使用しようとすると、「指定された名前に一致するリソースが見つかりません:」というエラーが発生します。

通常のxml開発でカスタムビューを使用するには、xmlns:app="http://schemas.android.com/apk/res/bla.bla.bla"を使用します。スタイルで使用するための正しいものは何ですか?

これが私のスタイルの現在の姿です

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

java - アンドロイド。検索/ヘルプ: カスタム ビュー + キャンバスとビットマップの非常に基本的なコード「フレーム」

ここでいくつかのトピックを調べて、ヘビ月のランチャーを研究しましたが、プロジェクトを適切に開始する方法がまだわかりません。(プロジェクトは: 既存の javascript/xml ゲームを android/Java に移植することです。)
これまでに見つけたすべての例は、私にとっては行き過ぎであるかすべてを自分で統合して定義することになっているいくつかのコード行 (コンストラクター) のいずれかです。等。)。

私の問題は次のとおりです。 「アプリのロジック」は機能していますが、「理論的な」 Java の知識(学習!) しかありません。

私が必要とするのは: X/Y 値が定義されたキャンバスに配置された 3 つのビットマップ ("tile1.png" .. "tile3.png") を持つカスタム ビュー ("customGame") を定義するいくつかのコード行 (クラス?) .
それは本当にすべてです!
...そして:誰かがタッチ/クリックされたビットマップを識別する簡単な方法/方法についても言及してくれれば幸いです。

私は、この最初のステップから自分の道を見つけることに自信を持っています。したがって、私は(まだ) ほとんどの人が笑うかもしれないコードの軽微な欠陥を修正することができません! してください:明らかな脱落を認識することに依存しないコードのみを投稿してください。

  私にこのような大きな恩恵を与えるために時間を費やしてくれる人には、本当に感謝しています!!!

クレメンス(ドイツ出身のグラフィックアーティスト)

0 投票する
11 に答える
53169 参照

android - カスタム ビューで Android の onClick メソッドが機能しない

アプリの開発を開始しました。昨日メニューを作成しましたが、onClick メソッドが機能しません。View を拡張して彼女の MainMenuObject と呼ばれるクラスを作成しました。このクラスは、メイン メニューの任意のオブジェクト (ボタン、ロゴなど) 用です。メニューの開始時にアニメーションを実行しているため、特別なクラスを作成しました。MainMenuObject クラスを構築した後、View を拡張する別のクラス (OpeningTimesView) を構築しました。このクラスにはメイン メニューのすべてのボタンが含まれ、メイン アクティビティのレイアウトとして機能します。

すべてがうまくいき、アニメーションは非常にうまくいき、ボタンにリスナーを配置したかったので、onClickListener の実装を OpeningTimesView クラスに追加し、onClick メソッドをオーバーライドしました。次に、setOnClickListener(this) と setClickable(true) を使用してリスナーをボタンに追加しましたが、機能しません。私はすべてを試しました!私が間違っていることを理解するのを手伝ってください。「if」に依存しないonClickメソッドにトーストを追加しましたが、どちらも表示されません。

(ところで、すべてのクラスがアクセスできる変数として画面の幅と高さを定義する方法はありますか?表示オブジェクトから高さと幅を取得するため、静的にすることはできませんが、別の方法が必要です)

これはコードです:

前もってありがとう、エラド!