什么是位图和位工厂,为什么人们将其与动画一起使用?

鲁比·霍夫维克(Ruby Hoofwijk)

我刚刚制作了第二个2D游戏应用程序(现在在Android Studio中),遇到了我不了解的东西。什么是位图和位工厂?我看到它与动画一起使用。

我只是从2D动画开始,我们总是欢迎您提供有关动画的额外提示以及我绝对需要了解/应用的内容:)

希伦·吉尼(Hiren Jungi)

什么是位图?

可绘制资源是可绘制图形的一般概念。最简单的情况是图形文件(位图),它将在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

什么是PPA?为什么人们将其用于Nvidia图形?

来自分类Dev

为什么人们不推荐使用 PdfRenderer 显示 PDF?

来自分类Dev

为什么人们在只有一个元素时使用 html 中的类

来自分类Dev

为什么AOP和DI很少一起使用

来自分类Dev

为什么MockMVC和Mockito不能一起使用?

来自分类Dev

为什么filter和rowSums不能一起使用?

来自分类Dev

SFINAE和衰变不能一起使用。为什么?

来自分类Dev

为什么不将向量和列表一起使用?

来自分类Dev

为什么 HHVM 和 NGINX 一起使用?

来自分类Dev

为什么HMR和chunkhash不能一起使用?

来自分类Dev

为什么人们似乎暗示我宁愿不使用Boost?

来自分类Dev

为什么人们大多使用I18n.t方法而不是委派?

来自分类Dev

为什么人们仍然在新项目中使用angular 1.4?

来自分类Dev

为什么人们使用翻译占位符而不是简单的英语?

来自分类Dev

UIButton与动画一起显示和消失

来自分类Dev

为什么DES只能与56位密钥一起使用?为什么明文的长度必须为64位?

来自分类Dev

隐藏的jQuery无法与CSS动画一起使用

来自分类Dev

为什么不能要求构造函数并立即将其与browserify一起使用?

来自分类Dev

为什么不能要求构造函数并立即将其与browserify一起使用?

来自分类Dev

为什么我的按位运算不能在Java中与`int`一起使用?

来自分类Dev

为什么将xor与文字而不是反转一起使用(按位不行)

来自分类Dev

什么是fileAPI?如何将其与angular一起使用?

来自分类Dev

为什么人们在骨干视图渲染的第一行中正式执行this。$ el.html()?

来自分类Dev

为什么人们在骨干视图渲染的第一行中正式执行this。$ el.html()?

来自分类Dev

为什么人们在使用双核CPU时建议使用-j3选项进行制造?

来自分类Dev

为什么人们在C ++中的头文件名中不使用大写字母?

来自分类Dev

为什么人们不会只使用微控制器中的最大可用时钟

来自分类Dev

为什么使用扩展语法可与基元和函数一起使用?

来自分类Dev

内部类和公共构造函数-为什么它与Activator.CreateInstance一起使用?

Related 相关文章

  1. 1

    什么是PPA?为什么人们将其用于Nvidia图形?

  2. 2

    为什么人们不推荐使用 PdfRenderer 显示 PDF?

  3. 3

    为什么人们在只有一个元素时使用 html 中的类

  4. 4

    为什么AOP和DI很少一起使用

  5. 5

    为什么MockMVC和Mockito不能一起使用?

  6. 6

    为什么filter和rowSums不能一起使用?

  7. 7

    SFINAE和衰变不能一起使用。为什么?

  8. 8

    为什么不将向量和列表一起使用?

  9. 9

    为什么 HHVM 和 NGINX 一起使用?

  10. 10

    为什么HMR和chunkhash不能一起使用?

  11. 11

    为什么人们似乎暗示我宁愿不使用Boost?

  12. 12

    为什么人们大多使用I18n.t方法而不是委派?

  13. 13

    为什么人们仍然在新项目中使用angular 1.4?

  14. 14

    为什么人们使用翻译占位符而不是简单的英语?

  15. 15

    UIButton与动画一起显示和消失

  16. 16

    为什么DES只能与56位密钥一起使用?为什么明文的长度必须为64位?

  17. 17

    隐藏的jQuery无法与CSS动画一起使用

  18. 18

    为什么不能要求构造函数并立即将其与browserify一起使用?

  19. 19

    为什么不能要求构造函数并立即将其与browserify一起使用?

  20. 20

    为什么我的按位运算不能在Java中与`int`一起使用?

  21. 21

    为什么将xor与文字而不是反转一起使用(按位不行)

  22. 22

    什么是fileAPI?如何将其与angular一起使用?

  23. 23

    为什么人们在骨干视图渲染的第一行中正式执行this。$ el.html()?

  24. 24

    为什么人们在骨干视图渲染的第一行中正式执行this。$ el.html()?

  25. 25

    为什么人们在使用双核CPU时建议使用-j3选项进行制造?

  26. 26

    为什么人们在C ++中的头文件名中不使用大写字母?

  27. 27

    为什么人们不会只使用微控制器中的最大可用时钟

  28. 28

    为什么使用扩展语法可与基元和函数一起使用?

  29. 29

    内部类和公共构造函数-为什么它与Activator.CreateInstance一起使用?

热门标签

归档