背景:我有一块ARM的开发板,板上有一块LCD Panel,分辨率是800x480,还有一个HDMI Transmitter,用来输出HDMI到TV。目前状态:由于LCD的分辨率是800x480的,所以framebuffer的初始大小也是800x480,这样当Android起来以后,Window的大小也被初始化成800x480,正常显示在LCD上。问题:当我切换到HDMI输出时,设定的分辨率是1280x720,这时LCD就不显示了,然后我把framebuffer的大小也改成了1280x720,但是在TV上看到的画面是乱的,好像1个画面被分成好几个画面显示了,也没有全屏。我的分析是:framebuffer的大小虽然已经是720的了,但是Android的window还是480的。所以我需要把window重新画一下。请教各位大牛:
1。用哪个message可以通知WindowManager去重画窗口?我看了WindowManagerService.java的handleMessage,没找到类似的message。
2。WindowManagerService.java里哪个方法负责窗口的重画?这事压了很久,一直搞不定啊,先谢谢各位了。

解决方案 »

  1.   

    现在TV上是有显示的,只是桌面都花掉了(这也对,framebuffer size已经被我改成1280x720了,但是Android window的大小还是原来的800x480,这样不花才怪)所以现在的问题应该就是让WindowManager知道framebuffer size已经变了这个事实,然后把window重新画一下。但是怎么让WindowManager知道呢?哪个函数负责重画呢?
      

  2.   

    没有人知道吗?没有人在Android上做HDMI输出的吗~~~
      

  3.   

    重设fb的大小之后,我把system_server这个进程重启,WindowManager和SurfaceFlinger也会被重启,这样窗口就会重新加载。但是这样做,类似于系统重启了