我的屏幕不想刷新。
我的屏幕不想刷新。
我有一个问题,我相信解决起来并不复杂,但无论我做什么都不起作用!这是我的问题:我有这个布局
关键在于点击最后一个占满整个屏幕的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)结束时刷新。请帮忙。
我的屏幕不刷新的问题出现的原因是在代码中存在一些错误的实现。例如,在主线程中使用了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(); } }); ....
问题原因:屏幕不刷新的原因可能是由于没有及时更新屏幕内容的机制。
解决方法:通过添加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方法将会被执行,从而更新屏幕的内容。
通过以上步骤,可以解决屏幕不刷新的问题。
如果需要更多相关信息,可以参考这个链接。