您的位置:首页 > 其它

帧动画+补间动画

2018-03-30 09:58 225 查看
MainActivitypackage bw.com.bw_day02_animation;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import bw.com.bw_day02_animation.demo01.FreamAnimationActivity01;
import bw.com.bw_day02_animation.demo02.FrameAnimationActivity02;
import bw.com.bw_day02_animation.demo03.TweenActivity01;
import bw.com.bw_day02_animation.demo04.TweenActivity02;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

public void onClick(View view) {

Intent intent = new Intent();

switch (view.getId())
{
case R.id.but_01:
intent.setClass(this,FreamAnimationActivity01.class);
break;
case R.id.but_02:
intent.setClass(this, FrameAnimationActivity02.class);
break;
case R.id.but_03:
intent.setClass(this, TweenActivity01.class);
break;
case R.id.but_04:
intent.setClass(this, TweenActivity02.class);
break;
}
startActivity(intent);
}
}
 布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="bw.com.bw_day02_animation.MainActivity">

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="帧动画 属性创建方式"
android:id="@+id/but_01"
android:onClick="onClick"
/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="帧动画 代码创建方式"
android:id="@+id/but_02"
android:onClick="onClick"
/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="补间画 属性创建方式"
android:id="@+id/but_03"
android:onClick="onClick"
/>

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="补间画 代码创建方式"
android:id="@+id/but_04"
android:onClick="onClick"
/>

</LinearLayout>
 demo1
 FreamAnimationActivity01package bw.com.bw_day02_animation.demo01;

import android.graphics.drawable.AnimationDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import bw.com.bw_day02_animation.R;

/**
* 资源文件创建帧动画
* 1, 在res/drawable 文件中创建一个xml 个是的文件, 根节点为<animation-list></animation-list>
* 2, 需要在根节点中, 添加每一帧图片
* <item android:drawable="图片的id" android:duration="持续的时间 (毫秒)"/>
* 3, 在布局页面中, ImageView 控件中引入 : <ImageView android:background = "帧动画资源的id"/>
* 4, 在Activity 中, 得到动画资源管理器对象
* AnimationDrawable animationDrawable = (AnimationDrawable)mIv.getBackground();
* 5, 调用 animationDrawable.start() ; 开启动画
* 6, 调用 animationDrawable.stop(); 停止动画
*/
public class FreamAnimationActivity01 extends AppCompatActivity {

//1, 得到动画管理器对象
private AnimationDrawable animationDrawable;
private ImageView mIv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_fream_animation01);

mIv = (ImageView) findViewById(R.id.iv_id);
//动画资源是通过页面中 android:background 属性设置, 所以只能通过ImageView 来获取
animationDrawable = (AnimationDrawable) mIv.getBackground();
}

//程序一旦进入, 则开始播放动画 - --- 窗口焦点改变时调用即可 -- 扩展
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if (!animationDrawable.isRunning()) animationDrawable.start();
}

//开始播放动画
public void start(View view) {
// 判断: 如果动画没有播放, 则开始播放
if (!animationDrawable.isRunning())
{
animationDrawable.start();
}

}

//停止播放动画
public void stop(View view) {

animationDrawable.stop();
}
}
 布局
activity_fream_animation01
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="bw.com.bw_day02_animation.demo01.FreamAnimationActivity01">

<!--2, 为图片设置动画资源 给图片设置动画背景-->
<ImageView
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/iv_id"
android:background="@drawable/fream_animation"
android:layout_centerInParent="true"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始动画"
android:onClick="start"
android:id="@+id/start_button"
android:layout_below="@id/iv_id"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止动画"
android:onClick="stop"
android:id="@+id/stop_button"
android:layout_below="@id/iv_id"
android:layout_alignParentRight="true"
/>

</RelativeLayout>
 demo02
 FrameAnimationActivity02package bw.com.bw_day02_animation.demo02;

import android.graphics.drawable.AnimationDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;

import bw.com.bw_day02_animation.R;

/**
* 代码的方式创建帧动画
* 1, 初始化动画管理器对象
* AnimationDrawable drawable = new AnimationDrawable();
* 2, 向动画管理器中添加图片资源
* drawable.addFrame(Drawable类型的图片, 持续时间 毫秒);
* 3, 设置图片是否执行一次
* drawable.setOneShot(false); // true 执行一次; false 执行多次
* 4, 将动画资源, 设置到图片中
* mIv.setImageDrawable(drawable);
* 5, 调用方法 start() 开启动画 --- drawable.isRunning() 判断动画是否正在执行
* drawable.start();
* 6, 调用方法 stop() 停止动画
* drawable.stop();
*/
public class FrameAnimationActivity02 extends AppCompatActivity {

private ImageView mIv;

private AnimationDrawable animationDrawable;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_frame_animation02);

mIv = (ImageView) findViewById(R.id.iv_id);

//1, 初始化动画资源管理器对象
animationDrawable = new AnimationDrawable();

//2, 向动画资源中, 添加图片
//Drawable类型的图片 , 持续时间
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0001),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0002),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0003),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0004),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0005),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0006),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0007),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0008),100);
animation
4000
Drawable.addFrame(getResources().getDrawable(R.mipmap.loading0009),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0010),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0011),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0012),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0013),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0014),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0015),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0016),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0017),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0018),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0019),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0020),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0021),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0022),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0023),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0024),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0025),100);
animationDrawable.addFrame(getResources().getDrawable(R.mipmap.loading0026),100);

//3, 设置动画是否执行一次 -- true : 只执行一次; false 执行多次
animationDrawable.setOneShot(false);

//4, 将动画资源设置到图片控件中
mIv.setImageDrawable(animationDrawable);
}

//4, 开启动画
public void start(View view) {
if(!animationDrawable.isRunning())
{
animationDrawable.start();
}
}

//5, 结束动画
public void stop(View view) {
animationDrawable.stop();
}
}
 activity_frame_animation02<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="bw.com.bw_day02_animation.demo01.FreamAnimationActivity01">

<ImageView
android:layout_width="300dp"
android:layout_height="300dp"
android:id="@+id/iv_id"
android:layout_centerInParent="true"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="开始动画"
android:onClick="start"
android:id="@+id/start_button"
android:layout_below="@id/iv_id"
/>

<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="停止动画"
android:onClick="stop"
android:id="@+id/stop_button"
android:layout_below="@id/iv_id"
android:layout_alignParentRight="true"
/>

</RelativeLayout>
 demo03
TweenActivity01
package bw.com.bw_day02_animation.demo03;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.widget.ImageView;

import bw.com.bw_day02_animation.R;

/**
* 资源文件创建的补间动画
* 1, res 的文件夹中 , 创建 anim文件夹
* 2, 在res/anim 文件夹中, 创建一个xml 个是的动画, 根节点<alpha , scale, rotate,translate, set>
* 3, 在Activity 中, 启动动画
* mIv.startAnimation(AnimationUtils.loadAnimation(上下文对象, 动画的资源id));
*/
public class TweenActivity01 extends AppCompatActivity {

private ImageView mIv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tween01);

mIv = (ImageView) findViewById(R.id.iv_id);
}

//点击按钮, 切换动画
public void onClick(View view) {

switch (view.getId())
{
case R.id.but_01:
//渐变
mIv.startAnimation(AnimationUtils.loadAnimation(this,R.anim.alpha_anim));
break;
case R.id.but_02:
//缩放
mIv.startAnimation(AnimationUtils.loadAnimation(this,R.anim.scale_anim));
break;
case R.id.but_03:
//旋转
mIv.startAnimation(AnimationUtils.loadAnimation(this,R.anim.rotate_anim));
break;
case R.id.but_04:
//位移
mIv.startAnimation(AnimationUtils.loadAnimation(this,R.anim.translate_anim));
break;
case R.id.but_05:
//集合
mIv.startAnimation(AnimationUtils.loadAnimation(this,R.anim.set_anim));
break;

}
}
}
activity_tween01<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="bw.com.bw_day02_animation.demo03.TweenActivity01">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="渐变"
android:id="@+id/but_01"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="缩放"
android:id="@+id/but_02"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="旋转"
android:id="@+id/but_03"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="位移"
android:id="@+id/but_04"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="集合"
android:id="@+id/but_05"
android:onClick="onClick"
android:layout_height="wrap_content" />

</LinearLayout>

<ImageView
android:id="@+id/iv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/pressed"/>
</LinearLayout>
  demo04
 TweenActivity02package bw.com.bw_day02_animation.demo04;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.RotateAnimation;
import android.view.animation.ScaleAnimation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;

import bw.com.bw_day02_animation.R;

/**
* 代码创建补间动画
*
* 1, 声明每一种动画资源, 设置参数信息
* 2, 设置持续时间
* 3, 为控件启动动画
* mIv.startAnimation(animation);
*
*/
public class TweenActivity02 extends AppCompatActivity {

private ImageView mIv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tween02);

mIv = (ImageView) findViewById(R.id.iv_id);
}

public void onClick(View view) {

switch (view.getId())
{
case R.id.but_01:
//渐变
//开始的透明度 , 结束的透明度
AlphaAnimation alphaAnimation = new AlphaAnimation(1.0f,0.0f);//创建动画资源
alphaAnimation.setDuration(3000); //设置持续时间
alphaAnimation.setFillAfter(true);//保持结束时的状态
mIv.startAnimation(alphaAnimation);//为图片启动动画

break;

case R.id.but_02:
//缩放
/**
* X轴的起始比例
* X轴的结束比例
* Y轴的起始比例
* Y轴的结束比例
* X轴中心点的参考
* X轴的中心位置
* Y轴中心点的参考
* Y轴的中心位置
*/
// ScaleAnimation scaleAnimation = new ScaleAnimation(1f,3f,1f,3f);//左上角为参考点
ScaleAnimation scaleAnimation = new ScaleAnimation(1f,3f,1f,3f,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f
);//以X和Y 的中心的为参考

scaleAnimation.setDuration(3000);

mIv.startAnimation(scaleAnimation);

break;

case R.id.but_03:
//旋转
RotateAnimation rotateAnimation = new RotateAnimation(0,720,
Animation.RELATIVE_TO_SELF,0.5f,
Animation.RELATIVE_TO_SELF,0.5f
);

rotateAnimation.setDuration(3000);
mIv.startAnimation(rotateAnimation);
break;

case R.id.but_04:
//位移
TranslateAnimation translateAnimation = new TranslateAnimation(0,800,0,800);
translateAnimation.setDuration(3000);
mIv.startAnimation(translateAnimation);
break;

case R.id.but_05:
//集合
//1, 实例化动画集合的对象
//true 代表使用结合的插值器, false 代表使用动画自己的插值器
AnimationSet animationSet = new AnimationSet(false);

//2, 创建每一个动画
TranslateAnimation tAnimation = new TranslateAnimation(0,300,0,300);
AlphaAnimation aAnimation = new AlphaAnimation(1.0f,0.0f);

//3, 把每个动画, 添加到集合中
animationSet.addAnimation(tAnimation);
animationSet.addAnimation(aAnimation);

//4, 为集合动画, 设置属性
animationSet.setDuration(3000);
animationSet.setFillAfter(true);

//5, 为图片启动动画
mIv.startAnimation(animationSet);

break;
}
}
}
 布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="bw.com.bw_day02_animation.demo03.TweenActivity01">

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="渐变"
android:id="@+id/but_01"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="缩放"
android:id="@+id/but_02"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="旋转"
android:id="@+id/but_03"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="位移"
android:id="@+id/but_04"
android:onClick="onClick"
android:layout_height="wrap_content" />

<Button
android:layout_width="0dp"
android:layout_weight="1"
android:text="集合"
android:id="@+id/but_05"
android:onClick="onClick"
android:layout_height="wrap_content" />

</LinearLayout>

<ImageView
android:id="@+id/iv_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/pressed"/>
</LinearLayout>
   test
   DbActivitypackage bw.com.bw_day02_animation.test;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;

import org.xutils.DbManager;
import org.xutils.ex.DbException;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;

import java.util.List;

import bw.com.bw_day02_animation.R;

@ContentView(value = R.layout.activity_db)
public class DbActivity extends AppCompatActivity {

@ViewInject(value = R.id.lv)
private ListView lv;
private List<Person> data;
private MyAdapter adapter;

//1, 数据库的管理器对象
private DbManager dbManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//引入注解
x.view().inject(this);
//初始化数据库的配置信息
DbManager.DaoConfig daoConfig = new DbManager.DaoConfig();
daoConfig.setDbName("test.db");
daoConfig.setDbVersion(1);
daoConfig.setDbUpgradeListener(new DbManager.DbUpgradeListener() {
@Override
public void onUpgrade(DbManager dbManager, int i, int i1) {

}
});

dbManager = x.getDb(daoConfig);

//2,创建表 -- 实体类

//查询数据
findDB();

//为ListView 设置监听器
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(final AdapterView<?> parent, View view, int position, long id) {
AlertDialog.Builder builder = new AlertDialog.Builder(DbActivity.this);

final int dbId = position + 1;

builder.setItems(new String[]{"修改数据", "删除数据"}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

switch (which)
{
case 0:
//修改数据
try {

Person person = dbManager.findById(Person.class,dbId);

if(person!=null)
{

c7e1
person.setName("张三");

dbManager.update(person,"name");

findDB();//查询数据
}

} catch (DbException e) {
e.printStackTrace();
}

break;

case 1:
//删除数据
try {
Person person = dbManager.findById(Person.class,dbId);

if(person!=null)
{
dbManager.delete(person);
findDB();
}

} catch (DbException e) {
e.printStackTrace();
}

break;
}
}
});

builder.show();
}
});
}

private void findDB() {
//4, 查询数据, 将数据库中的内容 , 显示在ListView中
try {
data = dbManager.findAll(Person.class);

if(data!=null)
{
adapter = new MyAdapter();

lv.setAdapter(adapter);
}

} catch (DbException e) {
e.printStackTrace();
}
}

//3, 添加数据 -- 菜单添加 -- 系统菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main,menu);

return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId())
{
case R.id.action_add:

try {
dbManager.save(new Person("新数据","110"));

//查询数据
findDB();

} catch (DbException e) {
e.printStackTrace();
}

break;
}
return super.onOptionsItemSelected(item);
}

class MyAdapter extends BaseAdapter
{

@Override
public int getCount() {
return data.size();
}

@Override
public Object getItem(int position) {
return data.get(position);
}

@Override
public long getItemId(int position) {
return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

ViewHolder viewHolder ;
if(convertView==null)
{
convertView = getLayoutInflater().inflate(R.layout.item_lv,parent,false);

viewHolder = new ViewHolder();

viewHolder.name_tv = (TextView) convertView.findViewById(R.id.name);
viewHolder.phone_tv = (TextView) convertView.findViewById(R.id.phone);

convertView.setTag(viewHolder);
}else
{
viewHolder = (ViewHolder) convertView.getTag();
}

viewHolder.name_tv.setText(data.get(position).getName());
viewHolder.phone_tv.setText(data.get(position).getPhone());

return convertView;
}

class ViewHolder
{
TextView name_tv,phone_tv;
}
}
}
 MyApppackage bw.com.bw_day02_animation.test;

import android.app.Application;

import org.xutils.x;

/**
* Created by Administrator on 2018/1/24.
*/

public class MyApp extends Application {

@Override
public void onCreate() {
super.onCreate();
//初始化xUtils
x.Ext.init(this);
x.Ext.setDebug(true);
}
}
   Personpackage bw.com.bw_day02_animation.test;

import org.xutils.db.annotation.Column;
import org.xutils.db.annotation.Table;

/**
* Created by Administrator on 2018/1/24.
*/

@Table(name = "person")
public class Person {

@Column(name = "_id",isId = true,autoGen = true)
private int id;

@Column(name = "name")
private String name;

@Column(name = "phone")
private String phone;

public Person() {
}

public Person(String name, String phone) {
this.name = name;
this.phone = phone;
}

@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
", phone='" + phone + '\'' +
'}';
}

public int getId() {
return id;
}

public void setId(int id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}
}
 布局<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="bw.com.bw_day02_animation.test.DbActivity">

<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv"
/>
</LinearLayout>
  item_lv<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="20dp">

<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="姓名"
android:textSize="20sp"
/>

<TextView
android:id="@+id/phone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/name"
android:layout_alignParentRight="true"
android:textSize="20sp"
android:text="电话"
android:layout_marginBottom="30dp"
/>

</RelativeLayout>anim
 alpha_anim<?xml version="1.0" encoding="utf-8"?>
<!--透明度的变化 渐变

0.0 不可见, 1.0 可见

android:fromAlpha="" 开始的透明度
android:toAlpha="" 结束的透明度

通用属性:
android:duration="" 持续时间 毫秒
android:fillAfter="" 是否保存结束时的状态
android:repeatMode="reverse" 设置重复的模式
reverse 反向执行
restart 再次执行
android:repeatCount = "2" 重复的次数 最终执行的次数 = 重复次数 + 执行 1

-->
<alpha xmlns:android="http://schemas.android.com/apk/res/android"

android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="3000"
android:fillAfter="true"
android:repeatMode="reverse"
android:repeatCount = "2"
>
</alpha> rotate_anim<?xml version="1.0" encoding="utf-8"?>
<!--旋转
android:fromDegrees="" 开始角度
android:toDegrees="" 结束的角度
android:pivotX="" X轴的中心的
android:pivotY="" Y轴的中心的
-->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"

android:fromDegrees="0"
android:toDegrees="720"
android:pivotX="50%"
android:pivotY="50%"

android:duration="3000"
>

</rotate> scale_anim<?xml version="1.0" encoding="utf-8"?>

<!--缩放
android:fromXScale="" X轴起始比例
android:toXScale="" X轴的结束比例

android:fromYScale="" Y轴起始比例
android:toYScale="" Y轴的结束比例

android:pivotX="" X轴的中心的
android:pivotY="" Y轴的中心的
-->
<scale xmlns:android="http://schemas.android.com/apk/res/android"

android:fromXScale="1"
android:toXScale="3"
android:fromYScale="1"
android:toYScale="3"
android:pivotX="50%"
android:pivotY="50%"

android:duration="3000"
>

</scale>set_anim<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
>

<alpha android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration = "3000"/>

<translate
android:fromXDelta="0"
android:fromYDelta="0"
android:toXDelta="800"
android:toYDelta="800"
android:duration = "3000"
/>

</set> translate_anim<?xml version="1.0" encoding="utf-8"?>

<!--位移

android:fromXDelta="" X轴的起始位置
android:toXDelta="" X轴的结束位置

android:fromYDelta="" Y轴的起始位置
android:toYDelta="" Y轴的结束位置
android:interpolator="@android:anim/accelerate_decelerate_interpolator" 插值器
` @android:anim/bounce_interpolator 弹跳

-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"

android:fromXDelta="0"
android:toXDelta="0"

android:fromYDelta="0"
android:toYDelta="1000"

android:duration = "3000"
android:interpolator="@android:anim/bounce_interpolator"
>

</translate> menu
main<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<item
android:id="@+id/action_add"
android:title="添加数据"
/>
</menu>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  属性动画