android4.0 系统Setting中bluetoothUI定制修改

由于分辨率的原因,android4.0默认的存在的UI分辨率是不能满足我们需求的。这就会有一种需求,按照我们屏幕的分辨率修改UI的定制显示。

这里首先声明bluetoothUI使用Preference来动态加载所有的bluetooh项,如果对Preference不是很熟,可以先简单了解一下。

附上我当时学习用的而一个preference的帖子,个人认为还不错。

http://blog.csdn.net/plussoft/article/details/9993759

http://blog.csdn.net/chenzheng_java/article/details/6285966

接下来继续我们的学习:首先我们先看一下谷歌原生的bluetoothUI如下图:


这个和我们对比比较明显的就是分辨率越低的display,它显示actionbar所占的屏幕大小会越大。这回严重影响我们的操作。

所以我们要做的第一条就是要把actionbar移除掉。(actionbar的移除是在themes.xml文件中奥)

然后开始把具体的代码部分在packages/app/Settings/src/com/android/bluetooth/BluetoothSettings.java

 @Override
    void addPreferencesForActivity() {
        addPreferencesFromResource(R.xml.bluetooth_settings);
        Activity activity = getActivity();
        
        if(activity.getActionBar() != null){
       Switch actionBarSwitch = new Switch(activity);

       if (activity instanceof PreferenceActivity) {
           PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
           if (preferenceActivity.onIsHidingHeaders() || !preferenceActivity.onIsMultiPane()) {
               final int padding = activity.getResources().getDimensionPixelSize(
                       R.dimen.action_bar_switch_padding);
               actionBarSwitch.setPadding(0, 0, padding, 0);
               activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
                       ActionBar.DISPLAY_SHOW_CUSTOM);
               activity.getActionBar().setCustomView(actionBarSwitch, new ActionBar.LayoutParams(
                       ActionBar.LayoutParams.WRAP_CONTENT,
                       ActionBar.LayoutParams.WRAP_CONTENT,
                       Gravity.CENTER_VERTICAL | Gravity.RIGHT));
           }
       }

       mBluetoothEnabler = new BluetoothEnabler(activity, actionBarSwitch);

        }

        setHasOptionsMenu(true);
    }

把actionbar拿掉后,bluetoothsettings.java是编译不过的,因为蓝牙的switch开关是放在actionbar上的,所以把action拿掉后需要给上面加一个判断就可以了。

但是这样就会存在下一个问题,就是没有蓝牙的开关了,那接下来我们要做的就是重新加一个新的开关但不在actionbar上。

代码如下:

else
{
checkboxpreference = (CheckBoxPreference) findPreference("checkbox_add"); 
mBluetoothEnabler = new BluetoothEnabler(activity,checkboxpreference);
}

这个else是接在上一段代码和if是并列的奥。

这里面有三个地方需要注意。

1.我已经修改完bluetooth_settings.xml。谷歌默认的bluetooth_settings.xml实际并没有任何preference或者控件。所以我把checkboxpreference加上,代码如下:

 android:key= "checkbox_screen" >
    
    <CheckBoxPreference
android:key="checkbox_add"
android:summaryOff="Turn off Bluetooth"
android:summaryOn="Turn on Bluetooth"
android:title="bluetooth"
></CheckBoxPreference>

添加如上的xml就会在跳转大bluetooth界面时出现打开和关闭的checkboxpreference的画面。(如果你对checkboxpreference和checkbox分不清,可以百度一下奥)

2.你加上这个视窗开关了,发现你不管怎么点,bluetooth并没有进行开关的操作。对的,因为你并没有进行checkboxPreference和bluetooth enble的关联。

在BluetoothEnabler.java是需要重写方法的,这个我们放到后面在去详细讲解。

3.第三个地方就是setHasOptionsMenu(true);这一句代码。这个是使能menubutton是否有效的,我们的search for device、rename、timeout time和show reviced files这四条功能都是放到menu里去做的奥。

既然这里已经改完,接下来要改的就是可见性的UI了。

待续

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值