android学习笔记35——AnimationDrawable资源
AnimationDrawable资源
AnimationDrawable,代表一个动画。
android既支持传统的逐帧动画(类似于电影方式,一张图片一张图片的切换),也支持通过平移、变换计算出来的补间动画、属性动画。
下面以补间动画为例,介绍如何定义AnimationDrawable资源。
定义补间动画的XML资源文件以<set.../>元素作为根元素,该元素内可定义如下4个元素:
1.alpha:设置透明度的改变;
2.scale:设置图片进行缩放改变;
3.translate:设置图片进行位移变换;
4.rotate:设置图片进行旋转;
定义动画的XML资源文件存放于/res/anmi路径下,当使用ADT(Android Development Tools)创建一个android应用时,默认不会包含该路径,开发者需要自行创建该路径。
定义补间动画的思路:
设置一张图片的开始状态(包括透明度、位置、缩放比、旋转度)
设置该图片的结束状态(包括透明度、位置、缩放比、旋转度)
设置动画的持续时间,android系统会使用动画效果把这张图片从开始状态变换到结束状态。
设置补间动画的语法格式如下图:
实例:实现图片资源的缩放变换、位移变换
访问方式:java-->R.anim.filename xml-->anim.filename
java中获取Animation对象,可通过AnimationUtils的LoadAnimation(context ctx,int resId)方法获取。
动画资源文件==》myanim
需要手动创建res/anim文件夹
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/linear_interpolator" > <!-- 定义缩放变换 -->
<scale
android:duration="2000"
android:fillAfter="true"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.4"
android:toYScale="0.6" />
<!-- 定义位移变换 -->
<translate
android:duration="2000"
android:fromXDelta="10"
android:fromYDelta="30"
android:toXDelta="130"
android:toYDelta="-80" />
<!-- 设置透明度的改变 -->
<alpha />
<!-- 设置图片进行旋转 -->
<rotate /> </set> 布局文件==》
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" > <Button
android:id="@+id/btnStar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center|center"
android:gravity="center"
android:text="启动"
tools:ignore="HardcodedText" />
<!-- tools:ignore="HardcodedText" 表示忽略编码方式警告 -->
<!-- tools:ignore="ContentDescription" 表示忽略编码方式警告 --> <ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/nicenice"
tools:ignore="ContentDescription" /> </LinearLayout> 代码实现==》
package com.example.myanimationdrawable; import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView; public class MainActivity extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); final ImageView img = (ImageView) this.findViewById(R.id.image);
// 加载动画资源
final Animation anim = AnimationUtils.loadAnimation(this, R.anim.myanim);
// 设置动画结束后保留结束状态,false表示动画结束后恢复到最初状态
anim.setFillAfter(false); Button btnStart = (Button) this.findViewById(R.id.btnStar);
btnStart.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
img.startAnimation(anim);// 开始动画
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
android学习笔记35——AnimationDrawable资源的更多相关文章
- android学习笔记37——Menu资源
Menu菜单资源 android应用推荐使用XML来定义菜单,其可提供更好的解耦方式. 菜单资源通常位于res/menu文件夹下,其菜单根元素为<menu.../>,menu元素下可包含子 ...
- android学习笔记34——ClipDrawable资源
ClipDrawable ClipDrawable代表从其他位图上截取一个“图片片段” 在XML文件中定义ClipDrawable对象使用<clip.../>元素,该元素的语法为: 以上语 ...
- Android学习笔记(35):Android活动条
在Android3.0之后,Google对UI导航设计上进行了一系列的改革,当中有一个很好用的新功能就是引入的ActionBar,用于代替3.0之前的标题栏,并提供更为丰富的导航效果. ActionB ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- 【转】Pro Android学习笔记(四):了解Android资源(下)
处理任意的XML文件 自定义的xml文件放置在res/xml/下,可以通过R.xml.file_name来获取一个XMLResourceParser对象.下面是xml文件的例子: <rootna ...
- 【转】Pro Android学习笔记(三):了解Android资源(上)
在Android开发中,资源包括文件或者值,它们和执行应用捆绑,无需在源代码中写死,因此我们可以改变或替换他们,而无需对应用重新编译. 了解资源构成 参考阅读Android学习笔记(三八):资源res ...
- Android学习笔记之Activity详解
1 理解Activity Activity就是一个包含应用程序界面的窗口,是Android四大组件之一.一个应用程序可以包含零个或多个Activity.一个Activity的生命周期是指从屏幕上显示那 ...
- Pro Android学习笔记 ActionBar(1):Home图标区
Pro Android学习笔记(四八):ActionBar(1):Home图标区 2013年03月10日 ⁄ 综合 ⁄ 共 3256字 ⁄ 字号 小 中 大 ⁄ 评论关闭 ActionBar在A ...
- 【转】 Pro Android学习笔记(七十):HTTP服务(4):SOAP/JSON/XML、异常
目录(?)[-] SOAP JSON和XMLPullParser Exception处理 文章转载只能用于非商业性质,且不能带有虚拟货币.积分.注册等附加条件,转载须注明出处:http://blog. ...
随机推荐
- Mysql Too Many Connections问题解决
MySQL的max_connections参数用来设置最大连接(用户)数.每个连接MySQL的用户均算作一个连接,max_connections的默认值为100.本文将讲解此参数的详细作用与性能影响. ...
- 常用tcode
SAP常用TCODE 1 MMBE 查询库存 2 CO01 生产订单创建 3 ME2N-按采购订单编号 ME2B/ME2M/ME2C/ME2W 采购订单查询 清单范围ALV 4 MB51 物料凭证清单 ...
- ZOJ 1068 P,MTHBGWB
原题链接 题目大意:给定一个字符串,先用Morse Code编码,把编码倒序,再解码成字符串.现给定处理后的字符串,求原始信息. 解法:用C++String类的函数.每次读入一个字符,就在string ...
- linux下ftp常用命令
1. Linux 终端连接FTP $ ftp 10.85.3.12 Name : fxm5547 Password: ftp> 如果FTP 允许匿名用户,那么用户名要输入anonymous,密码 ...
- Letter Combinations of a Phone Number
Given a digit string, return all possible letter combinations that the number could represent. A map ...
- XStream解析
package com.baidu.farment; import java.io.IOException;import java.util.ArrayList;import java.util.Li ...
- psp0
周活动总结表 姓名:苗堃 ...
- Codeforces Round #118 (Div. 2)
A. Comparing Strings 判断不同的位置个数以及交换后是否相等. B. Growing Mushrooms 模拟. C. Plant 矩阵+快速幂 D. Mushroom Scient ...
- linux环境进程的停止
使用 #ps auxf|grep 你想要获取的进程,如下,我想要获得的是nginx的进程号 图中黄色的便是进程号, 在此我们想kill掉主进程就要把后面有master字样的进程号kill掉 命令如下 ...
- 黑马程序员——JAVA基础之多线程的线程间通讯等
------- android培训.java培训.期待与您交流! ---------- 线程间通讯: 其实就是多个线程在操作同一个资源,但是动作不同. wait(); 在其他线程调用此对象的notif ...