gpt4 book ai didi

Android SurfaceView 滚动

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:44:02 27 4
gpt4 key购买 nike

我正在编写一个 android 应用程序,它构建一个(比如说)640*480 像素的离屏位图并将其显示在 SurfaceView 中。请注意,图像的尺寸大于手机上的实际显示尺寸。

应用程序的工作方式是它最初显示图像的左上角 (0,0),然后我希望能够滚动图像。

我的 Surfaceview 类实现了 onMeasure 回调并返回 1024*768 的大小,显示与手机屏幕对应的图像区域。我想实现对滚动的支持,由于文档非常有限(只是一堆类和没有一致性的调用),我发现这几乎是不可能的。我试过只调用 scrollBy,但这不起作用。

如果有人对如何进行有任何指示,我们将不胜感激。

最佳答案

一旦开始使用 SurfaceView,您就会进入一个拥有空白像素区域的世界,您可以自行绘制所需的像素。你自己做所有事情——这意味着你也需要自己实现滚动。这不是微不足道的事,但也不是太难。

一种方法如下:- 扩展 SurfaceView 并实现 SurfaceHolder.Callback- 使用 getHolder().addCallback( this ) 获取回调- 使用 OnTouch 事件实现滚动行为(即,响应时,从 MotionEvent 获取 x、y 位置并适当设置偏移量)。

实现一个线程来处理图像的更新。网络上有这方面的示例(抱歉 - 现在手头没有)。

或者,使用离屏位图并由普通 ImageView 绘制它(将 ImageView 调整为位图的大小并将其放置在 ScrollView 中)。


编辑:

看到这仍在获得意见,可能值得指出的是,自从这次以来,我已经实现并作为开源发布了一个小型库,该库实现了上述功能的框架(灵感来自此处的许多评论SO,等等)。可以在 Github 上找到:https://github.com/micabyte/android_game

关于Android SurfaceView 滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1096618/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com