1

わかりました、要素のパディングを編集するアプリケーションによって成長および縮小するジャガイモの写真がある基本的なアプリを作成しています。私は本当にスレッドが初めてで、スリープ/待機で何か間違ったことをしていることは確かです。

これが私のコードです。それは比較的自明です:

package com.Potato.growingpotato;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;

public class GrowScreen extends Activity {

    private Thread thread;
    private Handler handler = new Handler();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_grow_screen);
        thread = new Thread() {
            public void run() {
                growPotato();
                handler.postDelayed(this, 1000);
            }
        };
        thread.start();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_grow_screen, menu);
        return true;
    }

    @Override
    public void onResume(){
        super.onResume();
        handler.removeCallbacks(thread);
        handler.postDelayed(thread, 0);
    }

    public void HarvestPotato(View view) {
        ImageView ThePicture = (ImageView) findViewById(R.id.imageView);
        ThePicture.setPadding(150,150,150,150);
        thread.start();
    }

    public void NapTime(int Time) { //Try to make the application sleep for 'Time'
          try {
              Thread.sleep(Time);
            } catch (Exception e) {
              e.getLocalizedMessage();
            }
    }

    public void growPotato() { //Fancy Padding manipulation 
        long base = System.currentTimeMillis();
        long WorkingNum = 0;
        ImageView PotatoPicture = (ImageView) findViewById(R.id.imageView);
         do {
            NapTime(100);
            WorkingNum = 150 - ((System.currentTimeMillis() - base)/100);
            PotatoPicture.setPadding((int)WorkingNum, (int)WorkingNum, (int)WorkingNum, (int)WorkingNum);
        } while(WorkingNum > 5 );

    }

    @Override
    protected void onPause() {
        super.onPause(); 
        handler.removeCallbacks(thread);
    }
}

起動後にアプリがフリーズし、真っ白な画面のまま。最終的に、画像がフル サイズでポップアップ表示され、ボタンも表示されます。ボタンを押すと完全にフリーズします

4

0 に答える 0