动态壁纸和扩展背景

2024-01-05

我正在尝试创建一个动态壁纸,其动画始终位于当前主屏幕页面的中心,而不会丢失扩展背景。 我现在正在做的是绘制自定义背景位图,然后在其上绘制一些文本。

这是我的并条方法:

        final SurfaceHolder holder = getSurfaceHolder();
        Canvas canvas = null;
        try {
            canvas = holder.lockCanvas();
            if (canvas != null) {

                if(mBackgroundBitmap != null) {
                    canvas.drawBitmap(mBackgroundBitmap, 0, 0, null);
                } else {
                    canvas.drawColor(Color.BLACK);
                }
                drawText(canvas);
            }
        }
        finally {
            if (canvas != null ) holder.unlockCanvasAndPost(canvas);
        }

它确实有效,但显然当我在主屏幕上更改页面时,我得到了固定的背景图像,而不是像我使用大壁纸时那样的不同“部分”。

我还尝试在锁定画布之前设置壁纸,但它无法按预期工作:

if(mBackgroundBitmap != null) {                 
                try {
                    setWallpaper(mBackgroundBitmap);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
final SurfaceHolder holder = getSurfaceHolder();
    Canvas canvas = null;
    try {
        canvas = holder.lockCanvas();
        if (canvas != null) {
            drawText(canvas);
        }
    }
    finally {
        if (canvas != null ) holder.unlockCanvasAndPost(canvas);
    }

如何在更改主屏幕页面时保持大背景“移动”,但添加一些以当前页面为中心的动画?


我已经知道如何解决了!

    void drawFrame() {
        final SurfaceHolder holder = getSurfaceHolder();

        Canvas canvas = null;
        try {
            canvas = holder.lockCanvas();
            if (canvas != null) {
                canvas.save();
                canvas.translate((float) mxOffset, 0f);

                if(mBackgroundBitmap != null) {
                    canvas.drawBitmap(mBackgroundBitmap, 0, 0, null);
                }

                canvas.restore();
            }
        }
        finally {
            if (canvas != null ) holder.unlockCanvasAndPost(canvas);
        }
    }

mBackgroundBitmap 是我想要绘制为壁纸的位图,其宽度是屏幕宽度的两倍。

mxOffsets 是在重写的 onOffsetsChanged 中获取的:

    @Override
    public void onOffsetsChanged(float xOffset, float yOffset,
            float xOffsetStep, float yOffsetStep, int xPixelOffset,
            int yPixelOffset) {
        super.onOffsetsChanged(mxOffset, yOffset, xOffsetStep, yOffsetStep,
                xPixelOffset, yPixelOffset);

        mxOffset = xPixelOffset;
        drawFrame();
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态壁纸和扩展背景 的相关文章

随机推荐

  • PHPUnit 仅从命令行运行。为什么?

    我有以下代码 当我在浏览器中打开 PHP 文件时 出现以下错误 致命错误 找不到类 PHPUnit Framework TestCase 但是 如果我使用命令行 它工作正常 phpunit 本地路径 testcase php Result
  • 拥有大量数据库时遇到问题?

    我们构建了一个托管 Web 应用程序 该应用程序的开发方式是将每个客户连接到单独的数据库 该应用程序是一个网络平台 发布系统 到目前为止 该设计一直运行良好 我们还有一个主数据库 现在我们即将对定价模式进行一些更改 这将引入免费帐户 这应该
  • 如何在VS2010中创建新的项目类型?

    我已经弄清楚如何创建一个新的template 但我需要比这多一点的力量 例如 我需要覆盖当您单击 运行 按钮时发生的情况 我希望它启动开发服务器 然后弹出打开我的网络浏览器 那么 如何添加全新的项目类型呢 更好的是 我如何才能将其基于其他项
  • WordPress has_comments 不起作用

    我在 WordPress 中设置了 comment 条件 这个条件是在 comments php 中设置的 就像 wordpress 默认主题一样 然后使用comment template加载整个comments php文件 现在 当我删除
  • 如何设置UnderlineSpan的颜色?

    这个问题是我上一个问题的后续问题 如何像 Android 拼写检查器一样突出显示文本 https stackoverflow com questions 14530546 how to highlight text like android
  • 减少大数据集 DOM 元素的策略

    我有一个大型数据集 想使用 dc js 显示 条目数量远远超出了屏幕上可用的绘图空间 以像素为单位 因此 在 500 像素宽的图表上渲染 20k 点是没有意义的 而且还会降低浏览器的速度 我读了维基百科的性能柚木部分 https githu
  • 在 GitHub 操作中检索已修改文件的列表

    我目前正在使用foo 软件 lighthouse check action https github com foo software lighthouse check action自动完成审核 但自从urls必须进行硬编码 当只想审核提交
  • MySQL 5 星级数据类型?

    对于必须介于 1 和 5 之间的产品评级 ENUM 1 2 3 4 5 是否是一个合理的数据类型 Thanks 是的 这将是一个合适的数据类型 因为它强制执行您的域 但是 如果您要将它们相加 或进行任何其他数学运算 那么数字数据类型可能会更
  • 导入错误:没有名为“spacy.en”的模块

    我正在开发一个使用 Spacy 的代码库 我使用以下命令安装了 spacy sudo pip3 install spacy 进而 sudo python3 m spacy download en 在最后一个命令结束时 我收到一条消息 Lin
  • 在junit中使用@rule检查错误代码

    I found Rule中的注释jUnit为了更好地处理异常 有没有办法检查错误代码 目前我的代码看起来像 没有 Rule Test public void checkNullObject MyClass myClass null try
  • Ruby Net::SFTP 的公钥/私钥身份验证

    我无法找到用于指定 SFTP 身份验证密钥的文档 想要有类似的东西 export SOME PRIVATE KEY cat tmp some certs privatekey pem then somewhere in the code p
  • 无法在模拟器中运行应用程序:运行时遇到错误(域 = LaunchServicesError,代码 = 0)

    在配置配置文件出现问题后 我无法在模拟器中运行我的应用程序 我正在 Xcode 6 beta 4 中进行快速编码 在证书配置文件出现问题之前 这一切都很好 我尝试过清理构建 检查 xCode6 beta4 的命令行是否运行 检查了构建部署
  • jQuery(反)模式:使用字符串操作构建选择器

    我经常发现自己使用字符串操作 拆分 搜索 替换 连接 连接 来构建选择器 是好是坏 这有什么问题吗 有什么替代方案 只是将它们硬编码为单个字符串 但是您可以在网站上使用约定来组织布局 如果您只是在一个地方定义选择器组件 并使用它来构建选择器
  • 使用 monotouch 在 ios 中自定义自动完成选项列表

    我希望能够为在 Monotouch 中创建的 ios 应用程序中的文本输入提供我自己的可用自动更正 自动完成选项列表 单词列表通过网络服务进行更新 完成搜索时 可以在 Ebay 应用程序中看到此类功能的示例 实现这一目标的最佳方法是什么 您
  • 演示与基于类的模型相关的 Javascript 继承优势

    谁能提供一个具体的示例来展示 Javascript 的原型继承 以说明何时使用传统的基于类 经典 模型是有益的 我见过的其他问题 例如经典继承与原型继承 https stackoverflow com questions 1450582 c
  • 如何使用反射来调节多个属性以检查 LINQ .Where 语句中的相等性,具体取决于传递的类?

    我试图概括一个重复检查器函数 该函数根据对象的类型 检查所述类具有的属性 在配置中提供 是否等于另一个列表中的属性 我决定创建一个字典 它将接受键的类型字符串 书籍 作者 商店等 和需要相等的属性数组 字典条目示例 Book Title C
  • 在 IE 和 JSFiddle 中使用 elem.dataset 时出现问题

    在我在 Chrome 上创建的 JSFiddle 中 我发现它无法在 IE 上工作 我使用的是 IE9 任何与此相关的原因 http jsfiddle net ZSB67 http jsfiddle net ZSB67 var backIm
  • UIView 对象的唯一标识符

    我遇到以下问题 当 UIVIew 上发生某种触摸时 我想存储这个 UIView唯一标识符 比如 objectID 这样当我再次重新打开我的应用程序时 我可以检查可见的 UIView 中是否存在具有存储中唯一 ID 的 UIView 我不想将
  • 使用 PlayFramework 多重上传文件

    我尝试使用 Play Framework 一次上传多个文件 但我总是获得每个上传的第一个图像 这是一个具体案例 HTML
  • 动态壁纸和扩展背景

    我正在尝试创建一个动态壁纸 其动画始终位于当前主屏幕页面的中心 而不会丢失扩展背景 我现在正在做的是绘制自定义背景位图 然后在其上绘制一些文本 这是我的并条方法 final SurfaceHolder holder getSurfaceHo