AndroidP car VolumeBar

一、在androidP上对volumeBar的修改主要是基于UI的修改,下面列出主要修改的方法和遇到的问题。
二、原生androidP Car volumeBar 的样式如下
在这里插入图片描述
这里我们需要改的地方主要分为两个部分,
1、左侧的图标
2、整个seekBar的样式修改。

1、关于左侧的图标的修改,我们可以替换资源。
在汽车设置界面中 , frameworks/base/packages/SystemUI/res/xml/car_volume_items.xml。
文件包含与每个已定义的 AudioAttributes.USAGE 相关联的界面元素(图标资源)。此文件通过使用与每个 VolumeGroup 中包含的首个识别出的用法相关联的资源,合理呈现已定义的 VolumeGroup。
如下面的 alarm的图片资源本来是 被我换成了, 之后的显示alarm的图标就变为了music。

<carVolumeItems xmlns:car="http://schemas.android.com/apk/res-auto">
  <item car:usage="unknown"
        car:icon="@drawable/car_ic_music"/>

  <item car:usage="media"
        car:icon="@drawable/car_ic_music"/>

  <item car:usage="voice_communication"
        car:icon="@*android:drawable/ic_audio_ring_notif"/>

  <item car:usage="voice_communication_signalling"
        car:icon="@*android:drawable/ic_audio_ring_notif"/>

  <item car:usage="alarm"
        car:icon="@drawable/car_ic_music"/>
        
  <item car:usage="notification"
        car:icon="@drawable/car_ic_notification"/>

  <item car:usage="notification_ringtone"
        car:icon="@*android:drawable/ic_audio_ring_notif"/>

  <item car:usage="notification_communication_request"
        car:icon="@drawable/car_ic_notification"/>

  <item car:usage="notification_communication_instant"
        car:icon="@drawable/car_ic_notification"/>

  <item car:usage="notification_communication_delayed"
        car:icon="@drawable/car_ic_notification"/>
        
  <item car:usage="notification_event"
        car:icon="@drawable/car_ic_notification"/>

  <item car:usage="assistance_accessibility"
        car:icon="@drawable/car_ic_notification"/>

  <item car:usage="assistance_navigation_guidance"
        car:icon="@drawable/car_ic_navigation"/>

  <item car:usage="assistance_sonification"
        car:icon="@drawable/car_ic_notification"/>

  <item car:usage="game"
        car:icon="@drawable/car_ic_music"/>

  <item car:usage="assistant"
        car:icon="@drawable/car_ic_music"/>
</carVolumeItems>


2、整个seekBar的样式修改。
这个修改比较耗费时间,因为在androidP的原生代码中,CarVolumeDialogImpl.java中seekBar使用的framework/support/下面的控件SeekbarListItem, 这里的seekBar是来自 frameworks/support/car/res/layout/car_list_item_seekbar_content.xml中的Item. 这里就没有办法修改frameworks/support下面的xml文件了,然后使用了另一种方法。
2.1、在frameworks/base/packages/SystemUI/res/values/styles.xml 中新增代码

    <style name="seek_bar_style">
        <item name="android:progressDrawable">@drawable/car_seekbar_track_cc</item>
        <item name="android:thumb">@drawable/car_seekbar_thumb_cc</item>
    </style>
    <style name="CarSeekbarStyles" parent="Theme.Car.NoActionBar">
        <item name="android:seekBarStyle">@style/seek_bar_style</item>
    </style>

2.2 在frameworks/base/packages/SystemUI/res/layout/car_volume_dialog.xml 中替换代码
android:theme="@style/CarSeekbarStyles" 替换原来的 android:theme="@style/Theme.Car.NoActionBar"

3 整个seekBar的样式修改。另一种方法就是替换控件SeekbarListItem 变成自定义的控件,然后在 mPagedListAdapter = new ListItemAdapter(mContext, new ListProvider(mVolumeLineItems),
BackgroundStyle.PANEL);的地方调用
mPagedListAdapter.registerListItemViewType(LIST_ITEM_TYPE_AIWAYS_SEEKBAR, .layout.aiways_car_list_item_seekbar_content, AiwaysSeekbarListItem::createViewHolder);

ps LIST_ITEM_TYPE_AIWAYS_SEEKBAR 为 4, aiways_car_list_item_seekbar_content.xml 为自定义控件重新加载的xml。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值