问题描述
我创建了这个 GameView,问题从 t
变量开始,我让它取了我在另一个类中创建的值,因此整个视图崩溃了,当我给它一个精确的值时“例如:t = 75;
”它不会崩溃
总结:
- 我刚刚创建了一个包含变量的类 Constants
。
- 然后在 MainActivity
他们得到一个值。
- 然后当我尝试在 GameView
类中使用它时,它崩溃了。
作为另一个例子,每当我尝试从视图中更改某些内容时,这在视图之外“就像 TextView score
中的文本”一样,视图也会崩溃
这是GameView
类
package com.bks.snakegame;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
import java.util.ArrayList;
public class GameView extends View {
TextView score = findViewById(R.id.txt_score);
private Bitmap bmGrass1,bmGrass2;
private int t = 75*Constants.SCREEN_WIDTH/1080;
private int h = 21,w = 12;
private ArrayList<Grass> arrGrass= new ArrayList<Grass>();
public GameView(Context context,AttributeSet attrs) {
super(context,attrs);
bmGrass1 = BitmapFactory.decodeResource(this.getResources(),R.drawable.grass);
bmGrass1 = Bitmap.createScaledBitmap(bmGrass1,t,true);
bmGrass2 = BitmapFactory.decodeResource(this.getResources(),R.drawable.grass03);
bmGrass2 = Bitmap.createScaledBitmap(bmGrass2,75*1080/1080,true);
for (int i = 0;i<h;i++) {
for (int j = 0; j < w; j++){
if((i+j)%2==0){
arrGrass.add(new Grass(bmGrass1,j*75+1080/2-(w/2)*75,i*75 + 100*1080/1920,75,75));
}else {
arrGrass.add(new Grass(bmGrass2,75));
}
}
}
}
public GameView(Context context,AttributeSet attrs,int defStyleAttr) {
super(context,attrs,defStyleAttr);
}
public GameView(Context context,int defStyleAttr,int defStyleRes) {
super(context,defStyleAttr,defStyleRes);
}
@Override
public void draw(Canvas canvas) {
super.draw(canvas);
canvas.drawColor(0xFF1A6100);
for (int i = 0; i<arrGrass.size(); i++){
canvas.drawBitmap(arrGrass.get(i).getBm(),arrGrass.get(i).getX(),arrGrass.get(i).getY(),null);
}
}
}
这是MainActivity
package com.bks.snakegame;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.displayMetrics;
import android.view.WindowManager;
import android.widget.RelativeLayout;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView score = findViewById(R.id.txt_score);
this.getwindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
displayMetrics dm = new displayMetrics();
this.getwindowManager().getDefaultdisplay().getMetrics(dm);
Constants.SCREEN_HEIGHT = dm.heightPixels;
Constants.SCREEN_WIDTH = dm.widthPixels;
}
}
这是 Constants
类
package com.bks.snakegame;
public class Constants {
public static int SCREEN_WIDTH;
public static int SCREEN_HEIGHT;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)