关闭/锁定设备后,为什么onDraw()不会恢复?

时间:2014-04-14 15:44:42

标签: android

编辑我对android没有经验;这是我的第一个申请!

我试图在屏幕上绘制一个精灵并在屏幕上移动它。 当我按下主页按钮然后返回应用程序时,绘图停止并按预期继续,但是当我按下电源按钮或锁定按钮时,绘图过程完全停止。有人可以给我一些关于如何处理这个的澄清吗?感谢。

这是代码:

package com.MB2Assignment.assignment;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.Typeface;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.view.View;

public class Graphics extends Activity{

    boolean drawEnabled = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);



        //myView = new CustomView(this);
        setContentView(new FallingMan(this));

    }

    public class FallingMan extends View {

        Bitmap charStand;
        float changingY;
        Typeface font;

        Paint textPaint = new Paint();
        Rect middleRect = new Rect();
        Paint colorBlue = new Paint();


        public FallingMan(Context context) {
            super(context);
            // TODO Auto-generated constructor stub
            charStand = BitmapFactory.decodeResource(getResources(), R.drawable.charstand);
            changingY = 0;
            font = Typeface.createFromAsset(context.getAssets(), "font.tff");
            //drawEnabled = true;
        }

        @Override
        public void onDraw(Canvas canvas) {
            // TODO Auto-generated method stub
            super.onDraw(canvas);



            canvas.drawColor(Color.WHITE);

            textPaint.setARGB(50, 0, 0, 0);
            textPaint.setTextAlign(Align.CENTER);
            textPaint.setTextSize(50);
            textPaint.setTypeface(font);
            canvas.drawText("Behold, The Falling Man", canvas.getWidth()/2, 200, textPaint);

            canvas.drawBitmap(charStand, canvas.getWidth()/2, changingY, null);

            if(drawEnabled == true)
            {
                if (changingY < canvas.getHeight()) changingY += 10;
                else changingY = 0;


                middleRect.set(0,400,canvas.getWidth(),550);

                colorBlue.setColor(Color.BLUE);
                canvas.drawRect(middleRect, colorBlue);

                invalidate();
            }
        }   

    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        super.onBackPressed();
        drawEnabled = false;
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        drawEnabled = false;
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        drawEnabled = true;
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
        drawEnabled = false;
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }



}

1 个答案:

答案 0 :(得分:0)

错误是&#39; invalidate();&#39;在错误的一对括号内。它必须在&#39; onDraw()&#39;范围。