我的屏幕不想刷新。

6 浏览
0 Comments

我的屏幕不想刷新。

我有一个问题,我相信解决起来并不复杂,但无论我做什么都不起作用!这是我的问题:我有这个布局








关键在于点击最后一个占满整个屏幕的ImageView来开始实例化其他视图。

这是我如何做的:

public class GameScreen extends Activity {
ImageView imgEmpty, img1, img2;
TextView tvTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.layout_second);
    img1 = (ImageView)findViewById(R.id.image_1);
    img2 = (ImageView)findViewById(R.id.image_2);
    imgEmpty = (ImageView)findViewById(R.id.image_empty);
    imgEmpty.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            img1.setBackgroundResource(R.drawable.feuille);
            img2.setBackgroundResource(R.drawable.feuille);
            tvTimer.setTextSize(95);
            for(int i=0; i<3; i++) {
                imgEmpty.setVisibility(View.GONE);
                try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); Log.d("Ratatataaa","Y passe pas !!!!"); }
                tvTimer.setText(""+i);
                view.invalidate();
            }
        }
    });
    tvTimer = (TextView)findViewById(R.id.text_timer);
    tvTimer.setTextSize(50);
    tvTimer.setText("Ready ?");
}
}

无论我做什么(invalidate(),...),屏幕只在onClick(View view)结束时刷新。请帮忙。

0
0 Comments

我的屏幕不刷新的问题出现的原因是在代码中存在一些错误的实现。例如,在主线程中使用了sleep()方法,以及在错误的位置初始化了TextView

为了解决这个问题,可以尝试以下方法:

1. 将代码中的sleep()方法替换为其他方法,避免在主线程中使用该方法。

2. 在正确的位置初始化TextView,避免出现错误。

下面是修改后的代码示例:

....
img1 = (ImageView)findViewById(R.id.image_1);
img2 = (ImageView)findViewById(R.id.image_2); 
tvTimer = (TextView)findViewById(R.id.text_timer);
tvTimer.setTextSize(50);
tvTimer.setText("Ready ?");
imgEmpty = (ImageView)findViewById(R.id.image_empty);
imgEmpty.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        img1.setBackgroundResource(R.drawable.feuille);
        img2.setBackgroundResource(R.drawable.feuille);
        tvTimer.setTextSize(95);
        imgEmpty.setVisibility(View.GONE);
        view.invalidate();
        new CountDownTimer(3000, 1000) {
            public void onTick (long millisUntilFinished) {
                tvTimer.setText("" + ((int)(3000 - millisUntilFinished)/1000));
            }
            public void onFinish () {}
        }.start();
    }
});
....

0
0 Comments

问题原因:屏幕不刷新的原因可能是由于没有及时更新屏幕内容的机制。

解决方法:通过添加Handler和Runnable来解决屏幕不刷新的问题。

具体步骤如下:

1. 首先,在代码中添加Handler和Runnable。可以参考以下示例代码:

Handler handler = new Handler();
Runnable runnable = new Runnable() {
    @Override
    public void run() {
        // 在此处添加需要更新屏幕的代码
        // 例如,更新UI界面或者重绘视图等操作
    }
};

2. 然后,在需要刷新屏幕的地方调用Handler的post方法,并传入上述的Runnable对象。例如:

handler.post(runnable);

这样,当调用post方法后,Runnable中的run方法将会被执行,从而更新屏幕的内容。

通过以上步骤,可以解决屏幕不刷新的问题。

如果需要更多相关信息,可以参考这个链接

0