问题描述
一个Activity声明如下:
<activity android:name='.MainActivity' android:theme='@android:style/Theme.Wallpaper.NoTitleBar'> <intent-filter><action android:name='android.intent.action.MAIN' /><category android:name='android.intent.category.LAUNCHER' /> </intent-filter></activity>
可以看到Activity的背景变成了桌面壁纸,其原理是将壁纸设置为了Activity中某个View的背景吗,如果是,怎么找到这个View,并获取这个壁纸实例(也就是这个壁纸)呢?
问题解答
回答1:getWindow().getDecorView();这个
回答2:每个activity都需要setContentView 这个View就是.但这跟theme无关. theme是作用于Activity的, 并不会直接影响View
回答3:原理不是把壁纸设置为某个View的背景, 弄个简单的Activity然后向上遍历就可以得到这个结论
查阅一些资料都没有具体分析这个原理, 推测是通过更底层的机制显示壁纸的...如果找到相关的分析资料, 麻烦共享下, 感谢 :D