为什么显示位图有初始延迟

时间:2017-06-23 04:33:36

标签: android handler

我正在尝试翻译Bitmap所以我只是更新它的x和y所以它会对角移动以了解线程,但问题是当应用程序启动时,Bitmap不会显示up,我注意到延迟与我在处理程序的postDelayed方法中设置的时间有关,但我认为这个postDelayed方法只能控制位图在屏幕上移动的速度,而不是我打开时显示的位图延迟应用程序。

public class MainActivity extends Activity {

Canvas canvas;
InnerView innerView;
Handler mHandler;
Bitmap thisBitmap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    thisBitmap =
            BitmapFactory.decodeResource(getResources(), R.drawable.my_image);

    mHandler = new Handler();
    innerView = new InnerView(this);
    setContentView( innerView);
}

class InnerView extends SurfaceView implements Runnable {
    Thread ourThread = null;
    SurfaceHolder ourHolder;
    Paint paint;
    int posX = 100;
    int posY = 100;

    public InnerView (Context context) {
        super(context);
        ourHolder = getHolder();
        paint = new Paint();
    }

    @Override
    public void run() {
        update
        draw();
        mHandler.postDelayed(this, 2000);
     }

    public void update() {
       posX += 10;
       posY += 10;
    }

    public void draw() {
        if (ourHolder.getSurface().isValid()) {
            canvas = ourHolder.lockCanvas();

            canvas.drawColor(Color.BLACK);//the background
            paint.setColor(Color.argb(255, 255, 255, 255));
            canvas.drawBitmap( goodDotList[0], posX, posY, paint);
            ourHolder.unlockCanvasAndPost(canvas);
        }
    }

   }//END inner class: InnerView


}//END MainActivity class

0 个答案:

没有答案