surfacechanged是什么意思?遇到问题该怎么办?

吉云

今天我来跟大家伙儿聊聊我最近折腾的这个叫“surfaceChanged”的玩意儿。我就是想搞明白这玩意儿到底是个结果发现它还挺有意思的,这里面还真有点门道。现在就给大家说说我是怎么一步步把它给弄明白的。

我就是想在一个界面上显示个视频啥的,你知道的,现在这玩意儿不是挺流行的嘛我用的就是 SurfaceView 这个组件,然后就开始写代码。刚开始,我对这方面的东西也是一头雾水,但是我这个人有个特点,就是不怕折腾,遇到问题就使劲琢磨。

然后,我就发现这个叫 surfaceCreated 的方法,顾名思义,它就是在 SurfaceView 被创建的时候第一个调用的,这时候我就可以进行一些初始化操作,比如说设置一下视频播放器啥的。这可真是太方便,一切都准备就绪,就等播放。

surfacechanged是什么意思?遇到问题该怎么办?

接着往下走,我就碰到今天的主角:surfaceChanged。一开始我还真没太注意它,以为就是个摆设。结果后来发现,这玩意儿还挺关键的。你知道,有时候我们需要根据屏幕的大小来调整视频的大小,要不然看着就不舒服。而这个 surfaceChanged 就是在 SurfaceView 的大小或者格式发生变化的时候,就会被触发,这时候我就可以在这个方法里面做一些调整,比如说重新设置一下视频的大小,保证它在任何情况下都能完美显示。

光说不练假把式,我当然得试试看它到底好不好使。我写一段代码,故意把 SurfaceView 的大小给改,然后运行起来一看,surfaceChanged 这方法还真被调用!我在里面加一些调整视频大小的代码,结果视频大小就跟着变,那效果真是杠杠的!

  • 开始实现:
    • 一开始我新建一个 SurfaceView。
    • surfacechanged是什么意思?遇到问题该怎么办?

    • 然后我实现 * 这个接口。
    • 接着我就重写 surfaceCreated,surfaceChanged,surfaceDestroyed 这几个方法。
  • 进行测试:

      surfacechanged是什么意思?遇到问题该怎么办?

    • 我故意改变 SurfaceView 的大小,想看看效果怎么样。
  • 解决问题:
    • 我在 surfaceChanged 方法里面加一些代码。
    • surfacechanged是什么意思?遇到问题该怎么办?

    • 主要就是根据新的大小和格式,重新设置一下视频的尺寸。
  • 完善:
    • 我又加一些其他的处理逻辑,确保万无一失。
    • surfacechanged是什么意思?遇到问题该怎么办?

然后,我又试试改变视频的格式,surfaceChanged 也能正常工作,帮助我及时调整视频的显示,太好用!这么一来,无论 SurfaceView 怎么变,我的视频都能完美适配,再也不用担心显示问题。

除 surfaceChanged,我还发现一个叫 surfaceDestroyed 的方法。这个方法是在 SurfaceView 被销毁的时候调用的,我可以在这里做一些清理工作,比如说释放一下视频播放器啥的,省得占用内存,这样,就能让程序运行得更流畅,更稳定。这不就是我们一直追求的嘛

现在回想起来,整个过程还是挺有意思的。从一开始的一头雾水,到后来的逐渐清晰,再到的完美解决,每一步都充满挑战和乐趣。这回的经历也让我深刻体会到实践的重要性。很多东西光看文档是没用的,只有亲自动手去试一试,才能真正理解它的原理和用法。

surfacechanged是什么意思?遇到问题该怎么办?

这回折腾 surfaceChanged 的经历让我收获满满。我不但解决一个实际问题,还学到很多新的知识。更重要的是,我对这块的理解更深,以后再遇到类似的问题,我就能轻松应对。这回的分享就到这里,希望对大家有所帮助!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]