Android笔记之属性动画
前言、动画分类
例如以下图所看到的,Android的动画主要分为三种:
以下首先说说
属性动画
所谓属性动画——
就是指对象的属性值发生了变化,如控件位置和透明度等。
举例,如今要实现一个按键先下移。再右移的动画。
(1)编写动画xml
由于新建androidproject的时候,在res以下并没有专门放置动画xml的目录。因此,我们新建一个animator名称的目录。建议不要起别的名字,由于ADT对res的目录命名有检索功能,如起animator这个名字的时候。ADT就能依据名称识别出这个是动画xml目录,在你新建xml的时候。会给对应的根元素选择。
例如以下图所看到的:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZmVuZzI0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
动画XML的代码例如以下——
<?xml version="1.0" encoding="utf-8"? >
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:ordering="sequentially" >
<objectAnimator
android:duration="2000"
android:propertyName="y"
android:valueTo="500"
android:valueType="intType"></objectAnimator>
<objectAnimator
android:duration="2000"
android:propertyName="a"
android:valueTo="300"
android:valueType="intType"></objectAnimator>
</set>
对动画xml的说明例如以下:
- android:ordering说明一系列动画动作的运行顺序,有两个选择。sequentially
和together,顺序运行还是一起运行; - objectAnimator
是设定动画实施的对象,duration是该动画动作运行从開始到结束所用的时间,属性是y(后面在Activity会讲到,这是自定义的属性,用来指button的在屏幕中的y坐标值。),属性值是500,类型是整型。
(2)Activity代码
public class PropertyActivity extends Activity {
public final static String TAG = "PropertyActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_property);
final Button moveButton = (Button)findViewById(R.id.move_btn);
final Move move = new Move(moveButton);
moveButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// 装载属性动画资源
AnimatorSet set = (AnimatorSet) AnimatorInflater.loadAnimator(PropertyActivity.this,
R.animator.property_anim);
// 设置要控制的对象
set.setTarget(move);
// 開始动画
set.start();
Log.d(TAG, "getWidth:"+moveButton.getWidth());
Log.d(TAG, "Top:"+moveButton.getTop());
Log.d(TAG, "getMeasuredWidth:"+moveButton.getMeasuredWidth());
Log.d(TAG, "getBottom:"+moveButton.getBottom());
}
});
}
private class Move{
private int a;
private int y;
private View view;
public Move(View view) {
this.view = view;
}
public int getY()
{
return y;
}
public void setY(int y)
{
this.y = y;
view.layout(view.getLeft(), y, view.getRight(),
y + view.getMeasuredHeight());
}
public int getA()
{
return a;
}
public void setA(int a)
{
this.a = a;
Log.d(TAG, "End_getWidth:"+view.getWidth());
Log.d(TAG, "End_Top:"+view.getTop());
Log.d(TAG, "End_getMeasuredWidth:"+view.getMeasuredWidth());
Log.d(TAG, "End_getBottom:"+view.getBottom());
view.layout(a, view.getTop(), a + view.getMeasuredWidth(),
view.getBottom());
}
}
}
我们在程序中Logcat打印出对button位置的详细值。
Log.d(TAG,"getWidth:"+moveButton.getWidth());
Log.d(TAG,"Top:"+moveButton.getTop());
Log.d(TAG,"getMeasuredWidth:"+moveButton.getMeasuredWidth());
Log.d(TAG,"getBottom:"+moveButton.getBottom());
结果例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGluZmVuZzI0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
上下高度确实是从0变化到500,实现了移动。
上面代码中的属性x,y都是自己随意取的变量值,在set方法中设置了详细view的高度和宽度,因此,变量名称是什么不重要,仅仅要xml与这里java代码相符合即可。
get()方法没必要的,而set方法是必须的,由于
AnimatorSet动画设定类中就须要调用对象的属性设定方法。通过动画来改变对应属性。
Android笔记之属性动画的更多相关文章
- Android(java)学习笔记264:Android下的属性动画高级用法(Property Animation)
1. 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画 ...
- Android(java)学习笔记263:Android下的属性动画(Property Animation)
1. 属性动画(Property Animation)引入: 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(fra ...
- Android(java)学习笔记208:Android下的属性动画高级用法(Property Animation)
1. 大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画 ...
- Android(java)学习笔记207:Android下的属性动画(Property Animation)
1. 属性动画(Property Animation)引入: 在手机上去实现一些动画效果算是件比较炫酷的事情,因此Android系统在一开始的时候就给我们提供了两种实现动画效果的方式,逐帧动画(fra ...
- 【Android】使用属性动画碰到的困惑及讲解
属性动画的教程网上已经特别多了,本篇也不打算再去各种详解知识点,主要就是记录题主学习属性动画时的碰到的一些困惑,以及后来自己的理解.如果有人也碰到相似的问题,正好可以一起讨论下. 概要 本篇主要涉及的 ...
- Android中PropertyAnimation属性动画详解(一)
在之前的文章中已经讲了帧动画frame-by-frame animation和补间动画tweened animation,其实这两种动画原理好简单,都是按照预先固定的动画模式来播放的,帧动画将一张张单 ...
- Android属性动画之第一重修炼总结
经过这两天对ObjectAnimator属性动画的学习,基本对Android提供的属性动画有了一定的认识,现在就为大家以一个类似扇形打开的效果做总结. 效果图: 下面就让我们用刚刚学到的属性动画效果, ...
- Android属性动画之ObjectAnimator
相信对于Android初学者,对于Android中的动画效果一定很感兴趣,今天为大家总结一下刚刚学到的属性动画案例. 首先和一般的Android应用一样,我们先建一个工程,为了方便,我们的布局文件中就 ...
- Android动画主要包含补间动画(Tween)View Animation、帧动画(Frame)Drawable Animation、以及属性动画Property Animation
程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...
随机推荐
- 基于theano的多层感知机的实现
1.引言 一个多层感知机(Multi-Layer Perceptron,MLP)可以看做是,在逻辑回归分类器的中间加了非线性转换的隐层,这种转换把数据映射到一个线性可分的空间.一个单隐层的MLP就可以 ...
- springboot配置mybatis的mapper路径
1.在src/main/resources/目录下新建mybatis文件夹,将xxx.xml文件放入该文件夹内 2.在application.yml文件中配置: mybatis: configurat ...
- 关于spring中Assert的应用(方法入参检测工具类)
关于spring中Assert的应用(方法入参检测工具类) Web 应用在接受表单提交的数据后都需要对其进行合法性检查,如果表单数据不合法,请求将被驳回.类似的,当我们在编写类的方法时,也常常需要对方 ...
- vs 连接过程报错 dll 分析 ------- DLL动态链接库
1:编译成功,说明代码没有问题了2:连接报错,说明 exe 在查找dll 的入口地址过程,找不到合适的信息,这些信息保存在 dll 对应的 *.lib 文件里面 说明:exe如果生成成功了lib 这 ...
- Python发送邮件:smtplib、sendmail
本地Ubuntu 18.04,本地Python 3.6.5, 阿里云Ubuntu 16.04,阿里云Python 3.5.2, smtplib,sendmail 8.15.2, 今天,打算实现通过电子 ...
- google closure 笔记-SOY template
一 使用js模板 closure template 目前支持Java和js.但是模板语法的设计不依赖于任何现成的语言,所以理论上可以支持任何语言,只是暂时只有java编译器. 使用js模板:编写模板文 ...
- The last access date is not changed even after reading the file on Windows 7
https://superuser.com/questions/251263/the-last-access-date-is-not-changed-even-after-reading-the-fi ...
- 【PAT】1060 Are They Equal (25)(25 分)
1060 Are They Equal (25)(25 分) If a machine can save only 3 significant digits, the float numbers 12 ...
- 【LOJ】#2265. 「CTSC2017」最长上升子序列
题解 点了一个新技能叫杨表(事实上集训的时候听过,但是一直不会 这道题就是让我们找到k个不上升子序列,要求长度加和最大 我们用杨表去维护,但是由于杨表的行数可能是n的,复杂度会炸 我们只维护前\(\s ...
- 2018年东北农业大学春季校赛 C-wyh的商机
一天,你们wyh学长和你们zhl学长玩一个游戏,这个游戏规则是这样的 给你n个城市,保证这n个城市之间都只有一条道路可以到达. 有一件物品,在所有城市中都是一样的,但是由于各个城市的经济发展不同,导致 ...