簡體   English   中英

為什么關閉/鎖定設備電源后onDraw()無法恢復?

[英]Why won't onDraw() resume after powering down/locking device?

編輯我絕不是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();
    }



}

錯誤是“ invalidate();” 放在錯誤的括號內。 它必須在“ onDraw()”范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM