开发者社区> 问答> 正文

Android SurfaceView滚动

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

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

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

如果有人对如何进行操作有任何建议,将不胜感激。

展开
收起
Puppet 2020-01-20 09:18:36 742 0
1 条回答
写回答
取消 提交回答
  • 一旦开始使用SurfaceView,您就将自己带入一个拥有空白像素区域的世界,并且可以自己按自己的意愿绘制它们。您可以自己做所有事情-这意味着您还需要实现滚动。这样做并非易事,但也不是太困难。

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

    实现一个线程来处理图像的更新。网络上有很多这样的示例(很抱歉,暂时没有任何内容)。

    或者,使用屏幕外的位图,并用普通的ImageView绘制它(将ImageView调整为位图的大小,然后将其放在滚动视图中)。

    2020-01-20 09:18:42
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载