一、anim目录
1.逐帧动画
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">//循环执行
<item android:drawable="@drawable/a_01" android:duration="50"/>
<item android:drawable="@drawable/a_02" android:duration="50"/>
<item android:drawable="@drawable/a_03" android:duration="50"/>
<item android:drawable="@drawable/a_04" android:duration="50"/>
<item android:drawable="@drawable/a_05" android:duration="50"/>
<item android:drawable="@drawable/a_06" android:duration="50"/>
</animation-list>
-
补间动画
旋转<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator"> <rotate android:fromDegrees="0" android:toDegrees="+360" android:pivotX="50%" android:pivotY="50%" android:duration="1000"/> </set>
平移
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<translate
android:fromXDelta="0%"
android:toXDelta="100%"
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration="2000"/>
</set>
缩放
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<scale
android:fromXScale="1.0"
android:toXScale="0.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="50%"
android:pivotY="50%"
android:duration="1000"/>
</set>
透明度
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:startOffset="500"
android:duration="500"/>
</set>
二、drawable目录
主要使用shape标签和selector标签和layer-list标签
1.shape标签
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle"|"oval"|"line"|"ring"] >
<!-- 圆角 -->
<corners
android:radius="integer"
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer" />
<!-- 渐变 -->
<gradient
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear"|"radial"|"sweep"]
android:useLevel=["true"|"false"] />
<padding
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer" />
<size
android:width="integer"
android:height="integer" />
<solid
android:color="color" />
<!-- 描边 -->
<stroke
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer" />
</shape>
2.selector标签
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/a_01" />
<!-- 没有焦点时的背景图片 -->
<item android:state_window_focused="false"
android:drawable="@drawable/a_01" />
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/a_02" />
<!-- 触摸模式下单击时的背景图片-->
<item android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/a_03" />
<!--选中时的图片背景-->
<item android:state_selected="true"
android:drawable="@drawable/a_04" />
<!--获得焦点时的图片背景-->
<item android:state_focused="true"
android:drawable="@drawable/a_05" />
</selector>
3.layer-list
图层列表 图层重叠
双边线
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--底层使用蓝色填充色-->
<item>
<shape>
<solid android:color="#02a0ef"/>
</shape>
</item>
<!--上面一层距离底层的顶部1dp,距离底部1dp,类似marginTop,填充色为白色,这样就形成了一个带有蓝色顶部边线和底部边线的白色背景的图-->
<item android:bottom="1dp"
android:top="1dp">
<shape>
<solid android:color="#fff"/>
</shape>
</item>
</layer-list>
阴影
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--底层的左边距离上层左边3dp, 底层的顶部,距离上层的顶部6dp,如果不做这个控制,底层和上层的左侧和上侧会重合在一 起-->
<item android:left="3dp"
android:top="6dp">
<shape>
<solid android:color="#b4b5b6"/>
</shape>
</item>
<!--上层的右边距离底层的右边3dp, 上层的底部距离底层的底部6dp-->
<item android:bottom="6dp"
android:right="3dp">
<shape>
<solid android:color="#fff"/>
</shape>
</item>
</layer-list>
图片层叠
图片层叠的时候,有两种效果,一种是缩放后层叠,一种是不缩放的层叠。默认是缩放效果。
注意: A. 不缩放的时候,必须在 item 节点中使用 bitmap 节点,并给 bitmap 设置 gravity=center ;
B. 虽然在实现缩放效果的时候,可以直接使用 item 中的 drawable属性,但实现不缩放的效果时,如果还用drawable
属性,即便给item 设置了gravity =center ,在真机上的效果依旧是缩放的。(但模拟器是不缩放的)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--默认缩放-->
<item>
<bitmap
android:src="@drawable/ic_launcher"/>
</item>
<item android:left="35dp"
android:top="35dp">
<bitmap
android:src="@drawable/ic_launcher"/>
</item>
<item android:left="70dp"
android:top="70dp">
<bitmap
android:src="@drawable/ic_launcher"/>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--不缩放-->
<item>
<bitmap
android:gravity="center"
android:src="@drawable/ic_launcher"/>
</item>
<item android:left="35dp"
android:top="35dp">
<bitmap android:gravity="center"
android:src="@drawable/ic_launcher"/>
</item>
<item android:left="70dp"
android:top="70dp">
<bitmap android:gravity="center"
android:src="@drawable/ic_launcher"/>
</item>
</layer-list>
叠加旋转
旋转的时候,只需要给出 起始的角度( fromdegress )即可
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<rotate android:fromDegrees="-10" android:pivotX="0"
android:pivotY="0">
<bitmap android:src="@drawable/decibel_blue_background"/>
</rotate>
</item>
<item>
<rotate android:fromDegrees="10" android:pivotX="0"
android:pivotY="0">
<bitmap android:src="@drawable/decibel_orange_background"/>
</rotate>
</item>
<item>
<rotate android:fromDegrees="30" android:pivotX="0"
android:pivotY="0">
<bitmap android:src="@drawable/decibel_red_background"/>
</rotate>
</item>
</layer-list>
选择器的效果
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--被选中时是4dp的底部边线-->
<item android:state_checked="true">
<layer-list>
<item>
<shape>
<solid android:color="#f00"/>
</shape>
</item>
<item android:bottom="4dp">
<shape>
<solid android:color="#fff"/>
</shape>
</item>
</layer-list>
</item>
<!--未被选中的是2dp的底部边线-->
<item>
<layer-list>
<item>
<shape>
<solid android:color="#f00"/>
</shape>
</item>
<item android:bottom="2dp">
<shape>
<solid android:color="#fff"/>
</shape>
</item>
</layer-list>
</item>
</selector>
横向进度条 ProgressBar
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
<shape>
<corners android:radius="10dp" />
<gradient
android:startColor="@color/progress_b"
android:centerColor="@color/progress_b"
android:endColor="@color/progress_b"
/>
</shape>
</item>
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<gradient
android:startColor="@android:color/transparent"
android:centerColor="@android:color/transparent"
android:endColor="@android:color/transparent"
/>
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="10dp" />
<gradient
android:startColor="@color/progress_p"
android:centerColor="@color/progress_p"
android:endColor="@color/progress_p"/>
</shape>
</clip>
</item>
</layer-list>
<ProgressBar
android:id="@+id/firstBar"
style="?android:attr/progressBarStyleHorizontal"
android:progressDrawable="@drawable/progress_bar_states3"
android:layout_width="300dip"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="190dip"
android:max="200"
android:maxHeight="8dp"
android:minHeight="8dp"
android:progress="60"
android:visibility="visible" />
圆形loading ProgressBar
方式1:(效果为补间动画一样)
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateDrawable="@anim/loading" />
<?xml version="1.0" encoding="UTF-8"?>
<animation-list android:oneshot="false"
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:duration="60" android:drawable="@drawable/load_1" />
<item android:duration="60" android:drawable="@drawable/load_3" />
<item android:duration="60" android:drawable="@drawable/load_5" />
<item android:duration="60" android:drawable="@drawable/load_7" />
<item android:duration="60" android:drawable="@drawable/load_9" />
<item android:duration="60" android:drawable="@drawable/load_11" />
<item android:duration="60" android:drawable="@drawable/load_13" />
<item android:duration="60" android:drawable="@drawable/load_15" />
</animation-list>
方式2:(效果为自定义图片让其不断的旋转)
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progressbar" />
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<rotate
android:drawable="@drawable/load"
android:fromDegrees="0.0"
android:pivotX="50.0%"
android:pivotY="50.0%"
android:toDegrees="360.0" />
<span style="white-space:pre"> </span> <!-- 其中360.0值越大,转的圈圈越快 -->
</item>
</layer-list>
方式三:(效果为自定义颜色让其不断的旋转)
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
android:indeterminateDrawable="@drawable/progressbar2" />
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" >
<shape
android:innerRadiusRatio="3"
android:shape="ring"
android:thicknessRatio="8"
android:useLevel="false" >
<gradient
android:centerColor="#FFFFFF"
android:centerY="0.50"
android:endColor="#1E90FF"
android:startColor="#000000"
android:type="sweep"
android:useLevel="false" />
</shap
三、layout目录
四、menu目录
menu目录主要用来存放菜单的样式,包括点击手机底部的菜单键和顶部actionbar中设置的菜单按钮时的弹出框的菜单项。
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/connect"
android:orderInCategory="100"
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_send"
android:title="连接" />
<item android:id="@+id/disconnect"
android:orderInCategory="100"
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_close_clear_cancel"
android:title="断开" />
<item android:id="@+id/search"
android:orderInCategory="100"
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_search"
android:title="发现" />
<item android:id="@+id/view"
android:orderInCategory="100"
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_view"
android:title="查看" />
<item android:id="@+id/help"
android:orderInCategory="100"
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_help"
android:title="帮助" />
<item android:id="@+id/exit"
android:orderInCategory="100"
android:showAsAction="never"
android:icon="@android:drawable/ic_menu_revert"
android:title="退出" />
</menu>
五、values目录
1.arrays.xml
arrays.xml文件中用于放各种数组数据,比如字符串数组、整型数组等,数组中的数据可能是具体的值,也有可能是对资源数据的引用。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="select_items">
<item>one</item>
<item>two</item>
<item>three</item>
<item>four</item>
</string-array>
</resources>
使用:
String[] items = getResources().getStringArray(R.array.select_items);
2.colors.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="red">#ff00000</color>
<color name="black">#000000</color>
<color name="white">#ffffff</color>
</resources>
3.dimens.xml
<resources>
<!-- 控件的大小 -->
<dimen name="title_width">200dp</dimen>
<dimen name="title_height">50dp</dimen>
<!-- 字体的大小 -->
<dimen name="info_size">20sp</dimen>
<dimen name="tip_size">16sp</dimen>
</resources>
4.ids.xml
ids.xml为应用的相关资源提供唯一的资源id。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="send" type="id"/>
<item name="public" type="id"/>
</resources>
使用:
<TextView
android:id="@id/send"
android:layout_width="@dimen/title_width"
android:layout_height="@dimen/title_height"
android:textSize="@dimen/info_size"/>
5.strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">TestDemo</string>
<string name="action_add">添加</string>
<string name="action_del">删除</string>
<string name="action_settings">设置</string>
<string name="action_about">关于</string>
<string name="action_suggest">建议反馈</string>
</resources>
6.styles.xml
Android的所有系统资源定义位置存放在 frameworks\base\core\res\ 路径下,编译时会形成apk文件,即
framework-res.apk,所有应用程序共享。
应用在<application />和<activity />则为theme,应用在<View />则为style
①、在AndroidManifest.xml文件中在<application/>或者<activity />节点设置android:theme属性.
②、直接在代码中调用方法setTheme()设置该Activity的主题,必须得在第一次调用setContentView()前设置,
dialog样式
<resources>
<style name="dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowFrame">@null</item> //Dialog的windowFrame框为无
<item name="android:windowIsFloating">true</item> //是否浮现在activity之上
<item name="android:windowIsTranslucent">true</item> //是否半透明
<item name="android:windowNoTitle">true</item> //是否显示title
<item name="android:background">@android:color/transparent</item> //设置dialog的背景,(#00000000)
<item name="android:windowBackground">@android:color/transparent</item> //显示区域背景是否透明,(#00000000)
<item name="android:backgroundDimAmount">0.5</item> //控制灰度的值,当为1时,dialog以外的区域是黑色,系统的默认值是0.5
<item name="android:backgroundDimEnabled">true</item> //dialog的背景是否昏暗 显示区域以外是否使用黑色半透明背景
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item> //Dialog进出的显示动画
<item name="android:windowCloseOnTouchOutside">false</item> //点击空白处不消失 dialog.setCanceledOnTouchOutside(false);
</style>
</resources>
<style name="Animation.Translucent">
<item name="windowEnterAnimation">@anim/translucent_enter</item>
<item name="windowExitAnimation">@anim/translucent_exit</item>
</style>
Activity样式
系统默认样式
android:theme=“Theme” //默认地Theme
android:theme=“Theme.Light” //背景为白色
android:theme=“Theme.Light.NoTitleBar” //白色背景并无标题栏
android:theme=“Theme.Light.NoTitleBar.Fullscreen” //白色背景,无标题栏,全屏
android:theme=“Theme.Black” //背景黑色
系统默认的Theme
<style name="Theme">
<!-- Window attributes -->
<item name="windowBackground">@android:drawable/screen_background_dark</item>
<item name="windowFrame">@null</item>
<item name="windowNoTitle">false</item>
<item name="windowFullscreen">false</item>
<item name="windowIsFloating">false</item>
<item name="windowTitleSize">25dip</item>
<item name="windowTitleBackgroundStyle">@android:style/WindowTitleBackground</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Activity</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
</style>
文件位于:frameworks\base\core\res\res\values\themes.xml
<style name="ThemeActivity" parent="@android:style/Theme">
<item name="android:windowAnimationStyle">@style/AnimationActivity</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowIsTranslucent">true</item>
</style>
<style name="AnimationActivity" parent="@android:style/Animation.Activity">
<item name="android:activityOpenEnterAnimation">@anim/slideinright</item> 第一次创建新Activity是调用的动画
<item name="android:activityCloseExitAnimation">@anim/slideoutright</item> 调用finish关闭该Activity是调用的动画
<item name="android:activityOpenExitAnimation">@anim/slideoutleft</item> activity还没有finish()下退出效果
<item name="android:activityCloseEnterAnimation">@anim/slideinleft</item> 上一个activity返回进入效果
</style>