博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android中的drawable资源
阅读量:4982 次
发布时间:2019-06-12

本文共 6604 字,大约阅读时间需要 22 分钟。

安卓中的drawable资源位我们在开发过程中提供了很大的便利之处,所以在此要做一下小小的总结。

一.StateListDrawable

1,用于组织多个Drawable对象

指定selector,每一个状态的Drawable被定义到一个item

2,主要的属性

 

android:state_activated 已激活状态

 

android:state_active 是否处于激活

 

android:state_checkable 是否处于勾选

 

android:state_checked 已勾选

 

android:state_enabled 是否可用

 

android:state_first 是否处于开始

 

android:state_focused 是否已得焦点

 

android:state_last 是否处于结束

 

android:state_middle 是否处于中间

 

android:state_pressed 是否处于已按下

 

android:state_selected 是否处于已选中状态

 

android:state_window_focused 是否窗口已获得焦点

在drawable中的xml文件

1 
2
3 4
5
6
7
8 9
View Code

  在layout的xml中引用

 android:drawableTop="@drawable/tab_address"

 

二.LayerDrawable

  使用LayoutDrawable要在drawable下的layer-list标签中使用

drawable中配置的文件,seek.xml

1 
2
3 4
5
8 9
10 11
14 15

seek_image.xml

 

1 
2
3 4
5
6
9
10 11
12
15
18 19 20
21
24
27 28 29

seek_image.xml中没有设置android:gravity="center"的效果与配置了的效果对比

 

layout中xml文件

1  
6 7
View Code

三.ShapeDrawable

  1,根标签使用sharp,并且在根标签中药定义sharp的类型,

  • rectangle---矩阵,这也是默认的sharp
  • oval--------椭圆
  • line --------一条水平的直线,这个sharp必须使用<stroke/>元素来定义这个线的宽度
  • ring--------圆环

    实例:<shape xmlns:android=""

    android:shape="rectangle" >

  2,sharp中的属性

  • corners是为Shape创建一个圆角,只有shape是rectangle时候才使用。
  • gradient是设置渐变效果的
  • padding是 内容与视图边界的距离
  • size是sharp的大小
  • solid是用来填充sharp的纯色
  • stroke是这个shape使用的笔画,当android:shape="line"的时候,必须设置改元素。

 drawabl文件中,sharp1.xml

 

1 
2
4 5
6
10 11
12
13
17 18

 

sharp2.xml

1 
2
4 5
9 10

layout中应用

1 
7

效果图:

 四,clipDrawable

  drawable中的配置文件 , clip.xml

1 
2
6 7
8

  layout文件中引用配置文件

View Code

  java代码:

1 import java.util.Timer; 2 import java.util.TimerTask; 3  4 import android.annotation.SuppressLint; 5 import android.app.Activity; 6 import android.graphics.drawable.Drawable; 7 import android.os.Bundle; 8 import android.os.Handler; 9 import android.os.Message;10 import android.view.Window;11 import android.widget.ImageView;12 13 public class MainActivity extends Activity {14     private static final int TAG=1;15     @SuppressLint("HandlerLeak")16     @Override17     protected void onCreate(Bundle savedInstanceState) {18         super.onCreate(savedInstanceState);19         requestWindowFeature(Window.FEATURE_NO_TITLE);20         setContentView(R.layout.activity_main);21         ImageView image=(ImageView) findViewById(R.id.imageView1);22         获取图片所显示的ClipDrawble对象23         final Drawable drawable = image.getDrawable();24         25         //用Handler跟新消息26         final Handler handler=new Handler(){27             @Override28             public void handleMessage(Message msg) {29                 //设置drawable的level值30                 drawable.setLevel(drawable.getLevel()+200);31                 super.handleMessage(msg);32             }33         };34         35         final Timer timer=new Timer();36         timer.scheduleAtFixedRate(new TimerTask() {37             38             @Override39             public void run() {40                 Message msg=new Message();41                 msg.what=TAG;42                 handler.sendMessage(msg);43                 //level的取值为0-10000,大于其值就取消定时器44                 if (drawable.getLevel()>10000) {45                     timer.cancel();46                 }47             }48         }, 0, 300);49         50     }51 52 }

效果图展示:

五,AnimationDrawable

  此资源是在res下的anim文件夹中配置xml文件的

  animation的动画效果有四种:

  • alpha ------>渐变透明度动画效果
  • scale------->渐变缩放动画效果
  • translate--->位置的移动效果
  • rotate------>旋转效果

  1,alpha  

  android:fromAlpha="0.1"   android:toAlpha="1.0"   android:duration="3000"   />   

  <!-- 透明度控制动画效果 alpha

        浮点型值:
            fromAlpha 属性为动画起始时透明度
            toAlpha   属性为动画结束时透明度
            说明:
                0.0表示完全透明
                1.0表示完全不透明
            以上值取0.0-1.0之间的float数据类型的数字

        长整型值:

            duration  属性为动画持续时间
            说明:
                时间以毫秒为单位
-->

  2,scale

1 
2

 

<!-- 尺寸伸缩动画效果 scale

       属性:interpolator 指定一个动画的插入器
        在我试验过程中,使用android.res.anim中的资源时候发现
        有三种动画插入器:
            accelerate_decelerate_interpolator  加速-减速 动画插入器
            accelerate_interpolator        加速-动画插入器
            decelerate_interpolator        减速- 动画插入器
        其他的属于特定的动画效果
      浮点型值:

            fromXScale 属性为动画起始时 X坐标上的伸缩尺寸

            toXScale   属性为动画结束时 X坐标上的伸缩尺寸

            fromYScale 属性为动画起始时Y坐标上的伸缩尺寸

            toYScale   属性为动画结束时Y坐标上的伸缩尺寸

            说明:以上四种属性值

                    0.0表示收缩到没有
                    1.0表示正常无伸缩
                    值小于1.0表示收缩
                    值大于1.0表示放大

            pivotX     属性为动画相对于物件的X坐标的开始位置

            pivotY     属性为动画相对于物件的Y坐标的开始位置

            说明:以上两个属性值 从0%-100%中取值

             50%为物件的X或Y方向坐标上的中点位置

        长整型值:

            duration  属性为动画持续时间
            说明:   时间以毫秒为单位

        布尔型值:

            fillAfter 属性 当设置为true ,该动画转化在动画结束后被应用
   -->

  3,translate

1 
2

  <!-- translate 位置转移动画效果

        整型值:
            fromXDelta 属性为动画起始时 X坐标上的位置
            toXDelta   属性为动画结束时 X坐标上的位置
            fromYDelta 属性为动画起始时 Y坐标上的位置
            toYDelta   属性为动画结束时 Y坐标上的位置
            注意:
                     没有指定fromXType toXType fromYType toYType 时候,
                     默认是以自己为相对参照物
        长整型值:
            duration  属性为动画持续时间
            说明:   时间以毫秒为单位
-->

  4,rotate

1 
2

 

<!-- rotate 旋转动画效果

       属性:interpolator 指定一个动画的插入器
             在我试验过程中,使用android.res.anim中的资源时候发现
             有三种动画插入器:
                accelerate_decelerate_interpolator   加速-减速 动画插入器
                accelerate_interpolator               加速-动画插入器
                decelerate_interpolator               减速- 动画插入器
             其他的属于特定的动画效果

       浮点数型值:

            fromDegrees 属性为动画起始时物件的角度
            toDegrees   属性为动画结束时物件旋转的角度 可以大于360度

            说明:

                     当角度为负数——表示逆时针旋转
                     当角度为正数——表示顺时针旋转
                     (负数from——to正数:顺时针旋转)
                     (负数from——to负数:逆时针旋转)
                     (正数from——to正数:顺时针旋转)
                     (正数from——to负数:逆时针旋转)

            pivotX     属性为动画相对于物件的X坐标的开始位置

            pivotY     属性为动画相对于物件的Y坐标的开始位置

            说明:        以上两个属性值 从0%-100%中取值

                         50%为物件的X或Y方向坐标上的中点位置

        长整型值:

            duration  属性为动画持续时间
            说明:       时间以毫秒为单位
-->

注意:

以上四种效果是单独使用的,如果想叠加效果在可以在set标签下设置多种效果

1 
2
3 4
8
14 15

最后在java代码中开启我们的动画

1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.view.Window; 4 import android.view.animation.Animation; 5 import android.view.animation.AnimationUtils; 6 import android.widget.ImageView; 7  8 public class AnimationActivity extends Activity { 9     @Override10     protected void onCreate(Bundle savedInstanceState) {11         super.onCreate(savedInstanceState);12         requestWindowFeature(Window.FEATURE_NO_TITLE);13         setContentView(R.layout.activity_animation);14         final ImageView image=(ImageView) findViewById(R.id.imageView1);15         //加载动画资源16         Animation animation = AnimationUtils.loadAnimation(this, R.anim.alpha);17         //设置动画结束后保留结束的状态18         animation.setFillAfter(true);19         //让图片开始动画20         image.startAnimation(animation);21     }22 23 }

 

动画效果截图不方便,就不留图片了。

转载于:https://www.cnblogs.com/dj168/p/animation.html

你可能感兴趣的文章
optionMenu-普通菜单使用
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
python第六篇文件处理类型
查看>>
ubuntu16系统磁盘空间/dev/vda1占用满的问题
查看>>
grid网格布局
查看>>
JSP常用标签
查看>>
九涯的第一次
查看>>
处理器管理与进程调度
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
java if 用法详解_Java编程中的条件判断之if语句的用法详解
查看>>
matlab sin函数 fft,matlab的fft函数的使用教程
查看>>
mysql sin() 函数
查看>>
单片机复位电路
查看>>
php json_decode失败,返回null
查看>>
3-day3-list-truple-map.py
查看>>
Edit控件显示多行文字
查看>>
JS第二周
查看>>
dataTable.NET的search box每輸入一個字母進行一次檢索的問題
查看>>