プロジェクトに XML と View クラスのどちらを使用する必要があるかを尋ねたところ、可能なことはすべて XML で行い、残りはクラスを使用する必要があるとのことでした。スプライトのアニメーションは XML ではできないと言われたので、ビュー クラスを作成したいと思いました。これについて「LayoutInflater」をグーグルするためのヒントを得て、そうしました。
インフレータに関する情報はあまりないので、android の開発者データベースにアクセスして、これがどのように機能するかを調べようとしました。
私の知る限り、メインのゲーム アクティビティの onCreate メソッドに何かを入れる必要があります (setContentView は mainXML でなければなりません)。
そこで、mainXML で LinearLayout を作成し、それを「コンテナ」と呼び、これを「親」と呼ばれる ViewGroup にしました。
これで、グローバル変数「private View view」を作成し、次の行を書きました。
view = LayoutInflater.from(getBaseContext()).inflate(new ViewClass(this),
null);
Thw 問題は、このようなクラスを膨らませることができないことです。私はこの膨らませること全体を間違っていると思います。
mainXML に LinearLayout を配置し、View クラスのコンテンツを表示できるようにするためのヒントやコツはありますか?
編集:
エラーなしで動作するようになりましたが、今ゲームを開始しても何も起こりません。
解決策がある場合は、コードplsの回答を次に示します。
super.onCreate(savedInstanceState);
// inflate mainXML->
View mainView = getLayoutInflater().inflate(R.layout.activity_game, null);
// find container->
LinearLayout container = (LinearLayout) mainView.findViewById(R.id.container);
// initialize your custom view->
view = new GameLayout(this);
// add your custom view to container->
container.addView(view);
setContentView(R.layout.activity_game);
そして私のGameLayout:
public GameLayout(Context context)
{
super(context);
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawColor(Color.BLACK);
}