zoukankan      html  css  js  c++  java
  • Android动画一

    Android动画的两种形式

    布局文件

    <RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    
        <ImageView
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:id="@+id/imageView"
            android:onClick="click"
            android:src="@android:drawable/ic_lock_idle_alarm" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="move"
            android:onClick="move"
            android:id="@+id/button"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="102dp" />
    
    </RelativeLayout>

    代码文件:

    package com.androidbase.zjn.androidbase;
    
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    
    public class MainActivity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void click(View view){
            Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show();
        }
        public void move(View view){
            TranslateAnimation  animation = new TranslateAnimation(0,200,0,0);
            animation.setDuration(1000);//运动1秒钟
            animation.setFillAfter(true);//动画结束后果停留到原来的位置
            ImageView imageView =(ImageView) findViewById(R.id.imageView);
            imageView.startAnimation(animation);//imageView绑定动画
        }
    
    }

    使用Animator的效果:

    ImageView imageView =(ImageView) findViewById(R.id.imageView);
            ObjectAnimator.ofFloat(imageView,"translationX",0,200F).setDuration(1000).start();
            ObjectAnimator.ofFloat(imageView,"translationY",0,200F).setDuration(1000).start();
            ObjectAnimator.ofFloat(imageView,"rotation",0,360F).setDuration(1000).start();

    使用几个一起懂:

            ImageView imageView =(ImageView) findViewById(R.id.imageView);
            PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation",0,360F);
            PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX",0,200F);
            PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY",0,200F);
            ObjectAnimator.ofPropertyValuesHolder(imageView,p1,p2,p3).setDuration(1000).start();
        //几个动画一起显示
            ImageView imageView =(ImageView) findViewById(R.id.imageView);
            ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView,"translationX",0,200F);
            ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView,"translationY",0,200F);
            ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView,"rotation",0,360F);
            AnimatorSet set = new AnimatorSet();
            set.playTogether(animator1,animator2,animator3);
            set.setDuration(1000);
            set.start();

    完整的代码:

    package com.androidbase.zjn.androidbase;
    
    import android.animation.AnimatorSet;
    import android.animation.ObjectAnimator;
    import android.animation.PropertyValuesHolder;
    import android.support.v7.app.ActionBarActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.animation.TranslateAnimation;
    import android.widget.ImageView;
    import android.widget.Toast;
    
    
    public class MainActivity extends ActionBarActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        public void click(View view){
            Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show();
        }
        public void move(View view){
            //TranslateAnimation只是简单的移动
    //        TranslateAnimation  animation = new TranslateAnimation(0,200,0,0);
    //        animation.setDuration(1000);//运动1秒钟
    //        animation.setFillAfter(true);//动画结束后果停留到原来的位置
    //        ImageView imageView =(ImageView) findViewById(R.id.imageView);
    //        imageView.startAnimation(animation);//imageView绑定动画
    
    //        ImageView imageView =(ImageView) findViewById(R.id.imageView);
    //        ObjectAnimator.ofFloat(imageView,"translationX",0,200F).setDuration(1000).start();
    //        ObjectAnimator.ofFloat(imageView,"translationY",0,200F).setDuration(1000).start();
    //        ObjectAnimator.ofFloat(imageView,"rotation",0,360F).setDuration(1000).start();
    
    //        上面的优化
    //        ImageView imageView =(ImageView) findViewById(R.id.imageView);
    //        PropertyValuesHolder p1 = PropertyValuesHolder.ofFloat("rotation",0,360F);
    //        PropertyValuesHolder p2 = PropertyValuesHolder.ofFloat("translationX",0,200F);
    //        PropertyValuesHolder p3 = PropertyValuesHolder.ofFloat("translationY",0,200F);
    //        ObjectAnimator.ofPropertyValuesHolder(imageView,p1,p2,p3).setDuration(1000).start();
    
            //几个动画一起显示
            ImageView imageView =(ImageView) findViewById(R.id.imageView);
            ObjectAnimator animator1=ObjectAnimator.ofFloat(imageView,"translationX",0,200F);
            ObjectAnimator animator2=ObjectAnimator.ofFloat(imageView,"translationY",0,200F);
            ObjectAnimator animator3=ObjectAnimator.ofFloat(imageView,"rotation",0,360F);
            AnimatorSet set = new AnimatorSet();
            //set.playTogether(animator1,animator2,animator3);
            //set.playSequentially(animator1,animator2,animator3);//按照顺序动画
            set.play(animator1).with(animator2).before(animator3);//动画1和动画2一块进行,让后再进行动画3
            set.setDuration(1000);
            set.start();
    
        }
    
    }
  • 相关阅读:
    IList扩展
    WPF 路由事件
    WPF 属性值绑定、转换
    WPF 生命周期
    App.config 动态编辑
    Oracle Package的全局变量与Session
    AES对数据进行加密与解密
    OracleAES加密
    AES加解密程序的实现
    Oracle的AES加密与解密用法
  • 原文地址:https://www.cnblogs.com/zhoujn/p/4251004.html
Copyright © 2011-2022 走看看