我刚刚制作了第二个2D游戏应用程序(现在在Android Studio中),遇到了我不了解的东西。什么是位图和位工厂?我看到它与动画一起使用。
我只是从2D动画开始,我们总是欢迎您提供有关动画的额外提示以及我绝对需要了解/应用的内容:)
可绘制资源是可绘制图形的一般概念。最简单的情况是图形文件(位图),它将在Android中通过BitmapDrawable类表示。
每个Drawable都作为单独的文件存储在res / drawable文件夹之一中。通常,将不同分辨率的位图存储在res / drawable的-mdpi,-hdpi,-xhdpi,-xxhdpi子文件夹中。默认情况下,ADT项目创建向导会创建这些文件夹。如果这些位图在其他文件夹中提供,则Android系统会根据设备配置自动选择正确的位图。
如果您未为所有受支持的分辨率提供位图,则Android系统会放大或缩小最接近的尺寸。这通常是不希望的,因为位图可能会变得模糊。
除了图形文件之外,Android还支持XML可绘制图形和9补丁图形。XML可绘制对象用于描述形状(颜色,边框,渐变),状态,过渡等。
如果使用该图形的视图大于该图形,则使用9补丁图形来定义应拉伸图形的哪一部分。
绘图也可以用Java代码编写。每个实现Drawable的对象都可以在代码中用作Drawable。
Android允许您使用Bitmap类来处理位图。本节说明如何通过Java代码创建Bitmap对象,以及如何将Bitmap转换为Drawable对象,反之亦然。
如果需要,您可以在代码中加载任何可访问的位图文件,并将它们转换为Drawables对象。
以下示例代码显示了如何为资产文件夹创建一个位图对象并将其分配给ImageView。
AssetManager manager = getAssets();
// read a Bitmap from Assets
InputStream open = null;
try {
open = manager.open("logo.png");
Bitmap bitmap = BitmapFactory.decodeStream(open);
// Assign the bitmap to an ImageView in this layout
ImageView view = (ImageView) findViewById(R.id.imageView1);
view.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (open != null) {
try {
open.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
您还可以从res / drawable文件夹中将Drawable作为源代码中的Bitmap对象进行访问。下面的代码演示了这一点。
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.ic_action_search);
您可以基于像素中的新的重量和高度定义来创建比例位图。
Bitmap originalBitmap = <initial setup>;
Bitmap resizedBitmap =
Bitmap.createScaledBitmap(originalBitmap, newWidth, newHeight, false);
要将位图对象转换为Drawable,可以使用以下代码。
Drawable d = new BitmapDrawable(getResources(),bitmap);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句