修改Android7.1.1源码改变SwitchButton样式
来源:互联网 发布:阿里云短信接口demo 编辑:程序博客网 时间:2024/05/29 14:23
屏幕控制
我以前常用的屏幕控制软件是 Total Control ,但是它启动很慢,也没啥其他缺点。最近一直在用 Vysor ,这是一款谷歌浏览器插件,速度明显比total control快得多。
SwitchButton
Hierarchy View
这里的 SwitchButton 就是WiFi、蓝牙里的开/关按钮这种,整个Android源码多处用到,样式都是一样的。如图所示:
那这个组件到底在Android源码里的哪个位置呢?我们先得利用 Hierarchy View 布局分析工具,如图所示:
grep -nr 命令
从Hierarchy View得知该组件id名为switch_widget,首先用grep -nr switch_widget * 命令,得到如图所示内容
在res/layout目录下找到switch_bar.xml这个资源文件,打开可以看到没有对SwitchButton进行样式设置,而且com.android.settings.widget.ToggleSwitch 这个可以看出该组件是自定义的,找到ToggleSwitch,用grep -nr命令,即可找到在src/com/android/settings/widget路径下,打开查看里面就五六十行代码,没写什么东西,那么意思就是说很多效果都是在父类中实现的,也就是Switch.java,利用 Android Studio快捷键,ctrl+鼠标左键,直接进入Switch.java,你会发现它是在android/frameworks/base/core/java/android/widget 路径下。
这个java类文件里的代码量就非常多了,但修改UI都会有一个入口,如下图所示:
利用grep -nr switchStyle 命令,得到如下图:
可知,switchStyle这个id存在于6个xml文件中,其中我们要找的最可能的是themes.xml、themes_material.xml、themes_device_defaults.xml中,对应用grep命令查找style id:Widget.CompoundButton.Switch、Widget.Material.CompoundButton.Switch、Widget.DeviceDefault.CompoundButton.Switch,如下图:
从res/res/values目录下找到styles.xml、styles_material.xml、styles_device_defaults.xml的相应位置,最后锁定如下图所示位置styles_material.xml中:
红框里的两个drawable均在res/res/drawable目录下,将这两个文件里的所有“?attr/colorControlActivated”改成自己设置的color,直接写值或者放在values/colors_material.xml中。
效果
- 修改Android7.1.1源码改变SwitchButton样式
- SwitchButton样式更改
- SwitchButton各种样式
- imx6 android7.1.1 源码下载
- Ubuntu16.04,终端样式改变,PS1修改
- Android7种样式dialog
- 通过修改父类样式名。改变子类样式的
- switchbutton
- switchButton
- SwitchButton
- SwitchButton
- android7源码结构分析
- MacPro Android7.0源码下载
- Android7.0 ShapeDrawable背景样式圆角
- Python progressbar源码修改(支持设置进度条样式)
- Android 系统源码修改键盘的默认主题样式
- SwitchButton 开关按钮 的多种实现方式 (附源码DEMO
- JS获取样式 改变样式
- day2:Android Wear开发---HelloWear
- 二叉搜索树的后序遍历序列
- 燕麦云何洋开讲丨知道了这些,你还会用共享充电宝吗?
- 使用AndroidStudio自定义Gradle插件
- 关于Jquery中声明变量 加$和不加$区别
- 修改Android7.1.1源码改变SwitchButton样式
- centos下Muduo库的安装
- ubuntu-16.04.1-server-amd64安装时提示busybox-initramfs软件包错误
- Android中BitmapFactory.Options详解
- ssd为什么比hdd速度要快
- 4. Android工程中使用FFmpeg的so库 -- JNI头文件定义方法的实现
- Linux kernel mail list
- android 简单登陆页面
- HTML基础