android wallpaper 接口,在Android上的LiveWallpaper中使用布局资源

当您在Android 2.2中创建LiveWallpaper时,您将获得一个画布(或任何3D等效物).我想使用内置的Android UI工具绘制一些元素,而不是使用canvas命令从头开始构建所有元素或加载预渲染的UI位图.

将单个视图转换为位图工作正常.即这很有用:

// For example this works:

TextView view = new TextView(ctx);

view.layout(0,200,100);

view.setText("test");

Bitmap b = Bitmap.createBitmap( 200,100,Bitmap.Config.ARGB_8888);

Canvas tempC = new Canvas(b);

view.draw(tempC);

c.drawBitmap(b,mPaint);

但是,使用子项转换LinearLayout会导致问题.你只能得到LinearLayout本身,而不是它的孩子.例如,如果我将LinearLayout设置为具有白色背景,则会获得一个很好地渲染的白色框,但是Bitmap中没有任何TextView子项.我也尝试过使用类似结果的DrawingCache.

我正在使用的代码是多维数据集示例,唯一的更改是额外的绘制命令. LinearLayout可以作为toast或常规视图(即一切都很好地显示),在LiveWallpaper上我得到的是LinearLayout的背景渲染.

inflater = (LayoutInflater)getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

layout = (LinearLayout) inflater.inflate(com.example.android.livecubes.R.layout.testLinearLayout,null);

layout.layout(0,400,200);

Bitmap b = Bitmap.createBitmap( 400,Bitmap.Config.ARGB_8888);

Canvas tempC = new Canvas(b);

layout.draw(tempC);

c.drawBitmap(b,10,mPaint);

有没有人知道你是否需要做一些特别的事情来让孩子们正确地渲染到我的位图?即,我是否需要以某种方式做一些特别的事情来使布局渲染其余的孩子?我应该写一个函数来递归地对所有孩子做些什么吗?

我可以自己合成所有东西,但是,因为显示是相当静态的(即我画了一次并保留位图的副本以在背景上绘制)这对我来说似乎更容易并且仍然非常有效.

编辑:

在挖掘布局状态的同时,看起来好像布局没有沿着视图树向下移动(即,当我调用layout()时,LinearLayout得到它的布局,但子窗口的大小为null(0x0)).根据Romain Guy在2008年android developer post的帖子.您必须等待布局传递或自己强制布局.问题是我如何等待壁纸引擎的布局传递给没有连接到根视图组的LinearLayout?如果布局要求您在我不知道这些应该是什么时设置左,上,右,下,我该如何手动布局每个子元素.

我试过在孩子身上调用forceLayout,但似乎也没有帮助.我不确定布局框架如何在幕后工作(除了它做了两遍布局).有没有办法手动让它做布局通过,即现在?由于它不是一个活动我不认为很多正常的背景材料正在发生我想要的方式.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值