为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Android中自定义动画?

/ 猿问

如何在Android中自定义动画?

守着星空守着你 2019-04-04 11:07:27

如何在Android中自定义动画


查看完整描述

4 回答

?
撒科打诨

自定义 Activity 过渡效果
符合材料设计的应用中的 Activity 过渡效果,在不同状态之间,通过常用元素之间的动作和转换,提供了视觉连接。你可以为 Activity 之间出入过渡和共享元素过渡效果指定自定义动画。
进入过渡效果决定了 activity 中的视图组是如何进入屏幕的。例如,在explode 进入过渡效果中,视图从外面进入屏幕,并飞入屏幕中心。
退出过渡效果决定了 activity 中的视图组是如何退出屏幕的。例如,在explode 退出过渡效果中,视图是从中心位置退出屏幕的。
共享元素过渡效果决定了两个 activity 之间共享的视图在这些 activity 之间是如何过渡的。例如,如果两个 activity 拥有不同的位置和尺寸的相同的图片,共享元素的 changeImageTransform 过渡效果将在这些 activity 之间顺滑地平移和缩放这些图片。
Android 5.0(API 21) 支持这些出入过渡效果:
explode
—从屏幕中心位置移入移出视图;
slide
—从屏幕地边缘位置移入移出视图;
fade
—通过改变视图的透明度从屏幕中添加或删除视图;
任何继承了 Visibility 类的过渡效果都可以作为出入过渡效果。
Android 5.0(API 21) 支持这些共享元素过渡效果:
changeBounds
—使目标视图的布局边缘变化生成动画效果;
changeClipBounds
—使目标视图的剪裁边缘变化生成动画效果;
changeTransform
—使目标视图的缩放和旋转变化生成动画效果;
changeImageTransform
—使目标视图的尺寸和缩放变化生成动画效果;
当你在应用中使用 activity 过渡效果时,在 Activity 的进入和退出之间默认的交错退色效果被激活。
http://www.tuicool.com/articles/2iQvAj



查看完整回答
反对 回复 2019-04-09
?
莫回无

   在Android中自定义动画按照下面的步骤。

1、首先定义一个动画,如下图:

在上面代码中定义了一个旋转动画,包括了开始旋转角度(0°)和最后旋转结束角度(360°),和相对于自己的位置(控件的中心点)。

2、定义动画的简单属性,如下图:

上面代码定义了动画的持续时间和结束后书否保持原状。

3、选择执行的控件,如下图:



查看完整回答
反对 回复 2019-04-09
?
当年话下

Android 在XML文件中定义动画:
① 打开Eclipse,新建Android工程
② 在res目录中新建anim文件夹
③ 在anim目录中新建一个myanim.xml(注意文件名小写)
④ 加入XML的动画代码
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha/>
<scale/>
<translate/>
<rotate/>
</set>
Android动画解析--XML
<alpha>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<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 属性为动画持续时间
说明:
时间以毫秒为单位
</set>
<scale>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:interpolator= "@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:fillAfter="false"
android:duration="700" />
</set>
<!-- 尺寸伸缩动画效果 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 ,该动画转化在动画结束后被应用
<translate>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="30"
android:toXDelta="-80"
android:fromYDelta="30"
android:toYDelta="300"
android:duration="2000"
/>
<!-- translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定fromXType toXType fromYType toYType 时候,
默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
</set>
<rotate>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<rotate android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="+350"
android:pivotX="50%"
android:pivotY="50%"
android:duration="3000" />
<!-- 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>
Java 文件调用
Button button=(Button)findViewById(R.id.ok)
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Animation animation=AnimationUtils.loadAnimation(HelloActivity.this,R.anim.buttonain);
findViewById(R.id.listView).startAnimation(animation);
}
});



查看完整回答
反对 回复 2019-04-09
?
繁星coding

Android自定义动画有很多种形式,最快的可以使用第三方框架,但是每个项目实际需要的动画效果都不一样,所以关键还是要把基础学扎实。

查看完整回答
反对 回复 2019-04-09

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信