目录
一 摘要
drawable文件夹放置动画/形状/选择器等属性文件,唯一的drawable文件名,不允许写错和拼错,否则运行报错。drawable文件夹底下的xml文件可以包括的标签共18个:animation-list bitmap clip color corners gradient inset item(item) layout-list nine-patch padding rotate scale selector shape size solid stroke,18个标签中只有4个标签可以作为根标签:item(item) layout-list selector shape,比如:
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:android="http://schemas.android.com/apk/res/android" >
- <corners android:radius="5dp" />
- <stroke
- android:dashGap="3dp"
- android:dashWidth="3dp"
- android:width="1dp"
- android:color="#DC143C" />
- <size
- android:height="20dp"
- android:width="20dp" />
- </shape>
二 4个根标签说明
drawable文件夹的18个标签在同一个xml文件中多个结合使用,比如上面的例子,一个shape根标签中,可以添加corners stroke size标签,非根标签只能在4个根标签中使用。
shape标签
shape根标签绘制圆角矩形 虚线椭圆 渐变背景,具体代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 圆角矩形:rectangle绘制矩形,oval绘制椭圆,line绘制直线,ring绘制波浪线-->
- <shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle" android:tint="#DC143C">
- <!-- corners绘制圆角度数 -->
- <corners android:radius="5dp" />
- <!--solid填充颜色 -->
- <solid android:color="#DC143C"/>
- </shape>
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 绘制椭圆 -->
- <shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="oval" >
- <solid android:color="#DC143C" />
- </shape>
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 绘制渐变背景 -->
- <shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle" >
- <!-- corners绘制圆角度数 -->
- <corners android:radius="5dp" />
- <!-- gradient绘制渐变:angle逆时针开始,0从左向右渐变,90从下向上渐变,180从右向左渐变,270从上向下渐变 -->
- <gradient
- android:angle="270"
- android:endColor="#3CB371"
- android:startColor="#00FF7F" />
- </shape>
selector标签
selector标签实现文字按下效果 背景按下效果,具体代码:
- <?xml version="1.0" encoding="utf-8"?>
- <!--TextView默认android:clickable="false",true后selector属性才生效 -->
- <selector xmlns:android="http://schemas.android.com/apk/res/android" >
- <item android:state_pressed="true" android:drawable="@drawable/news_main_pressed" />
- <item android:state_pressed="false" android:drawable="@drawable/news_main"/>
- </selector>
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 设置TextView文字按下效果:创建res/color,放置当前文件 -->
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="true" android:color="#FF1493"/>
- <item android:state_pressed="false" android:color="#C71585"/>
- </selector>
layer-list标签
layer-list标签实现背景阴影效果,具体代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <!-- layer-list设置图层效果:每一个item是一张图层,从下往上叠放 -->
- <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
- <!-- 阴影部分 -->
- <!-- 个人觉得更形象的表达:top代表下边的阴影高度,left代表右边的阴影宽度。其实也就是相对应的offset,solid中的颜色是阴影的颜色,也可以设置角度等等 -->
- <item
- android:left="2dp"
- android:top="2dp">
- <shape android:shape="rectangle" >
- <gradient
- android:angle="270"
- android:endColor="#0F000000"
- android:startColor="#0F000000" />
- <corners
- android:bottomLeftRadius="6dip"
- android:bottomRightRadius="6dip"
- android:topLeftRadius="6dip"
- android:topRightRadius="6dip" />
- </shape>
- </item>
- <!-- 背景部分 -->
- <!-- 形象的表达:bottom代表背景部分在上边缘超出阴影的高度,right代表背景部分在左边超出阴影的宽度(相对应的offset) -->
- <item
- android:bottom="3dp"
- android:right="3dp">
- <shape android:shape="rectangle" >
- <gradient
- android:angle="270"
- android:endColor="#FFFFFF"
- android:startColor="#FFFFFF" />
- <corners
- android:bottomLeftRadius="6dip"
- android:bottomRightRadius="6dip"
- android:topLeftRadius="6dip"
- android:topRightRadius="6dip" />
- </shape>
- </item>
- </layer-list>
item标签
item标签结合其它标签一起使用,实现:selector标签文字按下效果 背景按下效果(参考上文) ,layer-list标签背景阴影效果(参考上文),animation-list标签多图动画效果,具体代码:
- <?xml version="1.0" encoding="utf-8"?>
- <!-- animation-list设置多张图动画效果: -->
- <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
- android:oneshot="false" >
- <item
- android:drawable="@drawable/img001"
- android:duration="60">
- </item>
- <item
- android:drawable="@drawable/img002"
- android:duration="60">
- </item>
- <item
- android:drawable="@drawable/img003"
- android:duration="60">
- </item>
- <item
- android:drawable="@drawable/img004"
- android:duration="60">
- </item>
- <item
- android:drawable="@drawable/img005"
- android:duration="60">
- </item>
- <item
- android:drawable="@drawable/img006"
- android:duration="60">
- </item>
- </animation-list>
- <TextView
- android:id="@+id/zhaolinit_anim_tv"
- android:layout_width="match_parent"
- android:layout_height="40dp"
- android:background="@drawable/item_two"/>
三 anim文件夹下的xml
anim文件夹和drawable文件夹一样,名称唯一,不允许写错或拼错,该文件夹下的xml文件实现渐变动画 缩放动画 平移动画 旋转动画 多图动画效果,对应的根标签分别:alpha scale translate rotate animation-list
alpha标签
android:interpolator=""设置平滑的动画效果;android:repeatCount="infinite"设置无限循环,默认执行一次,具体代码:
- <?xml version="1.0" encoding="utf-8"?>
- <alpha xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="2000"
- android:fromAlpha="0"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:repeatCount="infinite"
- android:toAlpha="1" >
- </alpha>
- private void startAlphaAnim() {
- Animation anim=AnimationUtils.loadAnimation(this, R.anim.alpha_anim);
- mTextView.startAnimation(anim);
- }
scale标签
android:fromXScale=""设置X缩放之前值,取值float/dimension/fraction; android:toXScale=""设置X缩放之后值,取值float/dimension/fraction;同理,android:fromYScale=""设置Y缩放之前值,取值float/dimension/fraction; android:toYScale=""设置Y缩放之后值,取值float/dimension/fraction
- <?xml version="1.0" encoding="utf-8"?>
- <scale xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="2000"
- android:fromXScale="50%"
- android:fromYScale="1"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:repeatCount="infinite"
- android:toXScale="100%"
- android:toYScale="2" >
- </scale>
- private void startScaleAnim() {
- Animation anim=AnimationUtils.loadAnimation(this, R.anim.scale_anim);
- mTextView.startAnimation(anim);
- }
translate标签
android:fromXDelta=""设置X轴平移之前值,取值float/fraction; android:toXDelta=""设置X轴平移之后值,取值float/fraction;android:repeatMode=""设置动画反转,取值reverse restart,默认restart
- <?xml version="1.0" encoding="utf-8"?>
- <translate xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="2000"
- android:fromXDelta="0"
- android:fromYDelta="0"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:repeatCount="infinite"
- android:repeatMode="reverse"
- android:toXDelta="320"
- android:toYDelta="0" >
- </translate>
- private void startTranslateAnim() {
- Animation anim=AnimationUtils.loadAnimation(this, R.anim.translate_anim);
- mTextView.startAnimation(anim);
- }
rotate标签
android:fromDegrees=""设置动画旋转之前值,取值float;android:toDegrees=""设置动画旋转之后值,取值float; android:pivotX=""设置X轴轴心,取值float/fraction;android:pivotY=""设置Y轴轴心,取值float/fraction;
- <?xml version="1.0" encoding="utf-8"?>
- <rotate xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="2000"
- android:fromDegrees="0"
- android:interpolator="@android:anim/accelerate_interpolator"
- android:pivotX="50%"
- android:pivotY="50%"
- android:repeatCount="infinite"
- android:repeatMode="reverse"
- android:toDegrees="180" >
- </rotate>
- private void startRotateAnim() {
- Animation anim=AnimationUtils.loadAnimation(this, R.anim.rotate_anim);
- mTextView.startAnimation(anim);
- }
animation-list标签
animation-list设置多张图动画效果,android:drawable=""设置图片资源;android:duration=""设置切换时间间隔
- <?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/beautiful_girl_1"
- android:duration="4000">
- </item>
- <item
- android:drawable="@drawable/beautiful_girl_2"
- android:duration="4000">
- </item>
- <item
- android:drawable="@drawable/beautiful_girl_3"
- android:duration="4000">
- </item>
- </animation-list>
- private void startAnimList() {
- AnimationDrawable anim=(AnimationDrawable) mTextView.getBackground();
- anim.start();
- }
set标签
set同时添加渐变动画/旋转动画或缩放动画/平移动画
- <?xml version="1.0" encoding="utf-8"?>
- <set>
- <alpha
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="2000"
- android:fromAlpha="0"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:repeatCount="infinite"
- android:toAlpha="1" >
- </alpha>
- <translate
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:duration="2000"
- android:fromXDelta="0"
- android:fromYDelta="0"
- android:interpolator="@android:anim/accelerate_decelerate_interpolator"
- android:repeatCount="infinite"
- android:repeatMode="reverse"
- android:toXDelta="320"
- android:toYDelta="0" >
- </translate>
- </set>
- private void startSetAnim() {
- Animation anim=AnimationUtils.loadAnimation(this, R.anim.set_anim);
- mTextView.startAnimation(anim);
- }
四 color文件夹下的xml
color/anim/drawable这三个文件夹的名称唯一,不允许写错,否则编译不通过,color文件夹下的xml实现文字颜色切换效果(包括按下/点击/经过/选中等状态),包括的根标签有:item selector
item标签和selector标签
item标签和selector标签结合使用实现点击按钮背景/文字变化效果,具体代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <!--res/color/selector_item_color.xml-->
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_pressed="false" android:color="#FF1493"/>
- <item android:state_pressed="true" android:color="#DC143C"/>
- </selector>
- <?xml version="1.0" encoding="utf-8"?>
- <!--res/drawable/selector_item_draw.xml-->
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:drawable="@drawable/green_bg" android:state_pressed="true"/>
- <item android:drawable="@drawable/blue_bg" android:state_pressed="false"/>
- </selector>
- <?xml version="1.0" encoding="utf-8"?>
- <!--res/drawable/green_bg.xml-->
- <shape xmlns:android="http://schemas.android.com/apk/res/android" >
- <corners android:radius="5dp" />
- <solid android:color="#32CD32" />
- </shape>
- <?xml version="1.0" encoding="utf-8"?>
- <!--res/drawable/blue_bg.xml-->
- <shape xmlns:android="http://schemas.android.com/apk/res/android"
- android:shape="rectangle" >
- <corners android:radius="5dp" />
- <solid android:color="#6495ED" />
- </shape>
你可能感兴趣的文章
转载请注明出处: https://www.teachcourse.cn/1635.html ,谢谢支持!