Рисование на экране Android нестандартного х, у - PullRequest
0 голосов
/ 17 июня 2011

У меня проблема с рисованием изображения на экране андроида.Прямо сейчас я пытаюсь сделать порт "Zombie Archer" для Android, и я не уверен, как сделать рисование черепахи и всех зомби на экране.Любые опытные программисты андроид игр, которые хотят мне помочь?Я чувствую, что это должно быть проще, чем добавить относительное расположение и добавить ImageView в это относительное расположение ... просто чтобы отобразить заголовок.Мой код даже не рисует голову.Все, что я вижу, это фон, определенный в файле XML.

РЕДАКТИРОВАТЬ: у меня есть новый метод для этого, используя Canvas после просмотра исходного кода LunarLander.Что я делаю не так сейчас?

ГЛАВНЫЙ КЛАСС:

package com.wickeyware.zombiearcher;

import android.app.Activity;
import android.graphics.Canvas;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;

public class GameActivity extends Activity
{
    private Turtle turtle;
    private Canvas canvas = new Canvas();
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        final Window win = getWindow();
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.game);
        turtle = new Turtle(this);
    }
    @Override
    public void onResume()
    {
        turtle.Draw(canvas);
    }
}

КЛАСС ЧЕРЕПАШЕЙ:

package com.wickeyware.zombiearcher;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;

public class Turtle
{
    // Surface Holder?
    //private SurfaceHolder sh;
    // Background image
    //private Bitmap bmp;
    // All the parts of the turtle
    private Drawable head;
    private Drawable body;
    private Drawable rleg;
    private Drawable lleg;
    private Drawable rarm;
    private Drawable larm;
    private Drawable eye;
    private Drawable mouth;
    private Drawable bow;
    private Drawable tstring;
    private Drawable bstring;
    // Fill the array
    private Drawable[] turtle = {head, body, rleg, lleg, rarm, larm, eye, mouth, bow, tstring, bstring};
    // X,Y coords of turtle
    //private int tX = 0;
    //private int tY = 0;
    // Constructor
    public Turtle(Context context)
    {
        //bmp = BitmapFactory.decodeResource(context.getResources(), R.drawable.default_board);
        // Load up turtle parts with drawables
        turtle[0] = context.getResources().getDrawable(R.drawable.head);
        turtle[1] = context.getResources().getDrawable(R.drawable.body);
        turtle[2] = context.getResources().getDrawable(R.drawable.leg);
        turtle[3] = context.getResources().getDrawable(R.drawable.leg);
        turtle[4] = context.getResources().getDrawable(R.drawable.arm);
        turtle[5] = context.getResources().getDrawable(R.drawable.forearm);
        turtle[6] = context.getResources().getDrawable(R.drawable.eye);
        turtle[7] = context.getResources().getDrawable(R.drawable.mouth);
        turtle[8] = context.getResources().getDrawable(R.drawable.bow);
        turtle[9] = context.getResources().getDrawable(R.drawable.halfbowstring);
        turtle[10] = context.getResources().getDrawable(R.drawable.halfbowstring);
    }
    public void Draw(Canvas canvas)
    {
        for(Drawable part : turtle)
        {
            part.setBounds(0,0,0,0);
            part.draw(canvas);
        }
    }
}

Ответы [ 2 ]

1 голос
/ 17 июня 2011

Вы использовали то же представление для добавления своего представления, но не установили добавленное представление для просмотра содержимого. Я изменил ваш код. Используйте следующий коэффициент.

package com.wickeyware.zombiearcher;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class GameActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        final Window win = getWindow();
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

        RelativeLayout rl = createTurtle();
        setContentView(rl);
    }
    public RelativeLayout createTurtle()
    {
        RelativeLayout rl = (RelativeLayout) View.inflate(this, R.layout.game, null);
        //Turtle turtle = new Turtle(getBaseContext());
        ImageView head = new ImageView(getBaseContext());
        head.setImageResource(R.drawable.head);
        head.setAdjustViewBounds(true);
        //head.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(head.getWidth(), head.getHeight());
        params.leftMargin = 50;
        params.topMargin = 60;
        head.bringToFront();
        rl.addView(head, params);
        return rl;
    }
}

Спасибо Дипак

1 голос
/ 17 июня 2011

Попробуйте поместить setContentView (R.layout.game) перед createTurtle ().

...