当我向视图组添加新视图时,Android游戏会生成空白屏幕

时间:2014-04-30 16:57:02

标签: android

我正在为我的游戏设置多个视图,所以我创建了一个视图组,目前只有一个,当我运行程序时,我得到一个空白屏幕,这是我的游戏视图类(ViewGroup)的代码:

import android.content.Context;
import android.view.ViewGroup;
import java.io.FileNotFoundException;

public class GameView extends ViewGroup {

    private MainActivity activity;

    public GameView(Context context,MainActivity activity) throws FileNotFoundException
    {
        super(context);
        this.activity = activity;
        Graphics v = new Graphics(this,activity,context);
        addView(v);


    } 
    @Override
    protected void onLayout(boolean b, int i, int i2, int i3, int i4) {

    }
}

这是我的图形类的代码(View):

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;


import java.io.IOException;

/**
 * Created by Anonymous on 4/29/14.
 */

public class Graphics extends View implements Runnable,Button.OnTouchListener {
    private Thread thread;
    private boolean running = false;
    private Player p;
    private MainActivity activity;
    private Button b;
    GameView view;
    public Graphics(GameView view,MainActivity activity,Context context){
        super(context);
        this.view = view;
        this.activity = activity;
        p = new Player(400,600,activity);

    }

    public synchronized void start()
    {
        if(running)
            return;
        running = true;
        thread = new Thread(this);
        thread.start();
    }
    public synchronized void stop()
    {
        if(!running)
            return;

        running = false;
        System.exit(0);

    }

    @Override
    public void run()
    {
        Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        while(running)
        {
            onDraw(c);
            tick();

        }

    }

    public void tick()
    {
        p.tick(this);

    }


    @Override
    protected void onDraw(Canvas canvas)
    {
        try
        {
            p.render(canvas);

        }catch (IOException e)
        {

        }


    }

    public boolean onTouch(View view,MotionEvent e){
        int action = e.getAction();
        switch(action)
        {
            case MotionEvent.ACTION_DOWN:

                p.setY(p.getY()+1);
                break;
        }


        return false;
    }
}

1 个答案:

答案 0 :(得分:0)

尝试在您的Activity中添加addView。

如果您需要多次追加视图,只需多次调用addView即可。请注意,ViewGroup是一个抽象类,因此您可以更快地使用LinearLayout来添加视图。 LinearLayout本身就是一个ViewGroup。

尝试我的建议,如果你遇到某个地方,请在这里发布你新活动的代码(请不要发布你的旧活动),并告诉我们为什么你认为你被卡住了。

对于其他阅读此内容的人,如果您需要更多上下文,请参阅此original question,其他人要求他分成两部分。