私はAndroidとJavaを学んでいます。私は他の言語での一般的なグラフィックスやプログラミングに精通しています。レイアウトのサブメンバであるSurfaceViewに2D primtivesを描画するにはどうすればよいですか?
私はいくつかのボタン、テキストビュー、およびすべてのこのようなRelativeLayout内部SurfaceViewとシンプルなレイアウトがあります。
public class MainActivity extends AppCompatActivity
{
SurfaceView surfaceView;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
holder = surfaceView.getHolder();
holder.getSurface();
}
protected void shutdown(View view)
{
System.exit(0);
}
}
:その後、私はこのような単純なMainActivity.javaを持って
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Quit"
android:id="@+id/buttonShutdown"
android:layout_below="@+id/textView2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:onClick="shutdown"/>
<SurfaceView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/surfaceView"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/buttonShutdown"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"/>
を
明らかに、私はカップルのボタンといくつかのtextviewsを持っているので、私のコードはもう少しですが、ポイントはいくつかのウィジェットのレイアウトがあり、SurfaceViewはそれらの1つだけです。
私は表面図に描画する例をいくつか見てきましたが、すべてが画面全体を占めているようです。
残りのコードウィジェットまたはレイアウトウィジェットを削除せずに、2Dラインと素材をそのままSurfaceViewに描画するにはどうすればよいですか?
私は数日間この作業をしてきましたが、他の言語やフレームワークでこれほど多くの努力を払ったことはありませんでした。
と私の既存のレイアウトで動作する作業例の中で、最も感謝します。
UPDATE:
明確にするために、私はとのトラブルを抱えている問題は、その上にキャンバスを得るためにハンドラを取得するためにsurfaceViewのハンドルを取得する方法です。キャンバス・インターフェースを取得すると、ロック、描画、ロック解除ができます。しかし、私はcanvasをsurfaceViewにアタッチする方法を理解できません。
UPDATE:
私は今、表面ビューのためのホルダーを持っていると思うが、どのように私はそれのためにキャンバスを取得するのですか?
は、多くの髪が、私はそれが働いてしまった引っ張った後
ジェシー
私はおそらくあなたがコントロールボタンを含むサイドパネルを作ろうとしていることを理解していて、残りの部分はカスタム図面に使用されていると私は間違っていますか? – Harshiv
Harshiv、あなたは部分的に正しい - 私は、SurfaceViewの外側でコントロールボタンと情報テキストビューを持っていて、彼らはRelativeLayoutのSurfaceViewを持つすべての兄弟です。 SurfaceViewは残りの部分を占める可能性がありますが、それはポイントではありません。それは他のアイテムの兄弟ですが、別のスレッドから色付きの2D線を描きたいのですが、その点以外にもあります。ありがとう、Jesse –
最初に気になることは、onTouch(Event.ACTION_MOVEなんかのような)メソッドのtouch座標をチェックして、もしそれらがsurfaceViewエリアにあるならば 'else '戻ります。 – Harshiv