android remoteviews 设置背景,RemoteViews 的基本使用

public void updateFullView() {

RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.main_full_view_demo);

rv.setOnClickPendingIntent(R.id.main_full_view_demo_btn_left_top, makeButtonIntent(R.id.main_full_view_demo_btn_left_top));

rv.setOnClickPendingIntent(R.id.main_full_view_demo_btn_left_bottom, makeButtonIntent(R.id.main_full_view_demo_btn_left_bottom));

rv.setOnClickPendingIntent(R.id.main_full_view_demo_btn_right_top, makeButtonIntent(R.id.main_full_view_demo_btn_right_top));

rv.setOnClickPendingIntent(R.id.main_full_view_demo_btn_right_bottom, makeButtonIntent(R.id.main_full_view_demo_btn_right_bottom));

CanbusManager.Instance().getFullViewHelper().updateRemoteUi(rv);

}复制代码

1.首先是new RemoteViews的实例, 参数是包名和layout的id复制代码

• 特别注意: 如果RemoteViews会发生变化, 必须每次都new一个, 再去设置其状态, 不允许持有其对象后不停的更新, 这是由于RemoteViews的工作机制决定的, 有兴趣的可以去研究一下具体的原因.

• 这里要非常注意的是: 这里的layout只能使用RemoteViews支持的基本Layout和View, 完整的列表如下

• Layout: AdapterViewFlipper, FrameLayout, GridLayout, GridView, LinearLayout, ListView, RelativeLayout, StackView, ViewFlipper

• View: AnalogClock, Button, Chronometer, ImageButton, ImageView, ProgressBar, TextClock, TextView

• 可见种类是非常少的, 但其它的效果是可以实现的, 如果有一些复杂的情况, 可以使用 ImageView 来做扩展.

• 如果layout不规范, 并不会在调用端报错, 而会在倒车那个应用报异常, 所以如果发现没有显示, 需要看一下carVideo工程的log

2.第二步就是设置监听, 因为是跨进程的处理, 所以回调都是通过Intent来传递的, 在我们这里主要用的是广播复制代码

• PendingIntent的使用需要注意一些点使用setOnClickPendingIntent来设置

如果需要区分不同的Button, 有两种方式: a.使用不同的action (如果按钮过多不推荐) ,b.使用同一个action,然后使用extra设置id, 但这里需要注意生成PendingIntent的requestCode要不相同.

因为PendingIntent的生成会先找已经存在的, 已经存在则不修改, 而判断是否是相同的Intent使用的是Intent.filterEquals(), 这个函数不会检查Extra数据, 具体的判断条件可以看代码.

Intent需要设置packageName, 让广播仅发送到自己的包

注意广播接收器在onDestory时要进行反注册

3.第三步是调用FullViewHelper的updateRemoteUi()复制代码

具体使用如下代码:

复制代码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值