学了一段时间java以及安卓,便想着开发一款小游戏。当然对于开发游戏最基本的view、surfaceView以及Thread就不介绍了,在此仅仅介绍一下安卓游戏的图片自适应。因为如果在开发游戏之前不做图片自适应的话,很有可能会功亏一篑。而我就吃过这样的亏。
刚开始的时候开发了一款游戏是滚屏类的射击游戏。起初在模拟器上面运行,将所有图片通过图片编辑器编好尺寸再放入游戏中使用,结果在模拟器下面可以正常运行,但是到真机上面或者是不一样尺寸的模拟器上面就会出现错误。
那种感觉简直是糟糕透了。那么,我们就需要在游戏开发之前做好图片自适应。
要想做好图片自适应,其实非常简单。我把它分为三个步骤:
1,获取屏幕的宽高。要想获取手机的屏幕大小也是十分简单,仅仅需要三四行代码。
DisplayMetrics dm=new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
float tempWidth=dm.widthPixels;
float tempHeight=dm.heightPixels;
提示:横屏竖屏全屏的设置方式也十分简单,去搜索一下就可以了。
2,编写图片自适应方法
public Bitmap fitToScale(Bitmap bm,double a,double b){ //图片自适应函数
float bitWidth=bm.getWidth();
float bitHeight=bm.getHeight();
float matrixW=(float) ((screenWidth/bitWidth)*a); //按照比例对图片进行扩大以及缩小
float matrixH=(float) ((screenHeight/bitHeight)*b);
Matrix matrix=new Matrix();
matrix.postScale(matrixW, matrixH);
Bitmap newBm=Bitmap.createBitmap(bm,0,0,(int)bitWidth,(int)bitHeight,matrix,true);
return newBm;
}
提示:这里传入的参数就是占屏幕的比率,a是占屏幕横向的比率,b是占屏幕纵向的比率如果设置a,b都为1
图片就会铺满屏幕。
Matrix可以用来设置图形的旋转,平移,倾斜以及缩放。这里使用的是缩放。
最后返回的是Bitmap类型。
3,使用图片自适应函数
bitmap=fitToScale(BitmapFactory.decodeResource("获取资源", "这里放图片"), 1,1);
例如:
bitmap=fitToScale(BitmapFactory.decodeResource(getResources(), R.drawable.bitmap), 1,1);
接下来只要将这张图片画到画板上面,通过改变ab的值就可以画出自己想要大小的图片。
安卓游戏开发,虽然图片自适应的代码很少,但是必不可少。因为是自学的安卓游戏开发,这种方法也是通过搜索以及自己思索才写出来的,所以希望大家多多指正。