Можете ли вы помочь мне, пожалуйста. Я кодирую игру Android с surfaceView , но в RunTime холст показывает только белый цвет. Почему ничего не появляется?
Это код, который должен нарисовать.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout llLienzo=findViewById(R.id.llLienzo);
llLienzo.addView(new GameView(getApplicationContext()));
}
}
public class GameView extends SurfaceView {
private Bitmap bmp;
private SurfaceHolder holder;
public GameView(Context context) {
super(context);
holder=getHolder();
holder.addCallback(new SurfaceHolder.Callback() {
@SuppressLint("WrongCall")
@Override
public void surfaceCreated(SurfaceHolder holder) {
bmp=Bitmap.createScaledBitmap(
BitmapFactory.decodeResource(getResources(), R.drawable.icon),
getWidth(),
(int)(getWidth()*0.75),
false);
Canvas canvas=holder.lockCanvas();
onDraw(canvas);
holder.unlockCanvasAndPost(canvas);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
});
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp, 10, 10, null);
}
}
Это снимок экрана: (*