学习安卓UI开发的时候一定少不了做2048这款游戏来练手,从网上的极客资源学习下来或者是下载的其他的工程都会出现一个问题,在低版本的安卓手机上可以完美运行,但是换到安卓高版本的手机就显示不出界面。对于这个网上有很多的解决方法,有些重写了startgame()函数,在代码的改写方面一些大佬说的很简单,但是这对于新手而言好像不容易理解。这里我给出大家一个基于极客的源码的调整的方案。可以百分百解决界面不显示的问题。
如果解决了你的困扰,可以点个赞支持一下我。
代码改动:在GameView这个class中写一个方法getCardWitch()来返回卡片的尺寸。
private int getCardWitch(){
//声明屏幕对象
DisplayMetrics displayMetrics;
displayMetrics = getResources().getDisplayMetrics();
int cardWitch;
//提取屏幕宽
cardWitch = displayMetrics.widthPixels;
return (cardWitch-10)/4;
}
然后在initGameView()中调用addCards()。
private void initGameView(){
setColumnCount(4);
setBackgroundColor(0Xff28004D);
addCards(getCardWitch(),getCardWitch());
setOnTouchListener(new OnTouchListener() {
...............................
...........................
});
}
注意这里initGameView()中不要调用startGame(),否则你会发现游戏会闪退,因为在游戏逻辑初始化之前加入startGame()时GameView的构造函数析构了以后才会调用那句计分清零。(startGame中的第一句)
在onSizeChanged()中进行startGame(),这时候就不用addCards()了。
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
startGame();
}
亲测安卓10有效运行的代码改动,当然更改的方法不止一种,我只是给大家提供一种思路。希望大家集思广益可以提供更好修改策略