android中菜单style、menu、drawable等文件基本功能介绍
一、style 样式,
我们写style大多是用来定义主题,以及与主题相关的一些属性,包括toolbar或actionbar的一些属性,下面以一个style文件为例来让大家明白我们可以利用style属性来做啥:
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="AppTheme.Base"></style> <style name="AppTheme.Base" parent="Theme.AppCompat"> <!--将ActionBar隐藏,这里使用ToolBar--> <item name="windowActionBar">false</item> <!-- 使用 API Level 22以上编译的话,要拿掉前綴字 --> <item name="windowNoTitle">true</item> <!--colorPrimaryDark对应状态栏的颜色--> <item name="colorPrimaryDark">@color/statusColor</item> <!--colorPrimary 对应ToolBar的颜色--> <item name="colorPrimary">@color/toolBarColor</item> <!--colorAccent 对应EditText编辑时、RadioButton选中、CheckBox等选中时的颜色。--> <item name="colorAccent">@color/editColor</item> <!--窗口的颜色--> <item name="android:windowBackground">@color/widowColor</item> <!--//全屏即无通知栏--> <item name="android:windowFullscreen">false</item> <!--//是否有遮盖--> <item name="android:windowContentOverlay">@null</item> <!--//定义菜单中三个点的样式--> <item name="android:actionOverflowButtonStyle">@style/OverflowStyle</item> </style> <style name="OverflowStyle"> <item name="android:src">@drawable/v2_overflow</item> </style> <!--Status bar color--> <color name="statusColor">#ff0000</color> <!-- toolBar color --> <color name="toolBarColor">#0000ff</color> <!--EditText,RadioButton,CheckBox color--> <color name="editColor">#ffff00</color> <!--Window color--> <color name="widowColor">#ffffff</color> </resources>
其中设计到了菜单的那个三个点,它其实是用来点击显示 隐藏的菜单项,这个后面在讲menu时候会讲到,一般系统有默认的图标,但有时候我们想定义个性的菜单的图标选项。
二、menu文件
menu文件是用来定义菜单项的,里面比较重要的属性是:icon和showAsAction ,icon是菜单显示的图标,showAsAction是该菜单项是否显示,有三个:always、ifRoom、never。always则是显示;ifroom 则是若有控件则显示,若没有就隐藏;若是never则会显示三个点的菜单项(当然也可以自定义图标),点击该项才会出来。
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_refresh" android:title="@string/opti_menu_refresh" android:icon="@drawable/v2_refresh" android:showAsAction="always" /> <item android:id="@+id/action_power" android:title="@string/opti_menu_turn_off" android:icon="@drawable/v2_power" android:showAsAction="always" /> <item android:id="@+id/action_speaker" android:title="@string/set_speaker_on" android:showAsAction="never" /> <item android:id="@+id/action_sleep" android:title="@string/sleep_timer" android:showAsAction="never" /> <item android:id="@+id/action_setting" android:title="@string/band_list" android:showAsAction="never" /> </menu>
三、drawable文件
这个文件主要是绘制一些图像作为其他的控件background或者src属性的值,当然也可以自定义一些控件的属性等。
下面可以给出两个例子:
1、将imgeview的background的背景值设定为该drawable文件,就可以实现简单的FloatingActionButton的效果:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <layer-list> <!-- Shadow --> <item android:top="1dp" android:right="1dp"> <layer-list> <item> <shape android:shape="oval"> <solid android:color="#08000000"/> <padding android:bottom="3px" android:left="3px" android:right="3px" android:top="3px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#09000000"/> <padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#10000000"/> <padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#11000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#12000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#13000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#14000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#15000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#16000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> </layer-list> </item> <!-- Blue button pressed --> <item> <shape android:shape="oval"> <solid android:color="#90CAF9"/> </shape> </item> </layer-list> </item> <item android:state_enabled="true"> <layer-list> <!-- Shadow --> <item android:top="2dp" android:right="1dp"> <layer-list> <item> <shape android:shape="oval"> <solid android:color="#08000000"/> <padding android:bottom="4px" android:left="4px" android:right="4px" android:top="4px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#09000000"/> <padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#10000000"/> <padding android:bottom="2px" android:left="2px" android:right="2px" android:top="2px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#11000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#12000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#13000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#14000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#15000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> <item> <shape android:shape="oval"> <solid android:color="#16000000"/> <padding android:bottom="1px" android:left="1px" android:right="1px" android:top="1px" /> </shape> </item> </layer-list> </item> <!-- Blue button --> <item> <shape android:shape="oval"> <solid android:color="#03A9F4"/> </shape> </item> </layer-list> </item> </selector>
2、设定imageview的背景为下面的值,当按下该view的时候就会变色(FloatingActionButton这么设置是无效的,具体看coordinatorLayout的介绍)
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="false" android:drawable="@color/floatBack1"></item> <item android:state_pressed="true" android:drawable="@color/floatBackPressed"></item> </selector>